我试图设置复制用于大(120GB)数据库和我搞砸了。

我关闭主、复制数据文件,并重新启动的掌握。现在我已经设立了奴隶&开始了起来,我意识到我没获得 MASTER_LOG_FILEMASTER_LOG_POS 值所需要安装复制。

我还有一个不变的复制的数据文件。是否有任何方法来确定 MASTER_LOG_FILEMASTER_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

输出看起来是这样的:

... 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

我猜我应该使用那个最后两个位置,但是我不确定。

有帮助吗?

解决方案

我们希望,你没有启动该在奴隶。

它就这么发生的二进制日志的位置也是二进制日志的尺寸的二进制日志的事件。在你的情况下,可以利用最后的二进制日志的奴隶认为,我可以假定的是 mysql-bin.000006.获得的文件大小和使用,作为该职位。

因此,在奴隶你会跑

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;

这应该这样做!

我们讨论的二进制日志的位置是filesize之前

你还要求

会发生什么,如果你设置MASTER_LOG_POS到一个较早的时间点?

是的,它会重播那些二进制日志的事件和引起的问题。

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top