mysql 读取二进制日志文件_MySQL 获取复制主服务器二进制日志坐标

配置从服务器复制,必须提前确定主服务的当前二进制日志的坐标。从服务器启动复制进程的时候需要这些信息,从二进制日志中找到正确的点它才能启动处理事件。

在从服务想要开启复制进程开始同步前,如果主服务已经有数据,必须先停止在主服务上处理语句,然后获取当前二进制日志文件坐标并在主服务允许执行语句前导出数据。如果不停止主服务执行语句,导出的数据和获取的主服务的状态信息会不匹配,最终数据不一致或者毁坏从服务的数据库。

获取主服务的二进制日志坐标,如下步骤:

1. 在命令行开启一个会话连接到主服务,刷新所有表并阻止写入语句:mysql> FLUSH TABLES WITH READ LOCK;

对于 InnoDB,FLUSH TABLES WITH READ LOCK 也会阻止事务的提交操作。保持命令行运行,锁定才会持续生效,一旦退出,锁定就会释放。如果是开启全新的主从复制组,可以释放读取锁。

2. 在主服务上开启另一个会话,使用 SHOW MASTER STATUS 语句来确定当前二进制日志文件名称和位置:mysql > SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000008 | 88 | test | manual,mysql |

+------------------+----------+--------------+------------------+

上面的执行结果中可以看出,File 列展示来日志文件名称,Position 列展示了文件的位置。他们代表了从服务以主服务开始处理更新复制的坐标。

如果主服务之前的运行没有开启二进制日志,日志文件名和位置的值通过 SHOW MASTER STATUS 或者 mysqldump --master-data 展示出来的将会是空的。这种情况下,后面要用到的指定从服务的日志文件和位置的值是空字符串 '' 和 4。

到这里,已经获取了从服务启动复制需要读取的二进制文件的正确的位置信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值