有关mysql主从跨库更新的问题
系统:centos5.5 64位
Mysql:mysql 5.5.18
线上数据变更,开发同事发给.sql文件里面包含对多个库的操作。例如:
insert into b.bb values (5435,54);
这类sql很多,而且还必须按照提供的文件的顺序执行。
以前看Mysql文档的时候提到过主从同步的问题:
--binlog-do-db=db_name
告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,应将更新记录到二进制日志中。其它所有没有明显指定的数据库 被忽略。如果使用该选项,你应确保只对当前的数据库进行更新。
一个不能按照期望执行的例子:如果用binlog-do-db=sales启动服务器,并且执行USE prices; UPDATE sales.january SET amount=amount+1000;,该语句不写入二进制日志。
--binlog-ignore-db=db_name
告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,不应将更新保存到二进制日志中。如果你使用该选项,你应确保只对当前的数据库进行更新。
一个不能按照你期望的执行的例子:如果服务器用binlog-ignore-db=sales启动,并且执行USE prices; UPDATE sales.january SET amount=amount+1000;,该语句不写入二进制日志。
类似于--binlog-do-db,对于CREATE DATABASE、ALTER DATABASE和DROP DATABASE语句,有一个例外,即通过操作的数据库来决定是否应记录语句,而不是用当前的数据库。
也就是说更改库内的数据信息得在要修改的数据库内做操作才会记录到binlog文件中,这样从库才会同步。
从以上的说明来看,必须在当前需要变更的库操作才能主从正常同步。但是sql太多,而且顺序还不能错,手工一条一条切换库去操作,出错的几率很大。于是就找到下面的配置:
replicate-wild-ignore-table= information_schema.%
replicate-wild-ignore-table= performance_schema.%
并取消原来使用的replicate-do-db或者replicate-ignore-db参数。
replicate-wild-ignore-table参数能同步所有跨数据库的更新。>>> 更多内容,请访问:mysql主从复制、mysql主从同步系列教程
您可能感兴趣的文章:
有关mysql主从跨库更新的问题
mysql update更新关联表的例子
搭建mysql数据库主从复制的教程(图文)
搭建mysql数据库主主复制的教程(图文)
mha是python写的吗
mysql主从复制与负载均衡问题解答
从源码开始搭建MySQL主从服务器的简单配置
查看mysql编码方式 mysql数据库编码查看方法
windows下mysql主从复制配置
我遇到的mysql主从同步的问题