背景:
nginx负载均衡和双击热备下,要求支持mysql的test库的主主同步,同时需要豁免特定的三张配置表。
实现步骤:
1. 查看防火墙是否是关闭状态。systemctl status firewalld
2. 修改配置,增加以下内容。vi /etc/my.cnf
server-id=1 #将两台服务器配置不一样的id
log_bin=mysql-bin1
sync-binlog=1
#binlog-ignore-db=information_schema #ignore-db是不同步某一个库
#binlog-ignore-db=performation_schema
#binlog-ignore-db=sys
binlog-do-db=zkxagsi #db-db是同步弄一个库
replicate-wild-ignore-table=zkxagsi.t_network_config #ignore-table是忽略摸一个表
replicate-wild-ignore-table=zkxagsi.t_hot_standby_config
replicate-wild-ignore-table=zkxagsi.t_balance_config
#relay_log=mysql-relay-bin
log_slave_updates
default_authentication_plugin = mysql_native_password
auto_increment_increment=2 #需要将两台服务器的auto_increment_increment增长量都配置为2
auto_increment_offset=1
slave-skip-errors=all
重启MySQL。systemctl restart mysqld
3. 两台服务器分别进入到mysql中,并执行以下操作。mysql -uroot -p
create user 'repl'@'%' identified by 'Password'; #创建用户
grant replication slave on *.* to 'repl'@'%'; #授权用户
flush privileges;
flush tables with read lock; #锁定数据库表暂时无法写服务,若不锁表,pos值会修改
show master status; #查看binlog文件值与pos值,记住文件名和pos值
两台服务网上的binlog文件和pos值很有可能是不一样。所以执行change master的时候,要注意配置的是对端的信息。若本机是172.168.10.222,对端机是172.168.10.221,则在222的机器中配置221的信息。
在172.168.10.221的机器配置172.168.10.222的信息。
change master to master_host='172.168.10.222', master_user='repl', master_password='Password',master_port=3306, master_log_file='mysql-bin2.000003', master_log_pos=328;
4. 分别开启同步。显示两个yes,则表示成功。
unlock tables; #解锁写
start slave; #开启同步
show slave status\G #查看数据库是否正常同步
5. 注意:
若查询同步状态,show slave status\G ,发现是connecting的时候,可以执行一下操作判断是否联通。
mysql -urepl -pPassword -h172.168.10.221
若连接不上,要判断
1) 防火墙
2)用户名密码
结束!