Asynchronous?Replication?Automatic failover
創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷策劃、微信平臺(tái)小程序開(kāi)發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開(kāi)發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立10多年以來(lái),已經(jīng)為上千三輪攪拌車各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)?,F(xiàn)在,服務(wù)的上千客戶與我們一路同行,見(jiàn)證我們的成長(zhǎng);未來(lái),我們一起分享成功的喜悅。
其原理是在一條異步復(fù)制通道上配置多個(gè)可用復(fù)制源,當(dāng)某個(gè)復(fù)制源不可用時(shí)(宕機(jī)、復(fù)制鏈路中斷),且 slave 的 IO 線程嘗試重連無(wú)效,自動(dòng)根據(jù)權(quán)重選擇新的源繼續(xù)同步。
準(zhǔn)備一個(gè) MGR 集群和單實(shí)例,模擬復(fù)制鏈路切換,當(dāng) primary 故障,slave 自動(dòng)切換到其他節(jié)點(diǎn)。dbdeployer?deploy?replication?--topology=group?8.0.22?--single-primarydbdeployer deploy single 8.0.22
2. 在從機(jī)上建立指向 MGR 主節(jié)點(diǎn)的復(fù)制通道,
change master to master_user='msandbox',master_password='msandbox', master_host='127.0.0.1',master_auto_position=1,source_connection_auto_failover=1,master_port=23223,master_retry_count=6,master_connect_retry=10 for channel 'mgr-single';
在 master_retry_count 和 master_connect_retry 的設(shè)置上要考慮嘗試重連多久才切換復(fù)制源。
3. 在從機(jī)上配置 asynchronous connection auto failover
配置 asynchronous connection auto failover 的兩個(gè)函數(shù):
asynchronous_connection_failover_add_source(channel-name,host,port,network-namespace,weight)
asynchronous_connection_failover_delete_source(channel-name,host,port,network-namespace)
權(quán)重值大的被優(yōu)先級(jí)選擇,可以配合MGR的選舉權(quán)重配置 asynchronous_connection_failover 的權(quán)重。當(dāng) MGR 節(jié)點(diǎn)切換,異步復(fù)制也能切換到新的主節(jié)點(diǎn)。
SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23223,null,100); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23224,null,80); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23225,null,50);start?slave?for?channel?'mgr-single';
4. 檢查異步復(fù)制通道是否啟用 failover。
mysql SELECT CHANNEL_NAME, SOURCE_CONNECTION_AUTO_FAILOVER FROM performance_schema.replication_connection_configuration; +--------------+---------------------------------+| CHANNEL_NAME | SOURCE_CONNECTION_AUTO_FAILOVER |+--------------+---------------------------------+|?mgr-single?? |??1??????????????????????????????|+--------------+---------------------------------+1 row in set (0.01 sec
5. 把 MGR 的 primary 節(jié)點(diǎn) kill 掉,這個(gè)從節(jié)點(diǎn)會(huì)在嘗試幾輪重連失敗后自動(dòng)切換到次權(quán)重的復(fù)制源,其日志中會(huì)輸出切換信息。
注意:當(dāng)主節(jié)點(diǎn)故障,一旦復(fù)制鏈路成功 failover 后,在新的復(fù)制鏈路沒(méi)有故障時(shí),如果原主節(jié)點(diǎn)恢復(fù),是不會(huì)回切的。如果當(dāng)前復(fù)制鏈路發(fā)生故障,會(huì)再次選擇權(quán)重高的進(jìn)行切換
-+-+-+-+-+-+-+-+-+-+-+-
-+-+mysql的主從配置+-+-
-+-+-+-+-+-+-+-+-+-+-+-
#############################################################################
常用命令
1.安裝一個(gè)mysqld服務(wù)
mysqld??install??
2.開(kāi)啟mysql服務(wù)????????關(guān)閉mysql服務(wù)??
net?start?mysql??????net?stop?mysql
2.開(kāi)啟一個(gè)?mysql?的?3307端口
命令行?進(jìn)入解壓目錄\bin目錄下
解壓目錄\bin?mysql?-uroot??-p??-P3307?-h127.0.0.1
-u?用戶名
-p密碼
-P端口
-h網(wǎng)址
#啟動(dòng)從庫(kù)
Start?slave
#停止從庫(kù)
Stop?slave
#############################################################################
開(kāi)始
用一臺(tái)電腦測(cè)試
先在本電腦上安裝一個(gè)mysql(集成的也行)
解壓文件
然后解壓另一個(gè)mysql到電腦目錄
》》》》》1.
在解壓目錄創(chuàng)建一個(gè)mysql.ini
把一下文檔寫進(jìn)去配置一個(gè)端口號(hào)為3307
#mysqld
[mysqld]
port=3307
basedir=D:\mysqlsever?????????#D:\mysqlsever?改成你解壓目錄
datadir=D:\mysqlsever\data????#D:\mysqlsever?改成你解壓目錄
安裝一個(gè)mysqld服務(wù)????mysqld??install
開(kāi)啟mysql服務(wù)?????????net?start?mysql
不能正常啟動(dòng)請(qǐng)查看配置
》》》》2.
#主庫(kù)3306
在命令行或者
grant?權(quán)限?on?數(shù)據(jù)庫(kù)對(duì)象?to?用戶
GRANT?all?privileges?REPLICATION?SLAVE,RELOAD,SUPER?ON?*.*
TO?mysql_backup1@'*'
IDENTIFIED?BY?'123456'with?grant?option;
flush?privileges;
》》》3.
在主庫(kù)運(yùn)行???SHOW?MASTER?STATUS???????//運(yùn)行后查看File和Postion
如??File?mysql-bin.000002???Postion?120
在從庫(kù)運(yùn)行??
CHANGE?MASTER?TO?master_host?=?'127.0.0.1',
master_user?=?'mysql_backup',
master_password?=?'123456',
master_log_file?=?'mysql-bin.000001',#看上面的File??從庫(kù)對(duì)照主庫(kù)寫
master_log_pos?=?4791;#看上面的Postion????從庫(kù)對(duì)照主庫(kù)寫
如果報(bào)錯(cuò)就停止就重新運(yùn)行
#啟動(dòng)從庫(kù)
Start?slave
#停止從庫(kù)
Stop?slave
在從庫(kù)運(yùn)行??Show?slave?status
Slave_IO_Running
Slave_SQL_Running
兩個(gè)字段全部是是Yes基本上就成功了
測(cè)試
在主庫(kù)上建立一個(gè)表??在從庫(kù)上刷新
############################################################################
當(dāng)提到大數(shù)據(jù),高并發(fā)。大家都會(huì)想到分布式,集群。
那么兩者都是用來(lái)處理大批量數(shù)據(jù)操作的,其工作原理是有很大區(qū)別的,分布式會(huì)縮短單個(gè)任務(wù)的執(zhí)行時(shí)間來(lái)提升工作效率,而集群強(qiáng)調(diào)的是提高單位時(shí)間內(nèi)執(zhí)行操作數(shù)的增加來(lái)提高效率。
更簡(jiǎn)單的來(lái)說(shuō),分布式是將步驟分到每臺(tái)電腦上,不考慮依賴關(guān)系。
集群方案是指幾個(gè)任務(wù)同時(shí)在處理。