您的位置:首页 > 数据库 > MySQL

MySQL 数据库主主复制的配置

2018-03-14 09:58 465 查看

MySQL数据库主主复制的配置

Master-Master复制的两台服务器,既是master,又是另一台服务器的slave。这样,任何一方所做的变更,都会通过复制应用到另外一方的数据库中。

配置

主主环境

Redhat6.5_x64_MySQL5.7.19 两台(已事先准备好)

server1 (假设IP:192.168.17.1)

server2(假设IP:192.168.17.2)

更改两主机MySQL配置文件

server1 中添加配置信息

[mysqld]
server-id=1
log-bin=mysqlmaster-bin.log
auto-increment-increment=2
auto-increment-offset=1


server2 中添加配置信息

[mysqld]
server-id=1
log-bin=mysqlmaster-bin.log
auto-increment-increment=2
auto-increment-offset=1


参数说明:

auto-increment-increment 控制自增列中的值的增量值,也就是步长。

auto-increment-offset 确定auto_increment列值的起点,也就是初始值

其他参数可根据需求添加

启动MySQL服务使其生效

登录MySQL,添加同步数据所需用户

server1 上添加用户

mysql> grant replication slave on *.* to 'user1'@'ip' identified by "password1";


把ip地址换成server2机器的ip地址,只允许server2登录,安全

server2 上添加用户

mysql> grant replication slave on *.* to 'user2'@'ip' identified by "password2";


把ip地址换成server1机器的ip地址,只允许server1登录,安全

查看两台服务器上master状态

server1

mysql> show master status;
+------------------------+----------+--------------+------------------+-------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------------+----------+--------------+------------------+-------------------+
| mysqlmaster-bin.000002 |      154 |              |                  |                   |
+------------------------+----------+--------------+------------------+-------------------+


server2

mysql> show master status;
+------------------------+----------+--------------+------------------+-------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------------+----------+--------------+------------------+-------------------+
| mysqlmaster-bin.000002 |      168 |              |                  |                   |
+------------------------+----------+--------------+------------------+-------------------+


配置同步信息

server1

change master to master_host='ip2',master_port=3306,master_user='user2',master_password='password2',master_log_file='mysqlmaster-bin.000002',master_log_pos=168;


server2

change master to master_host='ip1',master_port=3306,master_user='user1',master_password='password1',master_log_file='mysqlmaster-bin.000002',master_log_pos=152;


开启复制功能

server1 和server2 上都执行

mysql> start slave;


查看复制连接状态

mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.17.78
Master_User: scutech1
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysqlmaster-bin.000002
Read_Master_Log_Pos: 154
Relay_Log_File: redhat6-relay-bin.000005
Relay_Log_Pos: 379
Relay_Master_Log_File: mysqlmaster-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:


查看

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

两个参数的值都显示为“yes”才表示启动正常

Slave_IO_Running: 指的就是从服务器上负责读取主服务器的线程工作状态。 从服务器用这个专门的线程链接到主服务器上,并把日志拷贝回来。

错误分析

Last_IO_Error: error connecting to master ‘scutech1@192.168.17.78:3306’ - retry-time: 60 retries: 10

可能是配置同步信息时,用户名、密码、IP 等信息输入有误,检查确保这些信输入正确。

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

server1 和 server2的 MySQL server UUIDs相同导致的同步状态异常

解决方法:

1、 查看两台机器的MySQL 的server_id,看server_id的值是否一样。

mysql> show variables like '%server_uuid%';
+---------------+--------------------------------------+
| Variable_name | Value                                |
+---------------+--------------------------------------+
| server_uuid   | 11596429-710b-11e7-8b02-fa163e2b2e87 |
+---------------+--------------------------------------+


2、 查看server1 机器上MySQL 的auto.cnf文件

mv auto.cnf auto.cnf.bak

由于是测试环境,没有初始数据,因此没有考虑数据库初态问题。否则需要进行的步骤是:server1 锁表—>server1备份数据—>server1解锁表—>server2导入数据—>server2设置同步—>查看状态
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: