主主复制:就是双向的主从复制,也就是互为对方的从服务器,每台服务器即是对方的主服务器,又是对方的从服务器
MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。
配置步骤:
1) 环境准备:
服务器:192.168.12.129和192.168.12.131
数据库:my_db,数据的名字可相同,也可以不同。
数据库用户信息: repl_user/123456(为了方便记忆,2个数据库用户名和密码都相同)
2) 用户赋权:
分别在2台数据库授权:
(A)在129数据库上执行以下命令:
grant replication slave on *.* to ' repl_user '@'192.168.12.131'identified by '123456';
(B)在131数据库上执行以下命令:
grant replication slave on *.* to ' repl_user'@'192.168.12.129' identified by '123456';
3) 数据库配置文件/etc/my.cnf(下面只截取主主复制部分的参数配置)
192.168.12.129服务器上的配置:
192.168.12.131服务器上的配置:
以上注意的地方是:
server-id:这个每台数据库不能相同
1) 登录主服务器的mysql,查询master的状态
注:执行这步后,不要再操作主mysql数据库,防止主服务器状态值变化。
5) 配置从服务器Slave:
(这里先以192.168.12.129为master,以192.168.12.131为slave先做,因为主主复制就是双向的主从复制,所以这个操作完后,要反向再操作一次)
在从mysql数据库里执行如下命令:
mysql> slave stop;
Query OK, 0 rowsaffected (0.01 sec)
mysql>change master to master_host='192.168.12.129', master_user='repl_user', master_password='123456', master_log_file='mysql-bin.000009',master_log_pos=1663;
Query OK, 0 rowsaffected (0.01 sec)
mysql> slave start;
Query OK, 0 rowsaffected (0.00 sec)
mysql> show slave status\G;
执行上面最后一条命令后,会显示slave status信息,其中Slave_IO_Running和Slave_SQL_Running这2个的值都为yes的时候,配置就成功了。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
6) 测试:
这里省略,已经测过建表,删除表,数据的增,删,改的复制。