MySQL主从数据不一致,需要重新关联

发布网友 发布时间:2022-04-23 02:35

我来回答

2个回答

热心网友 时间:2022-04-07 19:07

1. 在有主键或者唯一键的情况下,Slave 重放 Binlog 并不会去比较检索到的记录的每一列是否和BI相同,因此如果 Slave 和 Master 存在数据不一致,会直接覆盖 Slave 的数据而不会报错。
2. 在没有主键或者唯一键的情况下,Hash Scan / Hash Scan Over Index 的执行效率 在理论上分析高于 Table Scan 和Index Scan 。
3. 在没有主键或者唯一键的情况下,Slave 选择的二级索引是第一个所有的列都在 BI 中存在的索引,不一定是 Master 执行计划所选择的索引。

热心网友 时间:2022-04-07 20:25

直接拷贝物理文件备份,但是这种方式会产生问题,INNODB引擎无法物理备份,需要修改后备份。不妨做个修改,以后的维护一劳永逸。数据库主从备份可能会产生一些问题,也就是数据不可逆,最好做成主主备份,尤其是web和后台数据库同时多用户使用的情况下。

master1上的my.cnf添加:
[mysqld]
# for repl
log-bin=mysql-bin
server-id=1
binlog-do-db=TestXXX
binlog-ignore-db=mysql
replicate-do-db=TestXXX
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
auto_increment_increment=2# 应设为整个结构中服务器的总数
auto_increment_offset=1# 设定数据库中自动增长的起点,避免两台服务器数据同步时出现主键冲突
master2上的my.cnf添加:
[mysqld]
# for repl
log-bin=mysql-bin
server-id=2
binlog-do-db=TestXXX
binlog-ignore-db=mysql
replicate-do-db=TestXXX
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
auto_increment_increment=2
auto_increment_offset=2
重启两台机器上的服务
master1上指定master2为主:
CHANGE MASTER TO MASTER_HOST='master2',MASTER_USER='username',MASTER_PASSWORD='passwd';
START SLAVE;
master2上指定master1为主:
CHANGE MASTER TO MASTER_HOST='master1',MASTER_USER='username',MASTER_PASSWORD='passwd';
START SLAVE;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com