Home >Database >Mysql Tutorial >mysql主主同步_MySQL

mysql主主同步_MySQL

WBOY
WBOYOriginal
2016-06-01 13:45:111135browse

bitsCN.com

A服务器:
host 192.168.1.101
port 3306
B服务器:
host 192.168.1.102
port 3306
 
1,授权用户:
A服务器
mysql>grant replication slave,file on *.* to 'repl9'@'192.168.1.102' identified by '1234569';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
B服务器
mysql>grant replication slave,file on *.* to 'repl8'@'192.168.1.101' identified by '1234568';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
 
2,配置文件
A服务器
log-bin=mysql-bin
server-id   = 1
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
master-host     =   192.168.1.102
master-user     =   repl8
master-password =   1234568
master-port     = 3306
 
B服务器
 
log-bin=mysql-bin
server-id   = 2
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset = 2
master-host     =   192.168.1.101
master-user     =   repl9
master-password =   1234569
master-port     = 3306                                                                    
 
 
启动服务器就ok了
 
 
--------------------------------------------------
Q: 当在另一台机器上登录MySQL时出现如下错误:
 
ERROR 2003 (HY000): Can't connect to MySQL server on 'x.x.x.x' (111)
 
A: 原因是MySQL考虑到安全因素,默认配置只让从本地登录
 
打开 /etc/mysql/my.cnf 文件,找到 bind-address = 127.0.0.1 修改为 bind-address = 0.0.0.0
 
重启mysql : sudo /etc/init.d/mysql restart
 
 
========================================
101 增加,102不同步   ?????????
mysql -h192.168.1.102 -urepl8 -p1234568        ok
 
102 增加,101 同步
mysql -h192.168.1.101 -urepl9 -p1234569       ok
 
比较两组的show slave status/G;
102
 
           Slave_IO_Running: No
          Slave_SQL_Running: Yes
            Replicate_Do_DB: test
        Replicate_Ignore_DB: mysql
 
 
sudo /etc/init.d/mysql restart
sudo service mysql restart   以后就变成:lave_IO_Running: YES
 
 
 
出现的问题(多主自增长ID重复)
 
解决方法:
我们只要保证两台服务器上插入的自增长数据不同就可以了
如:A查奇数ID,B插偶数ID,当然如果服务器多的话,你可以定义算法,只要不同就可以了
 
在这里我们在A,B上加入参数,以实现奇偶插入
 
A:my.ini上加入参数
 
auto_increment_offset = 1
auto_increment_increment = 2
这样A的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID了
 
B:my.ini上加入参数
 
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重复。
 
在这里我们说的是2台MYSQL服务器,你也可以扩展到多台,实现方法类似
A -> B -> C-> D ->A
这样一个环形的备份结构就形成了,最后可要记住 自增长ID(主键)要设计好哦,否则会出错的。

作者“whxhz”
 

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn