如何在Mysql的同步失败后,执行stop slave与 start slave操作后修复辅库出现的错误呢?

jackxiang 2011-8-19 10:26 | |
我们在做主辅同步时往往会出现辅库出现错误,而这就需要把主库的数据mysqldump出来时,把该辅库的DB的同步给暂时干掉,主库继续写它的BinLog,也就是同步SQL,但辅助库给停下来。

这个时候就需要stop slave下(不然的话,日志一边写,一边备份,容易出错),日志备份完了,再start slave起来。
为什么不flush log 呢?

查了下Mysql的帮助,mysql --help ,这种命令可以这个执行,-e 参数:
#mysql -e "select version()";
+----------------+
| version()      |
+----------------+
| 5.0.27-max-log |
+----------------+
是可行的,就用它吧。
-e, --execute=name  Execute command and quit. (Disables --force and history


下面来自网络:
mysql -uroot -p -e "stop slave"
为什么不flush log 呢.
flush log之后,数据目录下会新生成一个新的日志mysql-bin.000056。我的备份策略是 tar mysql-bin.0*,所以这个时候就把新的mysql-bin.000056给压缩进去了!

网上说mysql-bin.index在第一次增量备份之后,会被清空,可是我的mysql-bin.index里面一直是存储了mysql-bin.000001....mysql-bin.000055所有的日志记录。悲剧啊!

每天的增量备份,都是备份mysql-bin.000001到mysql-bin.0000XX,所有的增量日志都备份了,搞得每天还要去删前几天的备份,不然磁盘就满了!

MySQL支持增量备份:需要用--log-bin选项来启动服务器以便启用二进制日志;参见5.11.3节,“二进制日志”。当想要进行增量备份时(包含上一次完全备份或增量备份之后的所有更改),应使用FLUSH LOGS回滚二进制日志。然后,你需要将从最后的完全或增量备份的某个时刻到最后某个点的所有二进制日志复制到备份位置。这些二进制日志为增量备份;恢复时,按照下面的解释应用。下次进行完全备份时,还应使用FLUSH LOGS或mysqlhotcopy --flushlogs回滚二进制日志。


如果你只使用一个更新日志,你只须清空日志文件,然后移走旧的更新日志文件到一个备份中,然后启用新的更新日志。
用下列方法可以强制服务器启用新的更新日志:
◆ mysqladmin flush-logs
你一般需要在命令行提供使用的数据库用户:
mysqladmin –u root –p flush-logs
◆ mysqladmin refresh
你一般需要在命令行提供使用的数据库用户:
mysqladmin –u root –p refresh
如果你正在使用MySQL 3.21或更早的版本,你必须使用mysqladmin refresh。
◆ SQL命令
FLUSH LOGS
◆ 重启服务器
上述方法都具有这样的功能:
关闭并且再打开标准和更新记录文件。如果你指定了一个没有扩展名的更新记录文件,新的更新记录文件的扩展数字将相对先前的文件加1。
mysql>FLUSH LOGS;
如何使用新的常规日志
用上面的方法同样可以强制更新常规日志。
要准备备份常规日志,其步骤可能复杂一些:
$ cd mysql-data-directory
$ mv mysql.log mysql.old
$ mysqladmin flush-tables
然后做一个备份并删除“mysql.old”。

来自网络:
http://read.newbooks.com.cn/info/207675.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/4555/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2011-8-19 11:43
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]