mysql主主配置
原理:mysql既是master又是slave,所以就必要要求两台mysql都启动log-bin。
server1 server2
172.16.1.1 172.16.1.2
第一步:安装mysql
略
第二步:分别在server1和server2上给对端授权,建立用户
server1:
mysql>grant replication slave on *.* 'server2'@'172.16.1.2' identified by '123456';
mysql>flush tables with read lock;
server2:
mysql>grant replication slave on *.* 'server1'@'172.16.1.1' identified by '123456';
mysql>flush tables with read lock;
第三步:保障两台“数据库”,需要同步的数据库内容一致
略……
第四步:配置my.cnf
server1:
[mysqld]
server-id = 1
log-bin = mysql-bin
auto-increment-increment = 2 //每次增长2
auto-increment-offset = 1 //设置自动增长的字段的偏移量,即初始值为1
启动Mysql服务:
# service mysqld restart
server2:
[mysqld]
server-id = 2
log-bin = mysql-bin
auto-increment-increment = 2 //每次增长2
auto-increment-offset = 2 //设置自动增长的字段的偏移量,即初始值为2
启动Mysql服务:
# service mysqld restart
注意:两台服务器上,都必须启动log-bin。那么本案例中设置参数,
A:my.cnf上加入参数
auto_increment_offset = 1
auto_increment_increment = 2
这样A的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID了
B:my.cnf上加入参数
auto_increment_offset = 2
auto_increment_increment = 2
这样B的auto_increment字段产生的数值是:2, 4, 6, 8, …等偶数ID了
可以看出,你的auto_increment字段在不同的服务器之间绝对不会重复,所以Master-Master结构就没有任何问题了。当然,你还可以使用3台,4台,或者N台服务器,只要保证auto_increment_increment = N 再设置一下auto_increment_offset为适当的初始值就可以了,那样,我们的MySQL可以同时有几十台主服务器,而不会出现自增长ID 重复。然而auto-increment-offset不能大于auto-increment-increment的值,否则不生效。
那么,在实际应用中,在对表的操作如下所示。
比如,有个表testtable,字段id为主键;
如果auto_increment_offset=1 , 并且auto_increment_increment=1,那么向表中插入第一条数据时,则该条数据的id=1,第二条id=2,第三条id=3以此类推……
如果auto_increment_offset=2 , 并且auto_increment_increment=2,那么向表中插入第一条数据时,则该条数据的id=2,第二条id=4,第三条id=6以此类推……
第五步:配置slave,指定master
server1:进入mysql数据库
mysql>slave stop
mysql>change master to master_host='172.16.1.2', master_port=3306, master_user='server1', master_password='123456';
mysql>slave start;
mysql>unlock tables;
server2:进入mysql数据库
mysql>slave stop
mysql>change master to master_host='172.16.1.1', master_port=3306, master_user='server2', master_password='123456';
mysql>slave start;
mysql>unlock tables;
注意:master_user注意设置
第六步:验证配置和数据同步
mysql>show salve status \G; #查找配置信息是否成功