今天测试环境的数据库由于磁盘空间不足造成数据库不能正常写入数据,第一次遇到这个问题,脑袋一热,直接把数据库停了,然后重启起不来,想用最笨的方法进行恢复(把数据库数据全都删掉,然后重新创建数据库).
我先把所有的和二进制日志相关的文件全都删除了.然后重启,还是不行,最后找到了问题的原因,虽然数据库启动起来了,但是已经晚了,日志文件全都删除了,只剩下数据文件了.无奈还是得从主数据库中备份数据过来,然后重新建立数据.
先把主数据库的内容备份了一份,然后导入备用的数据库,这里就不多做解释,主要是怎么设置mysql数据库开始同步的位置和使用的二进制文件.
在刚刚备份完的时候最好是然他生成一个新的数据库文件
flush logs;
执行上一个命令,刷新日志.
执行这个命令看一下现在主数据库的日志状态
show master status;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000007 | 107 | | |
+-------------------+----------+--------------+------------------+
文件和位置都有了,那么在备用数据库中执行
stop slave;
CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000007', MASTER_LOG_POS=107;
start slave;
那么备用数据库将从master-bin.000007日志文件中的107位置开始进行数据传输.
--转自