27主库出问题备库怎么办
正确切换一主多从
A、A1互为主备 可读写、BCD备库 只读
故障时A1成为新主库,BCD切换主库A1
基于点位的主备切换
MASTER_HOST、MASTER_PORT、MASTER_USER 和 MASTER_PASSWORD 分别代表了主库 A1的 IP、端口、用户名和密码。
MASTER_LOG_FILE 和 MASTER_LOG_POS,主库对应的文件名和日志偏移量,要从主库的master_log_name 文件的master_log_pos 这个位置的日志继续同步
取同步位点的方法:
- 等待新主库 A1把中转日志(relay log)全部同步完成;
- 在 A1上执行 show master status 命令,得到当前 A1上最新的 File 和 Position;
- 取原主库 A 故障的时刻T;
- 用mysqlbinlog 工具解析 A’的 File,得到 T 时刻的位点。
此方法不准确
解决方法:
- 跳过一个事务
重复执行会报错:Duplicate entry ‘id_of_R’ for key‘PRIMARY’ 错误,然后停止同步。
执行
set global sql_slave_skip_counter=1;
start slave; - 设置 slave_skip_errors 参数,直接设置跳过指定的错误
1062 错误是插入数据时唯一键冲突;
1032 错误是删除数据时找不到行
slave_skip_errors 设置为 “1032,1062”
主备建立完成需清空设置
GTID
解决主备切换找同步位点的难题