MySQL实现跳过主从复制的方法(mysql跳过主从)
MySQL将数据按照规则复制到从数据库服务器中以确保备份的安全和实时性,常见的主从结构指的是一个主数据库连接到一个或多个从数据库,主数据库同步到从数据库,它通常是一个可靠的备份方式,但有时我们开发需要跳过主从复制来更新数据库,提升效率,MySQL常用的实现跳过主从复制的方法有6种。
首先是多个更新或插入操作组成一个事务,这是一种常用的做法来跳过主从复制,具体说来就是用客户端把多个更新和插入操作放到一个sql事务中,使用“set autocommit = 0”把当前的自动提交设置为0,然后调用“START TRANSACTION” 和 “COMMIT” 来提交这个事务,最后使用“set autocommit = 1”把当前的自动提交设置为1,代码如下:
`SET autocommit = 0;
START TRANSACTION;
UPDATE test SET score = score + 1;
UPDATE user SET name = “张三” WHERE id =22;
COMMIT;
SET autocommit = 1;`
其次是把配置文件中的同步参数设置为“0”,进入到MySQL的bin目录,然后使用“mysql.exe –help”或“mysql.exe –verbose”查看参数,找到同步选项slave-skip-errors,设置为“0”,该参数仅对“ERR_MASTER_FATAL_ERROR_READING_BINLOG”有用,代码如下:
`set GLOBAL slave_skip_errors = 0`
第三种方法是使用stop slave sql语句,这是暂停在从MySQL数据库上执行主从复制的最简单方法,MySQL从数据库暂停复制操作后可以执行任何操作,然后使用start slave sql语句重新启动从库复制,更新的数据也将被正确同步,代码如下:
`STOP SLAVE;
UPDATE test SET score = score + 1;
UPDATE user SET name = “张三” WHERE id =22;
START SLAVE;`
第四种方法是设置配置文件中同步参数“slave_parallel_workers”为“0”。使用 stop slave 和 start slave sql语句暂停和开启主从复制,配置文件中“slave_parallel_worker”设置为0可以阻止复制,代码如下:
`STOP SLAVE;
SET GLOBAL slave_parallel_workers = 0;
UPDATE test SET score = score + 1;
UPDATE user SET name = “张三” WHERE id = 22;
SET GLOBAL slave_parallel_workers = 4;
START SLAVE;`
第五种方法是更改主从的同步参数“replicate_do_db”,通过指定主从之间同步的数据库来跳过其他数据库的同步,例如:”replicate_do_db=database1,database2″,只指定同步database1 和database2数据库的插入和更新操作,其他数据库的插入和更新操作会被忽略,代码如下:
`STOP SLAVE;
SET GLOBAL replicate_do_db = ‘database1,database2’;
UPDATE test SET score = score + 1;
UPDATE user SET name = “张三” WHERE id =22;
SET GLOBAL replicate_do_db = ”;
START SLAVE;`
第六种方法是更改主从之间的同步参数“replicate_do_table”,只从主数据库同步指定的数据表,如:”replicate_do_table = db1.table1,db2.table2″,只同步db1和db2数据库中的table1和table2数据表,代码如下:
`STOP SLAVE;
SET GLOBAL replicate_do_table = ‘db1.table1,db2.table2’;
UPDATE test SET score = score + 1;
UPDATE user SET name = “张三” WHERE id =22;
SET GLOBAL replicate_do_table = ”;
START SLAVE;`
综上所述,MySQL常用的实现跳过主从复制的方法有多种,比如多个更新放进一个事务中执行,把配置文件中的同步参数设置为“0”,使用stop slavesql语句等等,这些跳过主从复制的方法可以节约在从MySQL数据库上执行主