mariadb多源复制

,,,最近做慢sql优化,比较头疼,看到慢sql中全是一些选择,count(*)或者和这样的聚合统计的sql,由于本人的数据库就是传统的主从,或者一主多从,这样的慢sql直接在数据库上统计,对线上存在一定影响,而且由于多个db主从,统计一些相关数据也相对比较麻烦,所以决定搭建一台专门用来给运营或者聚合统计操作查询的多主从库,汇集线上数据,方便查询,也可以减少这些统计对线上库的影响!

,,搭建前,先说一下以前官方mysql版本都只支持一个大师向一个奴隶复制,而mariadb从10开始已经支持多个大师向一个奴隶复制.mariadb多源(主)复制适用场景:1)现在很多公司动不动就想分库分表,分表放在同一个实例还好说(但是这种情况下,相对于分区表,分表并没有多大优势吧),如果将分的表拆分到了不同的实例中,我们经常需要做一些汇总数据统计,没有中间件或者一定的程序代码是很难一次做到的,或者想要做线上两个不同的db之间的夸实例加入,这样的操作,如果有一个多主从库,有一份完整的数据,也会容易很多。2)备份,如果想要一份完整的线上数据备份,备份多主从库是个不错的选择!

,,,

,搭建环境:

192.168.190.128,master128(主1)

192.168.190.129,master129(主2)

192.168.190.130,,奴隶(从)

,,,,步骤一搭,建主要步骤相对于传统的主从没有特别打的差异,只是各别的命令会有差异。我这里因为master128,和master129都是有数据的,所以采取备份恢复的方式,先将两个主的数据汇总到从库当中:1。master128数据量比较大,采取xtrabackup备份方式,2。master129采用mydump,- - -主数据- b dbname1, dbname2……在all0414。sql,这种备份方式

,,,,步骤二,采用innobackupex将maser128的数据恢复到奴隶中,具体恢复步骤这里不说了,采用mysql - u, - p, & lt;all0414.sql的恢复方式将master129的数据恢复到奴隶中,129这里面数据库访问权限,需要单独提添加下!

,,,,步骤三,

修改主master128 MASTER_HOST=?92.168.190.128”, MASTER_USER=rep_user, MASTER_PASSWORD=?23456’, MASTER_PORT=3306, MASTER_LOG_FILE=mysql-bin.000015, MASTER_LOG_POS=335;,

修改主master129 MASTER_HOST=?92.168.190.129”, MASTER_USER=rep_user, MASTER_PASSWORD=?23456’, MASTER_PORT=3306, MASTER_LOG_FILE=mysql-bin.000008, MASTER_LOG_POS=486;,

,,,,,步骤四:开始,奴隶,“master128”;,开始从“master129”;,,显示所有的奴隶状态\ G;

 mariadb多源复制

 mariadb多源复制

,,,,步骤五,上图可以看出同步正常,我们在不同的db名中插入数据验证同步情况,对于相同的数据库名,也是可以正常同步的,如果想要忽略同步,我们需要指定不同的master128。replicate_ignore_db=mysql,或者master129。replicate_ignore_db=mysql,如果不制定,直接指定replicate_ignore_db=mysql,则默认mysql都忽略!


,,命令不相同的地方:

,停止,所有,奴隶,,或者停止,奴隶maser128,,停止,奴隶“maser129”

,重置,奴隶“maser128”,所有的,,;,重置奴隶的maser129 all 

显示奴隶的master128状态\ G,,,显示奴隶的master129状态\ G,

显示所有的奴隶状态\ G;



其他不同的地方参考官方文档:https://mariadb.com/kb/zh-cn/multi-source-replication/todo

,,,

,

才能

mariadb多源复制