mysql故障

本文介绍了MySQL主从复制过程中常见的错误及解决方法,包括连接丢失、同步失败等问题,并提供了具体的排查步骤和修复命令。

1:当通过 TCP/IP 连接 MySQL 远程主机时,出现 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104 。如果是
在linux shell命令行中直接打 mysql 命令,能够顺利连上 MySQL,执行查询语句也比较正常,但如果执行 STOP SLAVE; 命令时就随机出现
 ERROR 2013 (HY000): Lost connection to MySQL server during query 问题。而如果把操作命令写到脚本文件再去执行该脚本文件的话,
 则必然出现 Lost connection to MySQL server at 'reading initial communication packet', system error: 111
要是无论通过什么途径远程访问都出现错误可以认为是系统有防火墙之类的限制,但现在这种奇怪的抽筋现象让人百思不得其解。
最后找到的解决方法是在 my.cnf 里面的 [mysqld] 段增加一个启动参数:

skip-name-resolve


###mysql主从,通过status 查看
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果不全部是yes的话就说明主从有问题,就得去从库分析错误日志了
###根据错误日志查看对应问题
stop SLAVE ; 
reset slave
CHANGE MASTER TO MASTER_LOG_FILE='mysqlcncnmaster.000080', MASTER_LOG_POS=0; 
start SLAVE ; 

不行的话看下是不是mysql资源被其他进程占用
重启mysql服务
通过mysqlbinlog转换最新的binlog日志文件,看下是不是在同步之前的事件
mysqlbinlog /var/log/mysql/mysql-bin.002743 > test.txt


result = commands.getoutput('mysql  -uroot -p1qaz#EDC -e "show slave status\G" |egrep  -w "Slave_IO_Running|Slave_SQL_Running" |awk "{print $2}"|wc -l')

###slave状态不对
Slave_IO_Running: Yes
Slave_SQL_Running: No

报错:Last_Error: Relay log read failure: Could not parse relay log event entry. The possible reasons are:
the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log), 
the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's MySQL code.
If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.


###找到出错前读取到的最新位置,重新设置从主的同步日志和位置
Relay_Master_Log_File: mysql-bin.002757
Read_Master_Log_Pos: 84194890


###修复
stop slave;
change master to master_log_file='mysql-bin.002757',master_log_pos=84194890;
start slave;

并没有解决
show slave status\G
Slave_IO_Running: No
Slave_SQL_Running: Yes

报错:Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
查看从库错误日志
vim /var/log/mysql/error.log
2017-08-08 09:13:43 29950 [Note] Slave I/O thread killed while reading event
2017-08-08 09:13:43 29950 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.003003', position 90529022
显示退出的时候读取到这个文件的这个点
再次停止从库,修改与主的同步位置后恢复
Seconds_Behind_Master: 395   ###与主相差的同步时间点也OK


######删除数据表,重新创建时报错
Tablespace for table '`zabbix`.`history_uint`' exists. Please DISCARD the tablespace before IMPORT

#####解决方法
1、删除这个表所在数据目录关于这个表的所有文件
2、命令行进入数据清除缓存,如若不清楚依然会报此错
   use zabbix
   flush privileges
3、校验,查看是否有新数据产生

 

mysql双主主键冲突

建议类似双主这种情况:

事先设置好offset和increment的值,即:实现设置好自增字段的初始值和步长。主库A为奇数起步,主库B为偶数起步。两者都采用相同的步长。

1)、设置主主服务器的自增长偏移位置不同:

A :auto_increment_offset=3

B :auto_increment_offset=4

2)、设置主主服务器步长相同:

​auto_increment_increment=2

转载于:https://my.oschina.net/u/2343310/blog/1553870

进行MySQL故障演练可以帮助验证系统的可用性和恢复能力,并提前发现和解决潜在问题。一种常见的故障演练方法是模拟数据库崩溃,并测试系统的备份恢复能力。通过以下步骤可以进行MySQL故障演练: 1.故障演练之前,首先要确保已经进行了全备份和binlog日志的备份。 2. 进入MySQL命令行界面,执行以下命令来禁用二进制日志并恢复备份文件: set sql_log_bin=0; source /data/backup/appfull.sql; source /data/backup/appbin.sql; set sql_log_bin=1; 3. 确保备份文件的路径和名称正确,并根据实际情况进行修改。 4. 在演练过程中,可以模拟数据库崩溃的情况,例如通过停止数据库服务或模拟硬件故障。 5. 模拟崩溃后,重新启动数据库,并使用备份文件进行恢复。 6. 检查数据库恢复的情况,确保数据的完整性和一致性。 通过这些故障演练步骤,可以验证数据库的高可用性和恢复能力,并及时发现和解决潜在问题,保障数据库的稳定运行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL-年终故障演练](https://blog.csdn.net/qq_34646546/article/details/89343451)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Gdevops广州站 2022年全球敏捷运维峰会PPT合集(18份).zip](https://download.csdn.net/download/mengchensubi/85752508)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值