标签:问题 hang 同步 查询 like 错误 ignore 中间件 重复
启动所有线程
start slave;
关闭所有线程
stop slave;
单独启停SQL线程
start slave sql_thread;
stop slave sql_thread;
单独启停IO线程
satrt slave io_thread;
stop slave io_thread;
使用复制用户手工登录
[root@db01 data]# mysql -urepl -p12321321 -h 10.0.0.51 -P 3307
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user ‘repl‘@‘db01‘ (using password: YES)
[root@db01 data]# mysql -urep -p123 -h 10.0.0.51 -P 3307
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user ‘rep‘@‘db01‘ (using password: YES)
[root@db01 data]# mysql -urepl -p123 -h 10.0.0.52 -P 3307
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘10.0.0.52‘ (113)
[root@db01 data]# mysql -urepl -p123 -h 10.0.0.51 -P 3309
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘10.0.0.51‘ (111)
1. stop slave
2. reset slave all;
3. change master to
4. start slave1.
Last_IO_Errno: 1236
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: ‘could not find next log; the first event ‘mysql-bin.000007‘ at 967, the last event read from ‘/binlog/3306/mysql-bin.000007‘ at 1329, the last byte read from ‘/binlog/3306/mysql-bin.000007‘ at 1329.‘
如果业务繁忙期间做,有可能会导致数据库hang死
stop slave ;
reset slave all;
CHANGE MASTER TO
MASTER_HOST=‘10.0.0.12‘,
MASTER_USER=‘repl‘,
MASTER_PASSWORD=‘123456‘,
MASTER_PORT=3306,
MASTER_LOG_FILE=‘mysql-bin.000001‘,
MASTER_LOG_POS=154,
MASTER_CONNECT_RETRY=10;
start slave;
show slave status\G;
查看二进制日志位置
mysql> show variables like ‘%log_bin%‘;
查看所有已存在的二进制日志
mysql> show binary logs;
mysql> flush logs;
mysql> show binary logs;
查看正在使用的二进制日志
mysql> show master status ;
或者使用第三方pt工具
回放relay-log中的日志。可以理解为执行relay-log SQL
一条SQL语句为什么执行失败?
合理处理方法:
解决思路1:
进行从库反操作。重启线程
drop database wx;
start slave;
解决思路2:
stop slave;
set global sql_slave_skip_counter = 1;
#将同步指针向下移动一个,如果多次不同步,可以重复操作。
start slave;
解决思路3(暴力):
/etc/my.cnf
slave-skip-errors = 1032,1062,1007
常见错误代码:
1007:对象已存在
1032:无法执行DML
1062:主键冲突,或约束冲突
但是,以上操作有时是有风险的,最安全的做法就是重新构建主从。把握一个原则,一切以主库为主.
read_only
super_read_only
主库发生了操作,从库‘很久’才跟上。
主库:
3306 [(none)]>show master status;
+------------------+----------+--------------+------------------+----------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+----------------------------------------+
| mysql-bin.000001 | 319 | | | 7d1fda1c-c705-11ea-9af4-000c2925c00d:1 |
+------------------+----------+--------------+------------------+----------------------------------------+
从库:
db02 [(none)]>show slave status\G;
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 319
Retrieved_Gtid_Set: 7d1fda1c-c705-11ea-9af4-000c2925c00d:1
Retrieved_Gtid_Set: 7d1fda1c-c705-11ea-9af4-000c2925c00d:1
Executed_Gtid_Set: 13ce935d-c710-11ea-861d-000c29753b09:1,
7d1fda1c-c705-11ea-9af4-000c2925c00d:1:5-6
粗略:
show slave status\G;
Seconds_Behind_Master: 0
准确:
日志量:主库binlog位置点:从库relay执行的位置点
如何计算延时的日志量:
show master status;
cat /data/3306/relay-log.info
拿了多少:
db02 [(none)]>show slave status\G;
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 319
1.拆分业务(分布式):组件分离,垂直拆分,水平拆分
2.大事务的拆分:比如,1000w业务,拆分为20次执行
2.内部原因
1.二进制更新问题:
binlog写入不及时
sync_binlog=1
2.本版5.7之前版本,没有开GTID之前,主从可以并发事务,但是dump传输时串行传输binlog:
会导致,事务量,由于dump_t 是串型工作的,大事务时会出现比较严重延时,导致传送日志较慢
如何解决问题?
5.6+ 版本,手工开启GTID,事务在主从的全局范围内就有了唯一标志。
5.7+ 版本,无需手工开启gdit,系统会自动生成匿名的GTID信息
有了GTID之后,就可以实现并发(使用Group commit方式)传输binlog
3.主库极其繁忙
慢语句
锁等待
从库个数
网络延时
标签:问题 hang 同步 查询 like 错误 ignore 中间件 重复
原文地址:https://www.cnblogs.com/wangxiang135/p/13328972.html