初識(shí)MariaDB之5——主從復(fù)制原理及部署-創(chuàng)新互聯(lián)

一、原理簡(jiǎn)介

目前創(chuàng)新互聯(lián)已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、上猶網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

當(dāng)前主流的數(shù)據(jù)庫(kù)為了保證數(shù)據(jù)一致性,都采用支持事務(wù)類型的數(shù)據(jù)存儲(chǔ)引擎,如innodb等,當(dāng)一個(gè)事務(wù)提交后先寫到事務(wù)日志中,在進(jìn)行數(shù)據(jù)修改,并且將對(duì)數(shù)據(jù)產(chǎn)生任何影響的語(yǔ)句都記錄在二進(jìn)制日志中,主從復(fù)制就是基于二進(jìn)制日志實(shí)現(xiàn)的。

初識(shí)MariaDB之5——主從復(fù)制原理及部署初識(shí)MariaDB之5——主從復(fù)制原理及部署

主從同步的工作流程為:

1.主節(jié)點(diǎn)任何的數(shù)據(jù)修改在binlog寫入binlog中

2.從節(jié)點(diǎn)通過(guò)I/O thead線程發(fā)起請(qǐng)求

3.主節(jié)點(diǎn)通過(guò)I/O dump thread線程發(fā)送binlog中的內(nèi)容

4.從節(jié)點(diǎn)通過(guò)I/O thead線程將主節(jié)點(diǎn)binlog中的內(nèi)容寫入本地relaylog中

5.從節(jié)點(diǎn)通過(guò)sql thread線程將relaylog中的內(nèi)容在本地replay

整個(gè)過(guò)程中需要注意的地方:

1.主節(jié)點(diǎn)必須開(kāi)啟binlog,從節(jié)點(diǎn)必須開(kāi)啟relay_log

2.每臺(tái)mysql服務(wù)器必須有唯一的server_id

3.為避免從服務(wù)器上進(jìn)行寫操作,從服務(wù)器要開(kāi)啟read-only選項(xiàng),但該選項(xiàng)對(duì)super用戶無(wú)效,mysql5.7之后新增了一個(gè)super_read_only選項(xiàng)

4.binlog_format必須是row格式(binlog_do_db和binlog_ignore_db不支持statement格式)

二、操作步驟

本次實(shí)驗(yàn)使用CentOS7.4系統(tǒng),5.5.56-MariaDB,具體操作步驟如下:

1.主節(jié)點(diǎn)操作步驟

(1)啟動(dòng)主節(jié)點(diǎn)的mysql服務(wù),開(kāi)啟binlog,server_id設(shè)置為10,binlog_format設(shè)置為row

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

skip_name_resolve=ON

log_bin=mysql-binlog

slow_query_log=ON

server-id=10

innodb_file_per_table=ON

binlog_format=ROW

(2)導(dǎo)入一個(gè)數(shù)據(jù)庫(kù)

[root@host3 ~]# mysql < hellodb.sql

(3)創(chuàng)建一個(gè)主從復(fù)制的賬號(hào)

MariaDB [mysql]> grant replication slave on *.* to 'bak'@'172.16.10.%' identified by 'bakpass';

MariaDB [mysql]> flush privileges;

(4)備份主節(jié)點(diǎn)數(shù)據(jù)庫(kù),目的是讓從節(jié)點(diǎn)和此時(shí)的主節(jié)點(diǎn)保持一致,使用--master-data=2選項(xiàng)記錄并注銷此時(shí)主節(jié)點(diǎn)使用的bin_log日志及位置

[root@host3 ~]# mysqldump --single-transaction --databases hellodb --master-data=2 > a.sql

初識(shí)MariaDB之5——主從復(fù)制原理及部署初識(shí)MariaDB之5——主從復(fù)制原理及部署

(5)將備份復(fù)制到從節(jié)點(diǎn),至此主節(jié)點(diǎn)操作完成

[root@host3 ~]# scp a.sql root@172.16.10.40:/tmp/

