码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2018-05-29 17:11:48      阅读:493      评论:0      收藏:0      [点我收藏+]

标签:col   socket   form   日志   授权   star   结果   一句话   art   

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的myqsql命令行终端
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上配置。   
 
 
 
 
 

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

标签:col   socket   form   日志   授权   star   结果   一句话   art   

原文地址:https://www.cnblogs.com/lalalaxixixi/p/9105797.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!