高性能MySQL:复制文件

作者:港云互联 时间:2019-12-05

        让我们来看看复制会使用到的一些文件。前面已经介绍了二进制日志文件和中继日志文件,其实还有其他的文件会被用到。不同版本的MySQL默认情况下可能将这些文件放到不同的目录里,大多取决具体的配置选项。可能在data目录或者包含服务器.pid文件的目录下(对于类UNIX系统可能是/var/run/mysqld)。它们的详细介绍如下。



mysql-bin. index



        当在服务器上开启二进制日志时,同时会生成- 个和二进制日志同名的但以.index作为后缀的文件,该文件用于记录磁盘上的二进制日志文件。这里的"index" 并不是指表的索引,而是说这个文件的每一行包含 了二进制文件的文件名。你可能认为这个文件是多余的,可以被删除(毕竟MySQL可以在磁盘上找到它需要的文件)。事实上并非如此,MySQL依赖于这个文件,除非在这个文件里有记录,否则MySQL识别不了二进制日志文件。

高性能MySQL:复制文件


mysql-relay-bin-index



        这个文件是中继日志的索引文件,和mysql-bin. index的作用类似。



master.info



        这个文件用于保存备库连接到主库所需要的信息,格式为纯文本(每行一个值), 不同的MySQL版本,其记录的信息也可能不同。此文件不能删除,否则备库在重启后无法连接到主库。这个文件以文本的方式记录了复制用户的密码,所以要注意此文件的权限控制。



relay-log. info



        这个文件包含了当前备库复制的二进制日志和中继日志坐标(例如,备库复制在主库上的位置),同样也不要删除这个文件,否则在备库重启后将无法获知从哪个位置开始复制,可能会导致重放已经执行过的语句。



        使用这些文件来记录MySQL复制和日志状态是一种非常 粗糙的方式。更不幸的是,它们不是同步写的。如果服务器断电并且文件数据没有被刷新到磁盘,在重启服务器后,文件中记录的数据可能是错误的。正如之前提到的,这些问题在MySQL5.5里做了改进。



        以.index作为后缀的文件也与设置expire_ logs_ days 存在交互,该参数定义了MySQL清理过期日志的方式,如果文件mysql-bin.index在磁盘上不存在,在某些MySQL版本自动清理就会不起作用,甚至执行PURGE MASTER LOGS 语句也没有用。这个问题的解决方法通常是使用MySQL服务器管理进制日志, 这样就不会产生误解(这意味着不应该使用rm来自己清理日志)



        最好能显式地执行些日志清理策略, 比如设置 expire_ logs_ days参数或者其他方式,否则MySQL的二进制日志可能会将磁盘撑满。当做这些事情时,还需要考虑到备份策略。


新人注册,即送价值满880元现金劵

立即注册>>
客服 电话 反馈 活动 回顶部

服务热线

+852-5764-9835

1对1贴心服务,7X24小时热线