在从数据库中插入丢失的数据

时间:2019-08-18 08:25:30

标签: mysql replication master-slave

我们有一个主从复制[MySQL 5.6]。但是,在从属数据库中,一个表中缺少2行。我尝试使用建议的here使用Percona Toolkit解决此问题。

  

但是pt-table-checksum需要基于语句的复制,并且它在主服务器上设置了binlog_format=STATEMENT,但是由于MySQL的限制,副本不接受此更改。因此,校验和不会使用作​​为进一步副本的母版的基于行的复制来复制经过任何副本。

那么,如果:

  1. 将行直接插入到从数据库中
SET SQL_LOG_BIN=0;

INSERT INTO `tbl_name` (`id`, `column1`, ...)
VALUES ( 4321, 'some val', ...),
       ( 4344, 'some val2', ...);
  1. 在主数据库中运行REPLACE INTO查询
REPLACE INTO `tbl_name` (`id`, `column1`, ...)
VALUES ( 4321, 'some val', ...);

REPLACE INTO `tbl_name` (`id`, `column1`, ...)
VALUES ( 4344, 'some val2', ...);

有人可以建议哪种方法安全可靠。这是解决问题的正确方法。有这样做的风险吗?

0 个答案:

没有答案