mysql主主同步指定库的指定表(version 5.1~5.7)

server1: ip:1.1.1.1 

server2: ip:1.1.1.2

<1> 修改server1的配置文件vim /etc/my.cnf

[mysqld]

vim /etc/my.cnf

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

log_bin=bin_log

server-id=1

#指定binlog记录的库,其他库就不记录了可以用,来分隔指定多个库

binlog-ignore-db = mysql  
binlog-ignore-db = performance_schema
binlog-ignore-db = information_schema
binlog-do-db=mobi 
replicate-do-db=mobi

replicate-do-table=mobi.test1

# 允许复制主服务的库的哪一张表,需要多张表就要写多行

replicate-do-table=mobi.test2

<2>修改server2的配置文件vim /etc/my.cnf

[mysqld]

vim /etc/my.cnf

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

log_bin=bin_log

server-id=2

binlog-do-db=mobi 

binlog-ignore-db = mysql  

binlog-ignore-db = performance_schema
binlog-ignore-db = information_schema

replicate-do-db=mobi

replicate-do-table=mobi.test1

replicate-do-table=mobi.test2

#除了server-id不同之外和server1几乎一样的配置

 

<3>分别进入server1和server2的mysql命令行终端

server1:

mysql>grant replication slave on *.* to slave@"1.1.1.2" identified by "password" ; #授权一个可以连接主库的用户。
                           mysql>show master status;  #查看当前使用的日志文件(file)以及记录偏移量(position),记录下来等下做同步时要用。
                           例如显示结果为:file为binlog.000001        position为253
server2:

mysql>grant replication slave on *.* to slave@"1.1.1.1" identified by "password" ; #授权一个可以连接主库的用户。
                           mysql>show master status;  #查看当前使用的日志文件(file)以及记录偏移量(position),记录下来等下做同步时要用。
                           例如显示结果为:file为binlog.000001        position为322

<4>分别执行同步命令

 server1:

mysql>change master to  master_host="1.1.1.2" ,master_user="slave" ,master_password="password",
                                   ->master_ log_file="binlog.000001",master_log_pos=322;
    
mysql>start slave;

server2:

mysql>change master to  master_host="1.1.1.1" ,master_user="slave" ,master_password="password",

                                   ->master_ log_file="binlog.000001",master_log_pos=253;

mysql>start slave;

 

 <5>查看同步情况,进入server1和server2分别输入一下命令

mysql>show slave status\G;

#如果IO/SQL这两个线程都是YES说明成功了

 

 <6>归纳总结

以上操作如果不同步原因有很多,首先有可能因为修改配置文件忘记重启服务而没有生成日志,导致同步不成功。还有一种原因是主库已经有数据,而从库上没有这些数据,这样的话即使配置没有出错同步也会失败,最好的办法就是利用mysqldump导出主库中的数据保存到一个.sql文件内,然后在拷贝这些数据到从库上,这些做完之后在做同步就行了。如果要做主主结构只需要反过来配置一遍即可。如果要做主主从这样的结构的话需要在中继的那个节点的配置文件中加入 log-slave-updates=on这么一句话。举个例子,三个节点分别为master1:1.1.1.1。    master2:1.1.1.2 。  slave:1.1.1.3。 master1和master2互为主主结构,master2还是slave的主,那么这个新加的配置log-slave-updates=on就要在master2上配置。   

 
 
 
 
 
posted @ 2018-05-29 16:37  啦啦啦嘻嘻嘻  阅读(409)  评论(0编辑  收藏  举报