A-A+

Mysql主主(双向)同步配置方案

2012年04月28日 MYSQL, 数据库 评论 4 条 阅读 3,653 次
如果您有代购或者代维服务器、PHP网站建设、程序代码修改、系统开发等需求,可以联系我购买付费服务。QQ 379880222

A服务器:192.168.1.1
B服务器:192.168.1.2

A服务器上的设置:
编辑my.cnf,添加或修改如下内容
#双向同步
server-id=1
log-bin=mysql-bin
relay-log = relay-bin
replicate_do_db=testtongbu
auto-increment-increment=2 #每次增长2
auto-increment-offset=1 #设置自动增长的字段的偏移量,即初始值为2

重启mysql
service mysqld restart
进入Mysql命令行模式,执行下面的命令
GRANT RELOAD,SUPER,REPLICATION SLAVE,REPLICATION CLIENT on *.* to backup@'192.168.1.2' identified by '123456';
flush privileges;
show master status;

#记下File和Position的值 log1

B服务器上的设置:
编辑my.cnf,添加或修改如下内容
#双向同步
server-id=2
log-bin=mysql-bin
relay-log = relay-bin
replicate_do_db=testtongbu
auto-increment-increment=2 #每次增长2
auto-increment-offset=2 #设置自动增长的字段的偏移量,即初始值为2

重启mysql
service mysqld restart
进入Mysql命令行模式,执行下面的命令
GRANT RELOAD,SUPER,REPLICATION SLAVE,REPLICATION CLIENT on *.* to backup@'192.168.1.1' identified by '123456';
flush privileges;
show master status;

#记下File和Position的值 log2

#执行(问号分别替换为刚才log1里面记下的两个值)
CHANGE MASTER TO MASTER_HOST='192.168.1.1', MASTER_USER='backup', master_password='123456', MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=106;
start slave;

#回到A服务器,执行(问号分别替换为刚才log2里面记下的两个值)
CHANGE MASTER TO MASTER_HOST='192.168.1.2', MASTER_USER='backup', master_password='123456', MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=106;
start slave;

正在运行的数据库导出数据时,先锁定库
flush tables with read lock;
导出后解锁
unlock tables;

遇到的错误:
ERROR 1219 (HY000): Error running query on master: Access denied; you need the RELOAD privilege for this operation
在另外一台服务器上执行
mysql> grant RELOAD on *.* to repl@’%’ identified by ‘your_password’;

Error reading packet from server: Access denied; you need the REPLICATION SLAVE privilege for this operation (server_errno=1227)
在另外一台服务器上执行
mysql> grant REPLICATION SLAVE on *.* to repl@’%’ identified by ‘your_password’;

标签:

4 条留言  访客:2 条  博主:2 条

  1. avatar 你好ZZB

    如果只是同步数据库结构,不同步数据,不知道博主有没有什么方案?

    • avatar 恋香缘

      我也不知道怎么弄,没遇到过这种需求。

      • avatar 你好ZZB

        处理成把升级语句放线上主机并定义版本号,每台客机通过版本号判断是否将线上的升级语句download来执行。

        缺点是无法照顾到中间过程各种人为不规范的操作

        也有了解到其他人的一种做法是将主机和客机的数据结构导出成语句,然后进行分析比对,找出差异,然后升级

        • avatar 恋香缘

          我还是不懂 你为啥要这么做? 难道你们是在线上调试修改的?

给我留言