一、雙機(jī)熱備的概念簡單說一下,就是要保持兩個(gè)數(shù)據(jù)庫的狀態(tài)自動同步。對任何一個(gè)數(shù)據(jù)庫的操作都自動應(yīng)用到另外一個(gè)數(shù)據(jù)庫,始終保持兩個(gè)數(shù)據(jù)庫中的數(shù)據(jù)一致。 這樣做有如下幾點(diǎn)好處:
網(wǎng)站設(shè)計(jì)制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺管理系統(tǒng);網(wǎng)站制作、成都做網(wǎng)站收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運(yùn)營了十多年的創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司。1. 可以做災(zāi)備,其中一個(gè)壞了可以切換到另一個(gè)。
2. 可以做負(fù)載均衡,可以將請求分?jǐn)偟狡渲腥魏我慌_上,提高網(wǎng)站吞吐量。 對于異地?zé)醾洌绕溥m合災(zāi)備。
二、mysql 主從備份工作原理
簡單的說就是把 一個(gè)服務(wù)器上執(zhí)行過的sql語句在別的服務(wù)器上也重復(fù)執(zhí)行一遍, 這樣只要兩個(gè)數(shù)據(jù)庫的初態(tài)是一樣的,那么它們就能一直同步。
MYSQL主從同步是在MySQL主從復(fù)制(Master-Slave Replication
)基礎(chǔ)上實(shí)現(xiàn)的,通過設(shè)置在Master
上的binlog
,使其處于打開狀態(tài);Slave
通過一個(gè)I/O
線程從Master
上讀取binlog
,然后傳輸?shù)?code>Slave的中繼日志中,然后使用SQL
線程讀取中繼日志,并應(yīng)用到自身數(shù)據(jù)庫中,從而實(shí)現(xiàn)主從數(shù)據(jù)同步功能。
有兩個(gè)服務(wù)器,演示了從一個(gè)主服務(wù)器(master)把數(shù)據(jù)同步到從服務(wù)器(slave)的過程。
對于一個(gè)mysql服務(wù)器,一般有兩個(gè)線程來負(fù)責(zé)復(fù)制和被復(fù)制。當(dāng)開啟復(fù)制這個(gè)開關(guān)之后(start slave)
1. 作為主服務(wù)器Master,會把自己的每一次改動都記錄到 二進(jìn)制日志 Binarylog 中。 (從服務(wù)器會負(fù)責(zé)來讀取這個(gè)log,然后在自己那里再執(zhí)行一遍。)
2. 作為從服務(wù)器Slave,會用master上的賬號登陸到master上,去讀取master的Binarylog, 然后寫入到自己的中繼日志Relaylog,然后自己的sql線程會負(fù)責(zé)讀取這個(gè)中繼日志,并執(zhí)行一遍。到這里主服務(wù)器上的更改就同步到從服務(wù)器上了。
在mysql上可以查看當(dāng)前服務(wù)器的主,從狀態(tài)。 其實(shí)就是當(dāng)前服務(wù)器的 Binary(作為主服務(wù)器角色)狀態(tài)和位置。以及其RelayLog(作為從服務(wù)器)的復(fù)制進(jìn)度。
三、復(fù)制的過程
該過程的第一部分就是master記錄二進(jìn)制日志。在每個(gè)事務(wù)更新數(shù)據(jù)完成之前,master在二日志記錄這些改變。MySQL將事務(wù)串行的 寫入二進(jìn)制日志,即使事務(wù)中的語句都是交叉執(zhí)行的。在事件寫入二進(jìn)制日志完成后,master通知存儲引擎提交事務(wù)。 下一步就是slave將master的binary log拷貝到它自己的中繼日志。首先,slave開始一個(gè)工作線程——I/O線程。I/O線程在master上打開一個(gè)普通的連接,然后開始binlog dump process。Binlog dump process從master的二進(jìn)制日志中讀取事件,如果已經(jīng)跟上master,它會睡眠并等待master產(chǎn)生新的事件。I/O線程將這些事件寫入中 繼日志。 SQL slave thread(SQL從線程)處理該過程的最后一步。SQL線程從中繼日志讀取事件,并重放其中的事件而更新slave的數(shù)據(jù),使其與master中的數(shù) 據(jù)一致。只要該線程與I/O線程保持一致,中繼日志通常會位于OS的緩存中,所以中繼日志的開銷很小。 此外,在master中也有一個(gè)工作線程:和其它MySQL的連接一樣,slave在master中打開一個(gè)連接也會使得master開始一個(gè)線程。復(fù)制 過程有一個(gè)很重要的限制——復(fù)制在slave上是串行化的,也就是說master上的并行更新操作不能在slave上并行操作。
實(shí)驗(yàn)
實(shí)驗(yàn)環(huán)境
server2 master
server3 slave
master上下載包
mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar
安裝數(shù)據(jù)庫
[root@server2~]# yum install -y mysql-community-client-5.7.17-1.el6.x86_64.rpm mysql-community-common-5.7.17-1.el6.x86_64.rpm mysql-community-libs-5.7.17-1.el6.x86_64.rpm mysql-community-libs-compat-5.7.17-1.el6.x86_64.rpm mysql-community-server-5.7.17-1.el6.x86_64.rpm
[root@server3 ~]# yum install -y *
修改mysql的配置文件
[root@server2 ~]# vim /etc/my.cnf
server-id = n | 給服務(wù)器分配一個(gè)唯一的ID編號 |
log-bin [= filename] | 把對數(shù)據(jù)進(jìn)行修改的所有SQL命令(也就是INSERT、UPDATE和DELETE命令)以二進(jìn)制格式記入日志(二進(jìn)制變更日志,binary update log)。這種日志的文件名是filename.n或默認(rèn)的hostname.n,其中n是一個(gè)6位數(shù)字的整數(shù)(日志文件按順序編號)。 |
開啟服務(wù)
修改slave配置文件
server-id = n | 給服務(wù)器分配一個(gè)唯一的ID編號 |
[root@server3 ~]# vim /etc/my.cnf
開啟服務(wù)
查看密碼
安全配置向?qū)?/strong>
如下方法修改slave密碼
mysql> alter user root@localhost identified by 'LH=redhat123';
master上進(jìn)行授權(quán)
mysql> grant replication slave on *.* to cara@'192.168.122.13' identified by 'LH@redhat123' ; 用戶授權(quán)
mysql> flush privileges; 刷新
master授權(quán)后,slave可以遠(yuǎn)程登錄
master端查看
使 slave 與 master 建立連接,從而同步:
mysql> change master to master_host='192.168.122.12',master_user='cara',master_password='LH=redhat123',master_log_file='mysql-bin.000003',master_log_pos=1706;
slave端 mysql -p 登錄
查看
[root@server3 mysql]# pwd
/var/lib/mysql
[root@server3 mysql]# cat master.info
[root@server3 mysql]# cat server3-relay-bin.index
mysql> show slave status\G; 查看slave狀態(tài)
mysql> start slave; 開啟slave
創(chuàng)建庫westos,創(chuàng)建表usertb
在表中插入數(shù)據(jù)
更改密碼
刪除表中數(shù)據(jù)
[root@server2 mysql]# mysqlbinlog mysql-bin.000003 可查看master所做的操作
在slave上也可查看master上數(shù)據(jù)
GTID(Global Transaction ID)是對于一個(gè)已提交事務(wù)的編號,并且是一個(gè)全局唯一的編號。GTID實(shí)際上是由UUID+TID組成的。其中UUID是一個(gè)MySQL實(shí)例的唯一標(biāo) 識,保存在mysql數(shù)據(jù)目錄下的auto.cnf文件里。TID代表了該實(shí)例上已經(jīng)提交的事務(wù)數(shù)量,并且隨著事務(wù)提交單調(diào)遞增。下面是一個(gè)GTID的具 體形式:3E11FA47-71CA-11E1-9E33-C80AA9429562:23。
根據(jù)GTID可以知道事務(wù)最初是在哪個(gè)實(shí)例上提交的
GTID的存在方便了Replication的Failover
更簡單的實(shí)現(xiàn)failover,不用以前那樣在需要找log_file和log_Pos。
更簡單的搭建主從復(fù)制。
比傳統(tǒng)復(fù)制更加安全。
GTID是連續(xù)沒有空洞的,因此主從庫出現(xiàn)數(shù)據(jù)沖突時(shí),可以用添加空事物的方式進(jìn)行跳過。
master更新數(shù)據(jù)時(shí),會在事務(wù)前產(chǎn)生GTID,一同記錄到binlog日志中。
slave端的i/o線程將變更的binlog,寫入到本地的relay log中。
sql線程從relay log中獲取GTID,然后對比slave端的binlog是否有記錄。
如果有記錄,說明該GTID的事務(wù)已經(jīng)執(zhí)行,slave會忽略。
如果沒有記錄,slave就會從relay log中執(zhí)行該GTID的事務(wù),并記錄到binlog。
在解析過程中會判斷是否有主鍵,如果沒有就用二級索引,如果沒有就用全部掃描。
先關(guān)掉slave
修改配置文件/etc/my.cof
master
slave
重啟服務(wù)
更錄數(shù)據(jù)庫,查看
master
slave
change master to master_host='192.168.122.12',master_user='cara',master_password='LH=redhat123',master_auto_position=1;
--------------------------------------------------------------------master端--------------------------------------------------------------------
--------------------------------------------------------------------slave端--------------------------------------------------------------------
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章名稱:企業(yè)-MySQL主從備份-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://aaarwkj.com/article44/isjee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、商城網(wǎng)站、小程序開發(fā)、網(wǎng)站營銷、營銷型網(wǎng)站建設(shè)、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容