视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mariadb10多源复制(Multi-sourcereplication)业务使用场景分_MySQL
2020-11-09 19:35:09 责编:小采
文档


MariaDB

mariadb 10 多源复制(Multi-source replication) 业务使用场景分析,及使用方法

官方mysql一个slave只能对应一个master,mariadb 10开始支持多源复制,一个slave可以有多个master,分别从各自的master复制不同的DB。

这个特性可以用在OLAP环境中,传统电商DB都是拆了再拆,分库分表,sharding,而OLAP环境或者大数据平台环境,通常需要各种数据的聚合,多个平台多个DB数据的复合查询,而这些数据分散在各个库中,怎么办了,当然通过应用程序可以实现聚合,但又没有更简单的方法,比如直接对各个server上的库,进行表字段的关联了。Mysql没有oracle的DBLINk的功能,而mysql虽然有federated引擎,但不太靠谱,而且麻烦,性能怎么样不可预知。

这个时候,mariadb的多源复制功能的优势就体现出来了。直接把多个server的db,复制到同一个slave上,所有库都有,想怎么关联就怎么关联。

其他使用场景:

  • 两个的系统,通过接口,比如restful api或者soap,进行接口数据传递,经常有两边通讯数据不一致的场景,怎么核查数据了。除了查接口日志,可以使用多源复制,直接写sql关联两个库的通讯数据,到底是发送方传递数据还是接受方接收数据有问题,就很明显了。

  • DBA可以在同一个DB SERVER上查数,不用到各个server分别查数。

  • 备份方便,集中在这台多源复制slave上进行备份,不用到各个server上去复制。

  • 大数据抽数,集中在一个DB 平台上抽数,不用分散到各个DB server上抽数,当然抽数多了,IO扛不住,上ssd或者pcie 卡吧。

  • 下面讲讲使用方法,建议看mariadb 10 多源复制官方文档吧,https://mariadb.com/kb/en/mariadb/mariadb-documentation/replication-cluster-multi-master/replication/multi-source-replication/

    传统复制模式改多源复制:
    1. stop slave ,show slave status 查看停止位置
    2. reset slave all;
    3. change master 'conn_mall' to master_host='master ip',
      MASTER_PORT=3306,master_user='', master_password='',
      master_log_file='mysql-bin.000036', master_log_pos=1492612;
    4. start slave 'conn_mall';
    5. show all slaves status /G 或者show slave 'conn_mall' status /G
    新增加一个复制源:
    1. 源端导出 mysqldump --master-data=2
    2. slave端导入
    3. change master 'conn_erp' to master_host='master ip',

      MASTER_PORT=3306,master_user='', master_password='',

      master_log_file='mysql-bin.000470', master_log_pos=215418341;

    4. start slave 'conn_erp';

    传统复制模式-》多源复制的命令变化
    1. reset slave -> reset slave 'conn_erp',多个连接源名字
    2. start slave -> start slave 'connection_name' 或者start all slaves
    3. show slave status -> show slave 'conn_mall' status,或者 show all slaves status查看所有的slave连接状态
    4. sql_slave_skip_couter -> stop slave 'connection_name',先指定连接源名称 set @@default_master_connection='connection_name';然后再set global sql_slave_skip_counter=1;最后start slave 'connection_name'
    多源复制环境下的replicate-... variables 变量问题

    可以在my.cnf replicate_ignore_db 前添加conn连接串前缀,比如 main_connection.replicate_ignore_db=ignore_database若不加前缀,就是忽略所有同名的数据库,其他变量类推。

    下载本文
    显示全文
    专题