MySQL 从属索引文件损坏

MySQL 从属索引文件损坏

我有一对 MySQL 主从复制对,为了进行备份,我运行了一个脚本,该脚本会停止从服务器、转储数据库,然后重新启动从服务器。但是,重新启动后,从服务器的 MySQL 守护进程 ( mysqld) 因文件损坏而失败/var/lib/mysql/mysql.index- 即最后一行索引文件名前面添加了“^@”字符,导致该索引文件无法读取。只需删除这些字符,MySQL 即可正常启动,然后复制即可正常继续。实际数据库表中没有数据损坏,只有这个索引文件中有数据损坏。

备份脚本的相关部分(已编辑):

mysqladmin -uroot -p${PASSWORD} stop-slave >> $LOGFILE

# Lock the database
mysql -uroot -p${PASSWORD} -e 'FLUSH TABLES WITH READ LOCK'

# Backup live accounts
mysqldump -uroot -p${PASSWORD} --routines ${LIVEDB} > ${BACKUPDIR}/${LIVEDB}.sql
mysqldump -uroot -p${PASSWORD} --routines ${OTHERDB} > ${BACKUPDIR}/${OTHERDB}.sql

# Unlock the database 
mysql -uroot -p${PASSWORD} -e 'UNLOCK TABLES' >> $LOGFILE

# Start replication
mysqladmin -uroot -p${PASSWORD} start-slave >> $LOGFILE
mysql -uroot -p${PASSWORD} -e 'SHOW SLAVE STATUS\G' >> $LOGFILE
echo `date` Database backup ends >> $LOGFILE

是什么原因导致了这种损坏?我该如何防止它发生?

相关内容