Mysql主从复制原理以及实现
主從復(fù)制介紹:
????? 由于數(shù)據(jù)存儲(chǔ)是軟件和系統(tǒng)最重要的一部分,所以說如何做到數(shù)據(jù)安全、性能良好,就需要考慮很多的業(yè)務(wù)和技術(shù),而主從復(fù)制在Mysql數(shù)據(jù)庫使用方面,是不可缺少的一個(gè)重要方案,我們用主從復(fù)制方案主要實(shí)現(xiàn),讀寫分離實(shí)現(xiàn)負(fù)載均衡、實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)備份,甚至還可以將不同的業(yè)務(wù)分到不同的備份庫。
實(shí)現(xiàn)的原理:
Replication原理?
Mysql 的 Replication 是一個(gè)異步的復(fù)制過程,從一個(gè)MySQL節(jié)點(diǎn)(稱之為Master)復(fù)制到另一個(gè)MySQL節(jié)點(diǎn)(稱之Slave)。在 Master 與 Slave 之間的實(shí)現(xiàn)整個(gè)復(fù)制過程主要由三個(gè)線程來完成,其中兩個(gè)線程(SQL 線程和 I/O 線程)在 Slave 端,另外一個(gè)線程(I/O 線程)在 Master 端。?要實(shí)現(xiàn) MySQL 的 Replication ,首先必須打開 Master 端的 Binary Log,因?yàn)檎麄€(gè)復(fù)制過程實(shí)際上就是 Slave 從 Master 端獲取該日志然后再在自己身上完全順序的執(zhí)行日志中所記錄的各種操作。?
看上去MySQL的Replication原理非常簡(jiǎn)單,總結(jié)一下:?
* 每個(gè)從僅可以設(shè)置一個(gè)主。?
? * 主在執(zhí)行sql之后,記錄二進(jìn)制log文件(bin-log)。?
? * 從連接主,并從主獲取binlog,存于本地relay-log,并從上次記住的位置起執(zhí)行sql,一旦遇到錯(cuò)誤則停止同步。?
主要的架構(gòu)與方案:
Master-Slave?主從同步
?
Master-Slave-Slave? 一主多從(A->B->C)級(jí)聯(lián)方式
?
Master-Master?? 互為主備
Master-slave主從實(shí)現(xiàn)方案:
基本需求:
(1)??? 兩臺(tái)虛擬機(jī)
192.168.121.105? mysql5.6.30?RPM包 ??數(shù)據(jù)庫主? master
192.168.121.146? mysql5.6.30?二進(jìn)制包?? 數(shù)據(jù)庫從?? slave
(2)主要的配置
Master 的my.cnf 開啟bin-log日志將server-id設(shè)置為一個(gè)隨機(jī)數(shù)字,最好設(shè)置為IP之類的,從機(jī)可以不開啟二進(jìn)制日志,因?yàn)閺臋C(jī)不再做同步,如果還需要做同步時(shí),需要開啟此功能,同時(shí)需要注意的是需要將server-id也設(shè)置為一個(gè)數(shù)字不能和主機(jī)相同。
主庫的配置
從庫的配置
(3)在主庫中創(chuàng)建具有replication slave權(quán)限的賬戶,從庫用來數(shù)據(jù)同步。
連接主庫,并用授權(quán)語句授權(quán);
(4)還需要注意的是,當(dāng)主庫有大量數(shù)據(jù)時(shí),我們要將數(shù)據(jù)備份,手動(dòng)恢復(fù)到從庫,然后在做主從,而數(shù)據(jù)備份的時(shí)候還要對(duì)主庫鎖表,只讀,以防數(shù)據(jù)發(fā)生改變。
鎖表命令:
Flush??table?with?read?lock;?
(5)鎖表后查看主庫的二進(jìn)制日志文件名以及binlog日志偏移量,我們的數(shù)據(jù)將從這一點(diǎn)開始同步。
(6)登錄從庫配置從庫數(shù)據(jù)同步,以下的命令主要是將密碼端口等信息寫入到master.info文件。
CHANGE??MASTER?TO?MASTER_HOST='192.168.121.105',?MASTER_PORT=3306,MASTER_USER='rep',MASTER_PASSWORD='123123', MASTER_LOG_FILE="mysql-bin.000002",MASTER_LOG_POS=318;執(zhí)行完如果如果不報(bào)錯(cuò)時(shí),就可以開始數(shù)據(jù)同步。
在從庫上面執(zhí)行
start??slave;(7)執(zhí)行完畢后就需要查看是否同步成功,第一個(gè)yes 表示主機(jī)與從機(jī)間的同步,這兩個(gè)參數(shù)比較重要,只有這兩個(gè)參數(shù)都是正確的,我們才能數(shù)據(jù)同步。
(8)數(shù)據(jù)同步驗(yàn)證
在主庫建一個(gè)stu庫,再觀察從庫
?
轉(zhuǎn)載于:https://blog.51cto.com/dreamlinux/1835040
總結(jié)
以上是生活随笔為你收集整理的Mysql主从复制原理以及实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lnmp发送测试邮箱失败(亲测正解)
- 下一篇: 用Log Parser Studio分析