时间:2021-07-01 10:21:17 帮助过:3人阅读
上述表示数据库master and slave 已配置好,可以进行同库单个表的配置
测试:
1.分别在master和slave创建数据库sales(row模式下需要手动创建数据库)。
2.use sales库下,在master上创建表
CREATE TABLE user_info (
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
3.在master上创建表
CREATE TABLE story (
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
查看slave同步状态:
a. story表同步成功
b. user_info表同步不成功
则mysql数据库单库,单表同步成功。
如果只是单库同步,则在slave的配置文件中去掉:
replicate-wild-do-table =sales.story // 所要同步的数据库的单个表
在单表同步中当出现(高版本5.6.2及以上)master----(低版本5.6.2以下)slave
启动slave后,会报如下的错误:
[ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: ‘Slave can not handle replication events with the checksum that master is configured to log;
后查询资料后发现:在5.6.2中,新增了一个参数binlog_checksum,而且在5.6.6及以后的版本中,该参数的值由NONE改为了CRC32,master为5.6.30的情况下,自然有该选项参数(为了验证binlog events的正确,指定通过CRC32算法来避免出现events corrupt,所以这个选项参数出现了。),并且其值为CRC32,但slave为5.5.32,此时的该选项参数是不存在的。
【解决方案】:
直接在master上执行,即可:
mysql> SET GLOBAL binlog_checksum=none;
当然也要加到配置文件的[mysqld]中,避免重启失效:
[mysqld]
binlog-checksum = none
注意:在该参数值还未修改之前的binlog,似乎也是无法被io thread所接收的,故之前的binlog可能需要手动执行来补数据了。
在修改之后的binlog中的events,则可以被正确的传输到slave上。
本文出自 “猫咪” 博客,请务必保留此出处http://yanruohan.blog.51cto.com/9740053/1923245
mysql主从同步分库分表同步
标签:mysql