我有一个MySQL主从复制对,并采取备份,我运行一个脚本,停止奴隶,转储数据库,然后重新启动奴隶。 但是,重新启动之后,由于/var/lib/mysql/mysql.index文件损坏了从属服务器的MySQL守护进程( mysqld ) – 即在最后一行的索引文件名前加上了“^ @”字符,从而使得索引文件不可读。 只需删除这些字符,就可以正常启动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
什么是造成这种腐败,如何防止它发生?