Welcome 微信登录

首页 / 数据库 / MySQL / MySQL数据库双向同步

项目申请了两台数据库服务器,为了保持数据同步,就搞了个数据同步,以此文记录以备后续使用:首先声明:服务器操作系统都是CentOS6.1、mysql版本号一致,为了减少出现其他问题的可能性,故做此环境搭配。数据库服务器A,ip地址:192.168.6.108数据库服务器B,ip地址:192.168.6.200当然 首先要备份一台数据最新的数据库,然后等设置同步完毕之后都还原成相同的数据!先做B同步A数据库的数据功能:暂时称A为主机Master、B为从机SlaveA主机Master1、修改mysql数据库conf文件,修改/etc/my.conf在# Replication Master Server (default)# binary logging is required for replication之后增加
  1. server-id       = 1            #自带就有的话就不用添加 看一下my.conf上下文   
  2. binlog-do-db=mydb_name #需要同步的数据库名称   
  3. binlog-ignore-db=mysql    #需要忽略的数据库名  
2、重启mysql(CentOS是serice mysqld restart 其他系统的自行重启 若不知请谷歌、度娘) 3、创建一个MySQL帐号为同步专用用root用户登陆mysqlmysql> 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从机Slave1、同样的修改mysql数据库conf文件,修改/etc/my.conf在# Replication Master Server (default)# binary logging is required for replication之后增加
  1. server-id       = 2             #自带就有的话就不用添加 看一下my.conf上下文   
  2. master-host=192.168.5.108   #此处是需要备份的主机ip 这里填的是A主机的ip   
  3. master-user=backup      #此处是备份的账号   
  4. master-password=backup      #此处是备份账号的密码   
  5. master-port=3306        #数据库端口号 没改就填默认的3306   
  6. replicate-ignore-db=mysql   #需要忽略的数据库名   
  7. 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: YesSlave_SQL_Running: Yes否则就是同步失败,当然了,失败的原因有N种,自己慢慢谷歌、度娘,这里只把我自己的操作步骤记录。设置MySQL双向同步其实设置双向同步就是把上面的步骤重复一下,只是A和B服务器的操作反过来,A变成从服务器、B变成主服务器!1、修改B服务器的my.conf,添加
  1. binlog-do-db=mydb_name #需要同步的数据库名称   
  2. 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,添加
  1. master-host=192.168.5.200   #此处是需要备份的主机ip 这里填的是A主机的ip   
  2. master-user=backup      #此处是备份的账号   
  3. master-password=backup      #此处是备份账号的密码   
  4. master-port=3306        #数据库端口号 没改就填默认的3306   
  5. replicate-ignore-db=mysql   #需要忽略的数据库名   
  6. 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: YesSlave_SQL_Running: Yes然后还原数据至最新数据库!至此 双向同步配置完毕!ps:因为是基于操作日志备份,所以设置同步前请把数据库先备份,然后用用一份备份还原数据库,之后数据就可以保持一致!Oracle给某个用户访问所有表的权限解决客户端连接mysql出现 xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server相关资讯      MySQL数据库  双向同步  
  • MySQL数据库重命名的方法  (06/16/2015 20:17:43)
  • 10款最好用的MySQL数据库客户端图  (01/07/2015 15:05:35)
  • Linux系统入门学习:命令行创建一  (10/11/2014 07:29:28)
  • MySQL之终端(Terminal)管理数据  (03/02/2015 17:03:41)
  • C语言访问MySQL数据库的方法  (11/17/2014 23:10:15)
  • 给Linux用户的11个高级MySQL数据库  (08/15/2014 16:41:16)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图