一、原理簡介
目前創(chuàng)新互聯(lián)已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務器托管、企業(yè)網(wǎng)站設(shè)計、上猶網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。當前主流的數(shù)據(jù)庫為了保證數(shù)據(jù)一致性,都采用支持事務類型的數(shù)據(jù)存儲引擎,如innodb等,當一個事務提交后先寫到事務日志中,在進行數(shù)據(jù)修改,并且將對數(shù)據(jù)產(chǎn)生任何影響的語句都記錄在二進制日志中,主從復制就是基于二進制日志實現(xiàn)的。
主從同步的工作流程為:
1.主節(jié)點任何的數(shù)據(jù)修改在binlog寫入binlog中
2.從節(jié)點通過I/O thead線程發(fā)起請求
3.主節(jié)點通過I/O dump thread線程發(fā)送binlog中的內(nèi)容
4.從節(jié)點通過I/O thead線程將主節(jié)點binlog中的內(nèi)容寫入本地relaylog中
5.從節(jié)點通過sql thread線程將relaylog中的內(nèi)容在本地replay
整個過程中需要注意的地方:
1.主節(jié)點必須開啟binlog,從節(jié)點必須開啟relay_log
2.每臺mysql服務器必須有唯一的server_id
3.為避免從服務器上進行寫操作,從服務器要開啟read-only選項,但該選項對super用戶無效,mysql5.7之后新增了一個super_read_only選項
4.binlog_format必須是row格式(binlog_do_db和binlog_ignore_db不支持statement格式)
二、操作步驟
本次實驗使用CentOS7.4系統(tǒng),5.5.56-MariaDB,具體操作步驟如下:
1.主節(jié)點操作步驟
(1)啟動主節(jié)點的mysql服務,開啟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)導入一個數(shù)據(jù)庫
[root@host3 ~]# mysql < hellodb.sql
(3)創(chuàng)建一個主從復制的賬號
MariaDB [mysql]> grant replication slave on *.* to 'bak'@'172.16.10.%' identified by 'bakpass';
MariaDB [mysql]> flush privileges;
(4)備份主節(jié)點數(shù)據(jù)庫,目的是讓從節(jié)點和此時的主節(jié)點保持一致,使用--master-data=2選項記錄并注銷此時主節(jié)點使用的bin_log日志及位置
[root@host3 ~]# mysqldump --single-transaction --databases hellodb --master-data=2 > a.sql
(5)將備份復制到從節(jié)點,至此主節(jié)點操作完成
[root@host3 ~]# scp a.sql root@172.16.10.40:/tmp/
2.從節(jié)點操作步驟
(1)啟動從節(jié)點的mysql服務,啟動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)恢復主節(jié)點備份的數(shù)據(jù)庫,確認主從數(shù)據(jù)庫數(shù)據(jù)一致
[root@host4 tmp]# mysql < a.sql
(3)指定主服務器及主服務器當前的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)啟動從節(jié)點(可以指啟動指定線程類型,不指定為都啟動)
MariaDB [hellodb]> start slave [IO_THREAD | SQL_THREAD];
(5)查看從節(jié)點狀態(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
選項說明:
Read_Master_Log_Pos 讀取主節(jié)點binlog的position位置
Exec_Master_Log_Pos 執(zhí)行主節(jié)點binlog的position位置
三、效果驗證
1.在主節(jié)點查看從節(jié)點
MariaDB [hellodb]> show slave hosts;
2.主節(jié)點刪除一行數(shù)據(jù),查看此時的position位置
MariaDB [hellodb]> delete from students where stuid=23;
3.在從節(jié)點確認讀取與執(zhí)行主節(jié)點binlog的position是否正常
補充說明:
所謂雙主就是每個節(jié)點上都啟用binlog和relaylog,相互指向?qū)Ψ剑瑫r建議開啟log_slave_updates=ON選項,讓同步做的所有操作在本地binlog日志中保存,此時server_id就變得非常重要,節(jié)點間就是通過server_id判斷該操作是否是自身結(jié)點產(chǎn)生,生產(chǎn)中不建議使用雙主模型,會造成數(shù)據(jù)不一致,此時只能放棄一個節(jié)點以另一個節(jié)點為準
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
標題名稱:初識MariaDB之5——主從復制原理及部署-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://aaarwkj.com/article42/dddhhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、App設(shè)計、域名注冊、商城網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容