2.從節(jié)點(diǎn)操作步驟

(1)啟動(dòng)從節(jié)點(diǎn)的mysql服務(wù),啟動(dòng)relaylog日志,更改serverid

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

skip_name_resolve=ON

relay_log=mysql-relaylog

relay_log_index=mysql-relaylog

read_only=ON

relay_log_purge=ON

slow_query_log=ON

server-id=20

innodb_file_per_table=ON

(2)恢復(fù)主節(jié)點(diǎn)備份的數(shù)據(jù)庫(kù),確認(rèn)主從數(shù)據(jù)庫(kù)數(shù)據(jù)一致

[root@host4 tmp]# mysql < a.sql

(3)指定主服務(wù)器及主服務(wù)器當(dāng)前的binlog日志和position

MariaDB [hellodb]> change master to

  -> master_host='172.16.10.30',

  -> master_user='bak',

  -> master_password='bakpass',

  -> master_port=3306,

  -> master_log_file='mysql-binlog.000004',

  -> master_log_pos=7734,

  -> master_connect_retry=10;

(4)啟動(dòng)從節(jié)點(diǎn)(可以指啟動(dòng)指定線程類型,不指定為都啟動(dòng))

MariaDB [hellodb]> start slave [IO_THREAD | SQL_THREAD];

(5)查看從節(jié)點(diǎn)狀態(tài)(Slave_IO_Running和Slave_SQL_Running顯示Yes成功)

MariaDB [(none)]> show slave status \G

*************************** 1. row ***************************

Master_Log_File: mysql-binlog.000004

Read_Master_Log_Pos: 7734

Relay_Log_File: mysql-relaylog.000002

Relay_Log_Pos: 532

Relay_Master_Log_File: mysql-binlog.000004

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Exec_Master_Log_Pos: 7734

選項(xiàng)說(shuō)明:

Read_Master_Log_Pos 讀取主節(jié)點(diǎn)binlog的position位置

Exec_Master_Log_Pos 執(zhí)行主節(jié)點(diǎn)binlog的position位置

三、效果驗(yàn)證

1.在主節(jié)點(diǎn)查看從節(jié)點(diǎn)

MariaDB [hellodb]> show slave hosts;

初識(shí)MariaDB之5——主從復(fù)制原理及部署初識(shí)MariaDB之5——主從復(fù)制原理及部署

2.主節(jié)點(diǎn)刪除一行數(shù)據(jù),查看此時(shí)的position位置

MariaDB [hellodb]> delete from students where stuid=23;

初識(shí)MariaDB之5——主從復(fù)制原理及部署初識(shí)MariaDB之5——主從復(fù)制原理及部署

3.在從節(jié)點(diǎn)確認(rèn)讀取與執(zhí)行主節(jié)點(diǎn)binlog的position是否正常

初識(shí)MariaDB之5——主從復(fù)制原理及部署初識(shí)MariaDB之5——主從復(fù)制原理及部署

補(bǔ)充說(shuō)明:

所謂雙主就是每個(gè)節(jié)點(diǎn)上都啟用binlog和relaylog,相互指向?qū)Ψ?,同時(shí)建議開(kāi)啟log_slave_updates=ON選項(xiàng),讓同步做的所有操作在本地binlog日志中保存,此時(shí)server_id就變得非常重要,節(jié)點(diǎn)間就是通過(guò)server_id判斷該操作是否是自身結(jié)點(diǎn)產(chǎn)生,生產(chǎn)中不建議使用雙主模型,會(huì)造成數(shù)據(jù)不一致,此時(shí)只能放棄一個(gè)節(jié)點(diǎn)以另一個(gè)節(jié)點(diǎn)為準(zhǔn)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

標(biāo)題名稱:初識(shí)MariaDB之5——主從復(fù)制原理及部署-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://muchs.cn/article42/dddhhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、App設(shè)計(jì)域名注冊(cè)、商城網(wǎng)站外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)