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

Posted python学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql主主同步指定库的指定表(version 5.1~5.7)相关的知识,希望对你有一定的参考价值。

server1: ip:1.1.1.1 

server2: ip:1.1.1.2

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

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 [email protected]"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 [email protected]"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)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL基础实用语法

mysql主主同步,从库不同步应该怎么解决

MySQL学习笔记MySQL的常用命令

如何在一台windows主机上搭建mysql主从配置

MySQL主从复制指定不同库表同步参数说明

mysql主从之过滤复制