远程数据传输解决方案

一、概述

问题:使两个不同数据库里个别表的数据一致性。

方案:搭建mysql数据库主从(主主)表数据同步。

 

二、采取方案原因

由于方便理解在这里我设定两个不同的库为:A库、B库

两个需要同步的表为:A库的aa表------------> B库的aa表 

                    B库的bb表------------> A库的bb表 

 

由上面的举例可以看出我们同步是比较特殊的,相当于双向同步不同表内容

所以,我采用mysql数据库主主式同步,这种方法可以保证数据的完整性,

属于时时同步,使数据可以在第一时间传输到对方的库中,减少了手动传输

出现错误的可能性。

 

三、           部署过程

如:A库的服务器:192.168.1.1(主)

B库的服务器:192.168.1.2(从)

系统:centos6.4

 

1.       修改主服务器的mysql配置文件my.cnf

[mysqld]

server_id=1 (mysql主从的标示一般是号码越小的为主)

log_bin=mysql-bin (二进制同步日志文件)

binlog_do_db=A (要同步的库名)

修改完重启mysql

 

2.       进入主mysql输入

grant replication slave on *.* to 账号@’%’ identifiedby ‘密码’;  (创建主从同步账号,从A库到B库)

flush privileges;  (立即使用)

show master status;  (查看主的配置信息)例如下:

                 

3.       修改从服务器的mysql配置文件my.cnf

[mysqld]

server_id=2

log_bin=mysql-bin

replicate_rewrite_db=A->B (将master库名转换为slave库名)

replicate_do_table=B.aa(指定需要同步的表名)

修改完后重启mysql

 

4.       进入从mysql输入

stop slave;  (关闭slave)

change master to master_host=’ip’,master_user=’用户’,master_password=’密码’,master_connect_retry=60,”(重试连接时间)” master_log_file=’master上查到的file信息’,”(如mysql-bin.000001)” master_log_pos= ’master上查到的Position信息’; “(如399)”

start slave;  (开启slave)

      

5.       这时我们测试:

     A库的aa表 ------------>B库的aa表 (院校库表)       

             是可以同步的,还剩下B库的bb表 ------------>A库的bb表 (审核表)

   

6.   修改从服务器的mysql配置文件my.cnf(不要消除第一步的配置接着添加)

replicate_rewrite_db=B->A (将slave库名转换为master库名)

replicate_do_table=A.aa (指定需要同步的表名)

修改完重启mysql

                 

                  7.     修改主服务器的mysql配置文件my.cnf(不要消除已经配好的条件接着添加)

                          binlog_do_db=B(要同步的库用)

                         修改完重启mysql

              

                  8.     进入从mysql输入

grantreplication slave on *.* to 账号@’%’ identified by ‘密码’;  (创建主从同步账号,从B库到A库)

flush privileges;  (立即使用)

show master status;  (查看主的配置信息)例如下:

     

9. 进入主mysql输入

             stopslave;  (关闭slave)

changemaster to master_host=’ip’,master_user=’用户’,master_password=’密码’,master_connect_retry=60,”(重试连接时间)” master_log_file=’slave上查到的file信息’,”(如mysql-bin.000002)”master_log_pos=‘slave上查到的Position信息’; “(如266)”

startslave;  (开启slave)

 

                  10.   这时B库的bb表 ------------>A库的bb表 

           

四、 总结

这时mysql就可以实现

  A库的aa表 ------------>B库的aa表 

  B库的bb表 ------------>A库的bb表 


你可能感兴趣的:(远程数据传输解决方案)