最新消息: 新版网站上线了!!!

mysql两台服务器主从同步

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  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  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查奇数 IDB 插偶数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 重复。
 
在这里我们说的是 2MYSQL 服务器,你也可以扩展到多台,实现方法类似 
A -> B -> C-> D ->A
这样一个环形的备份结构就形成了,最后可要记住 自增长ID (主键)要设计好哦,否则会出错的。
 
.....

转载请注明:谷谷点程序 » mysql两台服务器主从同步