mariadb 10 多源複製(Multi-source replication) 業務使用場景分析,及使用方法
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/
傳統複製模式改多源複製:
stop slave ,show slave status 檢視停止位置
reset slave all;
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;
start slave 'conn_mall';
show all slaves status \G 或者show slave 'conn_mall' status \G
新增加一個複製源:
源端匯出 mysqldump --master-data=2
slave端匯入
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;
start slave 'conn_erp';
傳統複製模式-》多源複製的命令變化
reset slave -> reset slave 'conn_erp',多個連線源名字
start slave -> start slave 'connection_name' 或者start all slaves
show slave status -> show slave 'conn_mall' status,或者 show all slaves status檢視所有的slave連線狀態
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
若不加字首,就是忽略所有同名的資料庫,其他變數類推。
參考:
官方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/
傳統複製模式改多源複製:
stop slave ,show slave status 檢視停止位置
reset slave all;
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;
start slave 'conn_mall';
show all slaves status \G 或者show slave 'conn_mall' status \G
新增加一個複製源:
源端匯出 mysqldump --master-data=2
slave端匯入
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;
start slave 'conn_erp';
傳統複製模式-》多源複製的命令變化
reset slave -> reset slave 'conn_erp',多個連線源名字
start slave -> start slave 'connection_name' 或者start all slaves
show slave status -> show slave 'conn_mall' status,或者 show all slaves status檢視所有的slave連線狀態
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
若不加字首,就是忽略所有同名的資料庫,其他變數類推。
參考:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-1979175/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL5.6 -> MySQL5.7 跨版本多源複製(Multi-Source Replication)MySql
- Redis replication主從複製原理及配置Redis
- 資料分析:複雜業務場景下,量化評估流程
- MySQL 多源複製MySql
- Redis 主從複製(Replication)Redis
- 理解 MySQL(3):複製(Replication)MySql
- mysql 5.7多源複製MySql
- HDFS應用場景、原理、基本架構及使用方法概述架構
- Setup MariaDB Master/Slave Replication for Docker MariaDBASTDocker
- mysql replication複製錯誤(zt)MySql
- MySQL 5.7搭建多源複製MySql
- MySQL 5.7.9的多源複製MySql
- MariaDB GTID 複製同步
- mysql replication /mysql 主從複製原理MySql
- 業務流程場景
- Netty的原始碼分析和業務場景Netty原始碼
- MYSQL並行複製(parallel replication部署篇)MySql並行Parallel
- Redis 5種資料結構 及使用場景分析Redis資料結構
- 什麼業務場景適合使用Redis?Redis
- 不同業務場景使用不同的map
- 如何設定 MariaDB 主主複製
- HBase 寫吞吐場景資源消耗量化分析及優化優化
- HBase寫吞吐場景資源消耗量化分析及優化優化
- MySQL Replication的複製執行緒介紹MySql執行緒
- 學習Advanced Replication(高階複製) -zt
- 深度分析Redis分散式鎖在電商超賣業務場景下的使用Redis分散式
- MySQL 5.7 多主一從(多源複製)同步配置MySql
- mysql 5.7 多主一從的多源複製搭建MySql
- ThreadLocal的使用場景分析thread
- fishhook使用場景&原始碼分析Hook原始碼
- 【Mysql】Mysql5.7的多源複製搭建MySql
- MySQL 5.7.9多源複製報錯修復MySql
- Mariadb之半同步複製叢集配置
- Mysql(Mariadb)資料庫主從複製MySql資料庫
- 1688 複雜業務場景下的 Serverless 提效實踐Server
- MariaDB 10之並行複製–延遲測試結果薦並行
- MySQL 5.7組複製(group replication)的要求和限制MySql
- MySQL 5.7.17 組複製(group replication)的要求和限制MySql