mysql主主配置


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;   #查找配置信息是否成功






你可能感兴趣的:(mysql,主主配置)