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