设为首页 收藏本站
查看: 1144|回复: 0

[经验分享] mysql数据库双向同步

[复制链接]

尚未签到

发表于 2016-9-13 06:00:23 | 显示全部楼层 |阅读模式
  项目申请了两台数据库服务器,为了保持数据同步,就搞了个数据同步,以此文记录以备后续使用:
  
  首先声明:
  服务器操作系统都是CentOS6.1、mysql版本号一致,为了减少出现其他问题的可能性,故做此环境搭配。
  数据库服务器A,ip地址:192.168.6.108
  数据库服务器B,ip地址:192.168.6.200
  
  当然 首先要备份一台数据最新的数据库,然后等设置同步完毕之后都还原成相同的数据!
  
  先做B同步A数据库的数据功能:
  暂时称A为主机Master、B为从机Slave
  
  A主机Master
  
  1、修改mysql数据库conf文件,修改/etc/my.conf
  
  在
  # Replication Master Server (default)
  # binary logging is required for replication
  之后增加
  
  

server-id       = 1            #自带就有的话就不用添加 看一下my.conf上下文
binlog-do-db=mydb_name #需要同步的数据库名称
binlog-ignore-db=mysql    #需要忽略的数据库名
  
  
  2、重启mysql
  (CentOS是serice mysqld restart 其他系统的自行重启 若不知请谷歌、度娘) 
  
  3、创建一个MySQL帐号为同步专用
  用root用户登陆mysql
  
  mysql> grant replication slave,reload,super on *.* to backup@192.168.5.200 identified by 'backup';
  mysql> flush privileges;
  
  
  ps:我这里是创建了一个backup用户密码也是backup的mysql数据库用户,用于同步。@后面指定该账户允许远程登录的ip,也就是B从机的ip地址
  
  
  B从机Slave
  
  1、同样的修改mysql数据库conf文件,修改/etc/my.conf
  
  在
  # Replication Master Server (default)
  # binary logging is required for replication
  之后增加
  
  

server-id       = 2        #自带就有的话就不用添加 看一下my.conf上下文
master-host=192.168.5.108#此处是需要备份的主机ip 这里填的是A主机的ip
master-user=backup#此处是备份的账号
master-password=backup      #此处是备份账号的密码
master-port=3306#数据库端口号 没改就填默认的3306
replicate-ignore-db=mysql#需要忽略的数据库名
replicate-do-db=mydb_name  #需要同步的数据库名称
  
  
  
  启动同步
  
  在主服务器A上,mysql命令下(root用户登陆mysq)
  mysql> show master status;
  
  eg:
  +一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+
  | File                     | Position     | Binlog_Do_DB   | Binlog_Ignore_DB  |
  +一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+
  | mysql-bin.000012  |      106    | mydb_name     | mysql                  |
  +一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+
  
  
  
  从服务器B上,mysql命令下(同样用root用户登陆mysq)
  mysql> slave stop;
  mysql> change master to master_log_file='mysql-bin.000012',master_log_pos=106;
  mysql> slave start;
  
  ps:
  master_log_file就是在主服务器mysql下show master status;显示的File列的值
  master_log_pos就是在主服务器mysql下show master status;显示的Position列的值
  
  还是在从服务器B的mysql命令下
  
  用show slave status \G;看一下从服务器的同步情况
  
  mysql>show slave status \G;
  
  有如下两项的值都是YES就表示已经在同步
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
  
  
  否则就是同步失败,当然了,失败的原因有N种,自己慢慢谷歌、度娘,这里只把我自己的操作步骤记录。
  
  
  设置MySQL双向同步
  
  
  
  其实设置双向同步就是把上面的步骤重复一下,只是A和B服务器的操作反过来,A变成从服务器、B变成主服务器!
  
  1、修改B服务器的my.conf,添加
  
  

binlog-do-db=mydb_name #需要同步的数据库名称
binlog-ignore-db=mysql    #需要忽略的数据库名
  
  
  2、重启B服务器的mysql (service mysqld restart)
  
  3、登陆mysql,
  mysql> grant replication slave,reload,super on *.* to backup@192.168.5.108 identified by 'backup';
  mysql> flush privileges;
  
  ps:创建一个backup用户,密码也是backup的mysql数据库用户,用于同步。@后面指定该账户允许远程登录的ip,也就是A从机的ip地址。
  
  
  4、修改A服务器的my.cnf,添加
  
  
  

master-host=192.168.5.200#此处是需要备份的主机ip 这里填的是A主机的ip
master-user=backup#此处是备份的账号
master-password=backup      #此处是备份账号的密码
master-port=3306#数据库端口号 没改就填默认的3306
replicate-ignore-db=mysql#需要忽略的数据库名
replicate-do-db=mydb_name  #需要同步的数据库名称
  
  
  5、重启A服务器的mysql(service mysqld restart)
  
  6、在主服务器B MySQL命令符下:
  mysql> show master status;
  eg:
  +一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+
  
  | File                     | Position     | Binlog_Do_DB   | Binlog_Ignore_DB  |
  +一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+
  | mysql-bin.000014  |      188     | mydb_name     | mysql                  |
  +一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+
  
  7、在服务器A MySQL命令符下:
  
  mysql> slave stop;
  mysql> change master to master_log_file='mysql-bin.000014',master_log_pos=188;
  mysql> slave start;
  
  
  8、还是在从服务器A的mysql命令下
  用show slave status \G;看一下从服务器的同步情况
  
  mysql>show slave status \G;
  
  有如下两项的值都是YES就表示已经在同步
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
  
  然后还原数据至最新数据库!
  至此 双向同步配置完毕!
  
  ps:因为是基于操作日志备份,所以设置同步前请把数据库先备份,然后用用一份备份还原数据库,之后数据就可以保持一致!
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-271325-1-1.html 上篇帖子: 正确重置MySQL密码 下篇帖子: MySQL错误处理汇总
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表