免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1376 | 回复: 0
打印 上一主题 下一主题

设置MySQL数据同步(单向&双向) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-22 16:18 |只看该作者 |倒序浏览
设置MySQL数据同步(单向&双向)
  由于公司的业务需求,需要网通和电信的数据同步,就做了个MySQL的双向同步,记下过程,以后用得到再翻出来,也贴出来供大家参考。
  一、准备服务器
  由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave版本。
  more.. | less.. | 本文中,我们假设主服务器(以下简称Master)和从服务器(以下简称Slave)的版本都是5.0.27,操作系统是RedHat Linux 9。
  假设同步Master的主机名为:A(IP:192.168.0.1),Slave主机名为:B(IP:192.168.0.2),2个MySQL的basedir目录都是/usr/local/mysql,datadir都是:/var/lib/mysql。
  二、设置同步服务器
  1、设置同步Master
  修改 my.cnf 文件,在
  # Replication Master Server (default)
  # binary logging is required for replication
  添加如下内容:
  log-bin=/var/log/mysql/updatelog
  server-id = 1
  binlog-do-db=test
  binlog-ignore-db=mysql
  重启MySQL,创建一个MySQL帐号为同步专用
  GRANT REPLICATION SLAVE,RELOAD,SUPER, ON *.* TO back@192.168.0.2 IDENTIFIED BY 'back' ;
  FLUSH PRIVILEGES ;
  2、设置同步Slave
  修改my.cnf文件,添加
  server-id = 2
  master-host = 192.168.0.1
  master-user = back
  master-password = back
  master-port = 3306
  replicate-ignore-db=mysql
  replicate-do-db=test
  重启MySQL
  3、启动同步
  在主服务器A MySQL命令符下:
  show master status;
  显示(当然这个是我机器的情况,你的不可能跟我一样哈,只是个例子):
  +------------------+----------+-------------------+------------------+
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+-------------------+------------------+
  | updatelog.000028 | 313361 | test | mysql |
  +------------------+----------+-------------------+------------------+
  在从服务器A MySQL命令符下:
  slave stop;
  CHANGE MASTER TO MASTER_LOG_FILE='updatelog.000028',MASTER_LOG_POS=313361;
  slave start;
  用show slave status\G;看一下从服务器的同步情况
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
  如果都是yes,那代表已经在同步
  往表里面写点数据测试一下看是否同步成功,如果不成功,绝对不是你的RP问题,再检查一下操作步骤!
  4、设置双向同步
  修改B服务器的my.cnf,添加
  log-bin=/var/log/mysql/updatelog
  binlog-do-db=test
  binlog-ignore-db=mysql
  重启MySQL,创建一个MySQL帐号为同步专用
  GRANT REPLICATION SLAVE,RELOAD,SUPER, ON *.* TO back@192.168.0.1 IDENTIFIED BY 'back' ;
  FLUSH PRIVILEGES ;
  修改A服务器的my.cnf,添加
  master-host = 192.168.0.2
  master-user = back
  master-password = back
  master-port = 3306
  replicate-ignore-db=mysql
  replicate-do-db=test
  重启MySQL
  在主服务器B MySQL命令符下:
  show master status;
  +------------------+----------+-------------------+------------------+
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+-------------------+------------------+
  | updatelog.000028 | 13753 | test | mysql |
  +------------------+----------+-------------------+------------------+
  在服务器A MySQL命令符下:
  slave stop;
  CHANGE MASTER TO MASTER_LOG_FILE='updatelog.000028',MASTER_LOG_POS=13753;
  slave start;
  其实也就是A->B单向同步的反向操作!双向同步,就这么简单啦!


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/17657/showart_1935602.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP