假设三台服务器做主主复制:
ip分别为: 172.20.10.13 172.20.10.14 172.20.10.15
13为15的主,14为13的主,15为14的主(这样就可以主主复制了)
每个服务器上创建一个用户,给上可访问权限如:
创建用户:CREATE USER 'test1'@'172.20.10.%' IDENTIFIED WITH mysql_native_password by '123456';
赋权:GRANT REPLICATION SLAVE ON *.* TO 'test1'@'172.20.10.%';
刷新权限:flush privileges;
在从服务器上测试使用主服务器刚刚创建的账号是否能够正常连接 例如
/usr/local/mysql/bin/mysql -utest1 -p123456 -h172.20.10.13
停止主、从服务器的mysql服务
例如 /etc/init.d/mysql stop
修改/etc/my.cnf文件
server-id = 1 // 此值保证每台机子不一样
auto_increment_increment=3 // 步进值auto_imcrement,一般有n台主MySQL就填n
auto_increment_offset=1 //起始值。一般填第n台主MySQL。此时为第一台主MySQL
log-slave-updates=on // 从服务器同步数据时如果也需要记录到二进制日志中
gtid-mode=on //mysql5.7以上版本可以配置,配置此项后不用指定二进制文件了
enforce-gtid-consistency
启动mysql服务 /etc/init.d/mysql start
进入mysql命令 行执行命令
change master to master_host=' 主 服务 器 地 址 ', master_user=' 用 户名 ',
master_password=' 密码 ',
master_port= 端口号 ,MASTER_CONNECT_RETRY=10;
例如 :
change master to master_host='172.20.10.13',master_user='test1',master_password='123456',master_port=3306,master_connect_retry=10;
再执行 start slave;
在从服务器输入命令
show slave status\G;
查看状态 :
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.16.6
Master_User: slave
Master_Port: 3306
Connect_Retry: 10
Master_Log_File: binlog.000002
Read_Master_Log_Pos: 903
Relay_Log_File: relaylog.000004
.........
在主服务器上建立数据库数据表后查看从服务器 , 看是否配置成功
如果不成功建议,先清理下mysql日志,默认路径是/usr/local/mysql/var/,可以rm -rf mysql-bin.*,然后重新启动mysql看是否生成日志,如果生成新文件说明配置是正确的(当然具体问题具体分析)
撤销配置 :
进入命令行执行 stop slave; 再执行 reset slave; 即可 .
如果报uuid错误可以在/usr/local/mysql/var/auto.cnf把uuid随便改一下(重启即可)