MySQL多源复制
MySQL 5.7发布后,在复制方面有了很大的改进和提升。比如开始支持多源复制 (multi-source) 以及真正的支持多线程复制了。多源复制可以使用基于二进制日志的复制或者基于事务的复制。下面我们讲讲如何配置基于二进制日志的多源复制。 什么是多源复制 首先,我们需要清楚几种常见的复制模式: 1)一主一从 2)一主多从 3)级联复制 4)multi-master MySQL 5.7 之前只能实现一主一从、一主多从或者多主多从的复制。如果想实现多主一从的复制,只能使用 MariaDB,但是 MariaDB 又与官方的 MySQL 版本不兼容。 MySQL 5.7 开始支持了多主一从的复制方式,也就是多源复制。MySQL 5.7 版本相比之前的版本,无论在功能还是性能、安全等方面都已经有不少的提升。 首先,我们需要清楚 multi-master 与 multi-source 复制不是一样的。multi-master 复制通常是环形复制,你可以在任意主机上将数据复制给其他主机。 multi-source 是不同的。简单的说,多源复制就是将多个主库同步到一个从库上面,从而增加从的利用率,节省了机器。如下图: 多源复制使用场景 使用多源复制的必要条件 不管是使用基于二进制日志的复制或者基于事务的复制,要开启多源复制功能必须需要在从库上设置 master-info-repository 和 relay-log-info-repository 这两个参数。 这两个参数是用来存储同步信息的,可以设置的值为 FILE 和 TABLE ,默认值是 FILE。比如 master-info 就保存在 master.info 文件中, relay-log-info 保存在 relay-log.info 文件中,如果服务器意外关闭,正确的 relay-log-info 没有来得及更新到 relay-log.info 文件,这样会造成数据丢失。 为了数据更加安全,通常设为 TABLE。这些表都是 innodb 类型的mssql复制,支持事务。相对文件存储安全得多。在 MySQL 库下可以看见这两个表信息,分别是 mysql.slave_master_info 和 mysql.slave_relay_log_info。 这两个参数也是可以动态调整的。 (编辑:通辽站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |