高性能MySQL:只读备库

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

        许多机构选择将备库设置为只读,以防止在备库进行的无意识修改导致复制中断。可以通过设置read only选项来实现。它会禁止大部分写操作,除了复制线程和拥有超级权限的用户以及临时表操作。只要不给也不应该给普通用户超级权限,这应该是很完美的方法。


模拟多主库复制


        当前MySQL不支持多主库复制(一个备库拥有多个主库)。但是可以通过把一台备库轮流指向多台主库的方式来模拟这种结构。例如, 可以先将备库指向主库A,运行片刻,再将其指向主库B并运行片刻,然后再次切换回主库A。这种办法的效果取决于数据以及两台主库导致备库所需完成的工作量。如果主库的负载很低,并且主库之间不会产生更新冲突,就会工作得很好。


        需要做一些额外的工作来为每个主库跟踪二进制日志坐标。可能还需要保证备库的I/0线程在每一次循环提取超过需 要的数据,否则可能会因为每次循环反复地提取和抛弃大量数据导致主库的网络流量和开销明显增大。还可以使用主—主(或者环形)复制结构以及使用blackhole存储引擎表的备库来进行模拟。

高性能MySQL:只读备库

使用双主结构和blackhole存 储引擎表模拟多主复制


        在这种配置中,两台主库拥有自己的数据,但也包含了对方的表,但是对方的表使用blackhole存储引擎以避免在其中存储实际数据。备库和共中任意一个主库相连都可以。备库不使用blackhole存储引擎,因此其对两个主库而言都是有效的。


        事实上并不一定需要主—主拓扑结构来实现,可以简单地将server1复制到server2,再从server2复制到备库。如果在server2上为从server1上复制的数据使用blackhole存储引擎,就不会包含任何server1的数据。


另一种模拟多主复制的方法


        这些配置方法常常会碰到-些常见的问题,例如,更新冲突或者建表时明确指定存储引擎。另外一个选择是使用Continuent的Tungsten Replicator,我们会在后续部分讨论。





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

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

服务热线

+852-5764-9835

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