新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
mariadb10多源復(fù)制(Multi-sourcereplication)業(yè)務(wù)使用場(chǎng)景分析,及使用方法
mariadb 10 多源復(fù)制(Multi-source replication) 業(yè)務(wù)使用場(chǎng)景分析,及使用方法
官方MySQL一個(gè)slave只能對(duì)應(yīng)一個(gè)master,mariadb 10開始支持多源復(fù)制,一個(gè)slave可以有多個(gè)master,分別從各自的master復(fù)制不同的DB。
這個(gè)特性可以用在OLAP環(huán)境中,傳統(tǒng)電商DB都是拆了再拆,分庫(kù)分表,sharding,而OLAP環(huán)境或者大數(shù)據(jù)平臺(tái)環(huán)境,通常需要各種數(shù)據(jù)的聚合,多個(gè)平臺(tái)多個(gè)DB數(shù)據(jù)的復(fù)合查詢,而這些數(shù)據(jù)分散在各個(gè)庫(kù)中,怎么辦了,當(dāng)然通過(guò)應(yīng)用程序可以實(shí)現(xiàn)聚合,但又沒有更簡(jiǎn)單的方法,比如直接對(duì)各個(gè)server上的庫(kù),進(jìn)行表字段的關(guān)聯(lián)了。Mysql沒有oracle的DBLINk的功能,而mysql雖然有federated引擎,但不太靠譜,而且麻煩,性能怎么樣不可預(yù)知。
這個(gè)時(shí)候,mariadb的多源復(fù)制功能的優(yōu)勢(shì)就體現(xiàn)出來(lái)了。直接把多個(gè)server的db,復(fù)制到同一個(gè)slave上,所有庫(kù)都有,想怎么關(guān)聯(lián)就怎么關(guān)聯(lián)。
其他使用場(chǎng)景:
兩個(gè)獨(dú)立的系統(tǒng),通過(guò)接口,比如restful api或者soap,進(jìn)行接口數(shù)據(jù)傳遞,經(jīng)常有兩邊通訊數(shù)據(jù)不一致的場(chǎng)景,怎么核查數(shù)據(jù)了。除了查接口日志,可以使用多源復(fù)制,直接寫sql關(guān)聯(lián)兩個(gè)庫(kù)的通訊數(shù)據(jù),到底是發(fā)送方傳遞數(shù)據(jù)還是接受方接收數(shù)據(jù)有問(wèn)題,就很明顯了。
DBA可以在同一個(gè)DB SERVER上查數(shù),不用到各個(gè)server分別查數(shù)。
備份方便,集中在這臺(tái)多源復(fù)制slave上進(jìn)行備份,不用到各個(gè)server上去復(fù)制。
大數(shù)據(jù)抽數(shù),集中在一個(gè)DB 平臺(tái)上抽數(shù),不用分散到各個(gè)DB server上抽數(shù),當(dāng)然抽數(shù)多了,IO扛不住,上ssd或者pcie 卡吧。
下面講講使用方法,建議看mariadb 10 多源復(fù)制官方文檔吧,https://mariadb.com/kb/en/mariadb/mariadb-documentation/replication-cluster-multi-master/replication/multi-source-replication/
傳統(tǒng)復(fù)制模式改多源復(fù)制:
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
新增加一個(gè)復(fù)制源:
源端導(dǎo)出 mysqldump --master-data=2
slave端導(dǎo)入
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';
傳統(tǒng)復(fù)制模式-》多源復(fù)制的命令變化
reset slave -> reset slave 'conn_erp',多個(gè)連接源名字
start slave -> start slave 'connection_name' 或者start all slaves
show slave status -> show slave 'conn_mall' status,或者 show all slaves status查看所有的slave連接狀態(tài)
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'
多源復(fù)制環(huán)境下的replicate-... variables 變量問(wèn)題
可以在my.cnf replicate_ignore_db 前添加conn連接串前綴,比如 main_connection.replicate_ignore_db=ignore_database
若不加前綴,就是忽略所有同名的數(shù)據(jù)庫(kù),其他變量類推。
參考:http://segmentfault.com/a/1190000000607471
分享標(biāo)題:mariadb10多源復(fù)制(Multi-sourcereplication)業(yè)務(wù)使用場(chǎng)景分析,及使用方法
轉(zhuǎn)載來(lái)于:http://ef60e0e.cn/article/gioppd.html
官方MySQL一個(gè)slave只能對(duì)應(yīng)一個(gè)master,mariadb 10開始支持多源復(fù)制,一個(gè)slave可以有多個(gè)master,分別從各自的master復(fù)制不同的DB。
這個(gè)特性可以用在OLAP環(huán)境中,傳統(tǒng)電商DB都是拆了再拆,分庫(kù)分表,sharding,而OLAP環(huán)境或者大數(shù)據(jù)平臺(tái)環(huán)境,通常需要各種數(shù)據(jù)的聚合,多個(gè)平臺(tái)多個(gè)DB數(shù)據(jù)的復(fù)合查詢,而這些數(shù)據(jù)分散在各個(gè)庫(kù)中,怎么辦了,當(dāng)然通過(guò)應(yīng)用程序可以實(shí)現(xiàn)聚合,但又沒有更簡(jiǎn)單的方法,比如直接對(duì)各個(gè)server上的庫(kù),進(jìn)行表字段的關(guān)聯(lián)了。Mysql沒有oracle的DBLINk的功能,而mysql雖然有federated引擎,但不太靠譜,而且麻煩,性能怎么樣不可預(yù)知。
這個(gè)時(shí)候,mariadb的多源復(fù)制功能的優(yōu)勢(shì)就體現(xiàn)出來(lái)了。直接把多個(gè)server的db,復(fù)制到同一個(gè)slave上,所有庫(kù)都有,想怎么關(guān)聯(lián)就怎么關(guān)聯(lián)。
其他使用場(chǎng)景:
兩個(gè)獨(dú)立的系統(tǒng),通過(guò)接口,比如restful api或者soap,進(jìn)行接口數(shù)據(jù)傳遞,經(jīng)常有兩邊通訊數(shù)據(jù)不一致的場(chǎng)景,怎么核查數(shù)據(jù)了。除了查接口日志,可以使用多源復(fù)制,直接寫sql關(guān)聯(lián)兩個(gè)庫(kù)的通訊數(shù)據(jù),到底是發(fā)送方傳遞數(shù)據(jù)還是接受方接收數(shù)據(jù)有問(wèn)題,就很明顯了。
DBA可以在同一個(gè)DB SERVER上查數(shù),不用到各個(gè)server分別查數(shù)。
備份方便,集中在這臺(tái)多源復(fù)制slave上進(jìn)行備份,不用到各個(gè)server上去復(fù)制。
大數(shù)據(jù)抽數(shù),集中在一個(gè)DB 平臺(tái)上抽數(shù),不用分散到各個(gè)DB server上抽數(shù),當(dāng)然抽數(shù)多了,IO扛不住,上ssd或者pcie 卡吧。
下面講講使用方法,建議看mariadb 10 多源復(fù)制官方文檔吧,https://mariadb.com/kb/en/mariadb/mariadb-documentation/replication-cluster-multi-master/replication/multi-source-replication/
傳統(tǒng)復(fù)制模式改多源復(fù)制:
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
新增加一個(gè)復(fù)制源:
源端導(dǎo)出 mysqldump --master-data=2
slave端導(dǎo)入
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';
傳統(tǒng)復(fù)制模式-》多源復(fù)制的命令變化
reset slave -> reset slave 'conn_erp',多個(gè)連接源名字
start slave -> start slave 'connection_name' 或者start all slaves
show slave status -> show slave 'conn_mall' status,或者 show all slaves status查看所有的slave連接狀態(tài)
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'
多源復(fù)制環(huán)境下的replicate-... variables 變量問(wèn)題
可以在my.cnf replicate_ignore_db 前添加conn連接串前綴,比如 main_connection.replicate_ignore_db=ignore_database
若不加前綴,就是忽略所有同名的數(shù)據(jù)庫(kù),其他變量類推。
參考:http://segmentfault.com/a/1190000000607471
分享標(biāo)題:mariadb10多源復(fù)制(Multi-sourcereplication)業(yè)務(wù)使用場(chǎng)景分析,及使用方法
轉(zhuǎn)載來(lái)于:http://ef60e0e.cn/article/gioppd.html