我可以将中继日志作为sql文件播放吗?

时间:2018-01-22 21:34:44

标签: mysql database-replication

我可以将中继日志作为sql文件播放吗?我有一台服务器现在已经从主人那里停留了3个月。我想我可以只记录中继日志中的日志位置并进行SQL转储并在从服务器上播放事务。

1 个答案:

答案 0 :(得分:0)

将中继日志重播为SQL正是复制正在进行的操作。或者,尝试做。

当副本无法像主创建这些更改那样快速地发挥SQL更改时,会发生滞后问题。这并不罕见,因为master在多个线程中创建了,而副本必须在单个线程中重放它们(直到MySQL 5.6改进了设置slave_parallel_workers的能力)。

最终,滞后可能会变得如此糟糕,并且难以赶上,您可能会考虑使用其主服务器的当前备份重新初始化副本。

但即使你这样做,你也可能会看到滞后再次上升。

您可以使用其他一些策略来解决此问题:

  • 查询是否已优化?如果副本需要重放的查询速度很慢,这可能会使重播更加困难。一个典型的例子是,如果您使用基于行的复制,但您的表没有定义主键约束。在那种情况下,every update or delete will cause a table-scan for every row。解决方法是确保每个表都有一个主键。即使您不使用RBR,也要确保使用索引优化更新和删除。

  • 您的副本需要更强大的服务器吗?如果它有更多的RAM,更快的磁盘或更快的CPU,它可能会做得更好。升级到具有更多内核的CPU可能无济于事。

  • 您是否需要在主服务器上减少对数据库的写入?考虑您是否使用数据库代替缓存或队列。这些可能是需要大量快速更改的数据库的使用,并且可能在binlog中产生过多的数量。

  • 是时候将这个MySQL实例拆分成多个实例了,所以每个实例都需要写一个子集吗?