Kry*_*ten 6 mysql replication mysqlbinlog
我正在尝试为大型(120 GB)MySQL 数据库设置复制,但我搞砸了。
我关闭了 master,复制了数据文件,然后重新启动了 master。现在我已经设置了奴隶并启动了它,我意识到我忽略了获取MASTER_LOG_FILE
和MASTER_LOG_POS
设置复制所需值。
我仍然有一份未受影响的数据文件副本。有没有办法从这些文件中确定MASTER_LOG_FILE
和MASTER_LOG_POS
?
相关问题:
MASTER_LOG_POS
为较早的时间点?编辑
我一直在调查该mysqlbinlog
命令,并通过执行以下命令发现了正确的信息:
mysqlbinlog --to-last-log --start-datetime='2015-06-21 20:05:00'
mysql-bin.000006 | grep end_log_pos
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
... a whole bunch more lines ...
#150621 20:10:21 server id 1 end_log_pos 720159843 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:21 server id 1 end_log_pos 720161877 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:21 server id 1 end_log_pos 720162762 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:22 server id 1 end_log_pos 720164796 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:22 server id 1 end_log_pos 720164815 Stop
Run Code Online (Sandbox Code Playgroud)
我猜我应该使用最后两个位置之一,但我不确定哪个。
希望您还没有在从站上启动 mysqld。
碰巧一个 binlog 位置也是每个 binlog 事件结束时的 binlog 大小。在你的情况下,你可以使用奴隶看到的最后一个二进制日志,我可以假设是mysql-bin.000006
. 获取文件大小并将其用作位置。
因此,在 Slave 上,您将运行
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='...',
MASTER_PORT=3306,
MASTER_USER='repluser',
MASTER_PASSWORD='replpassword',
MASTER_LOG_FILE='mysql-bin.00006',
MASTER_LOG_POS=720164815;
START SLAVE;
Run Code Online (Sandbox Code Playgroud)
那应该这样做!!!
我之前讨论过二进制日志位置是文件大小
Nov 30, 2012
:如何监控 MySQL 二进制日志文件是否损坏?Oct 20, 2011
:出现磁盘空间中断时如何处理 My SQL DB Master 到 Master 的复制你还问
如果将 MASTER_LOG_POS 设置为较早的时间点会发生什么?
是的,它会重播那些 binlog 事件并导致问题。
归档时间: |
|
查看次数: |
9151 次 |
最近记录: |