mariadb 10 多源複製(Multi-source replication) 業務使用場景分析,及使用方法

mariadb 10 多源複製(Multi-source replication) 業務使用場景分析,及使用方法

官方mysql一個slave只能對應一個master,mariadb 10開始支持多源複製,一個slave能夠有多個master,分別從各自的master複製不一樣的DB。mysql

這個特性能夠用在OLAP環境中,傳統電商DB都是拆了再拆,分庫分表,sharding,而OLAP環境或者大數據平臺環境,一般須要各類數據的聚合,多個平臺多個DB數據的複合查詢,而這些數據分散在各個庫中,怎麼辦了,固然經過應用程序能夠實現聚合,但又沒有更簡單的方法,好比直接對各個server上的庫,進行表字段的關聯了。Mysql沒有oracle的DBLINk的功能,而mysql雖然有federated引擎,但不太靠譜,並且麻煩,性能怎麼樣不可預知。sql

這個時候,mariadb的多源複製功能的優點就體現出來了。直接把多個server的db,複製到同一個slave上,全部庫都有,想怎麼關聯就怎麼關聯。數據庫

其餘使用場景:api

  • 兩個獨立的系統,經過接口,好比restful api或者soap,進行接口數據傳遞,常常有兩邊通信數據不一致的場景,怎麼覈查數據了。除了查接口日誌,可使用多源複製,直接寫sql關聯兩個庫的通信數據,究竟是發送方傳遞數據仍是接受方接收數據有問題,就很明顯了。restful

  • DBA能夠在同一個DB SERVER上查數,不用到各個server分別查數。oracle

  • 備份方便,集中在這臺多源複製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/rest

傳統複製模式改多源複製:
  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=189492612;
  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 若不加前綴,就是忽略全部同名的數據庫,其餘變量類推。

相關文章
相關標籤/搜索