您好,登錄后才能下訂單哦!
這篇文章主要介紹“MYSQL增加從庫的方法是什么”,在日常操作中,相信很多人在MYSQL增加從庫的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MYSQL增加從庫的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
常見的主從架構:
一主一從:一個 Master,一個 Slave
一主多從:一個 Master,多個 Slave
具體,參考下圖:
MySQL 在主從同步時,其底層實現細節又是什么?為此后分析主從延遲原因以及優化方案,做好理論準備。
總結來說,MySQL 的主從復制:異步單線程。
Master
上 1 個IO線程
,負責向Slave傳輸 binary log
(binlog
)
Slave上 2 個線程:IO 線程
和執行SQL的線程
,其中:
IO線程
:將獲取的日志信息,追加到relay log上;
執行SQL的線程
:檢測到relay log中內容有更新,則在Slave上執行sql;
特別說明:MySQL 5.6.3 開始支持「
多線程
的主從復制
」,一個數據庫
一個線程
,多個數據庫
可多個線程
。
完整的 Master & Slave 之間主從復制過程:
需求:目前我的master上有一個數據庫ucenter,需要為其增加一臺slave(目前有一臺slave)
分析:
我這里有一個前一天的4:00的數據庫備份。
有一臺已存在的ucenter的slave
重點是尋找binlog的時間點
操作:
1、在slave機器上配置slave信息,修改mysql.cfg配置并重啟slave數據庫
在[mysqld]中添加
replicate-do-db = ucenter #同步的數據庫名字 slave-skip-errors=all #同步是忽略錯誤 server-id = 1112 #和master與其他slave保持不通
2、查找數據庫前一天的備份,將其copy到新增的slave機器上,并導庫
[root@ucenter_slave /data]# mysql ucenter < ucenter_20171102.sql[root@ucenter_slave /data]# du -sh ucenter_20171102.sql 24G ucenter_20171102.sql
3、定位binlog時間戳(重點)
在master上查找binlog
[root@Ucenter /data/mysqldata]# ll -t *bin* -rw-rw---- 1 mysql mysql 30709744 Nov 2 21:32 mysql-bin.000268 -rw-rw---- 1 mysql mysql 171 Nov 2 19:41 mysql-bin.index -rw-rw---- 1 mysql mysql 1021101094 Nov 2 19:41 mysql-bin.000267 -rw-rw---- 1 mysql mysql 1073742415 Oct 30 06:07 mysql-bin.000266 -rw-rw---- 1 mysql mysql 1073742062 Oct 26 12:03 mysql-bin.000265 -rw-rw---- 1 mysql mysql 1073742636 Oct 22 19:21 mysql-bin.000264 -rw-rw---- 1 mysql mysql 1073741961 Oct 18 22:49 mysql-bin.000263 -rw-rw---- 1 mysql mysql 1073742141 Oct 15 12:47 mysql-bin.000262 -rw-rw---- 1 mysql mysql 1073742284 Oct 11 10:18 mysql-bin.000261 -rw-rw---- 1 mysql mysql 1073742184 Oct 7 09:49 mysql-bin.000260
我的備份時間是2號4點開始,所以應該在mysql-bin.000267里查找2號4點前的pos,開始定位
[root@Ucenter /data/mysqldata]# /usr/local/mysql/bin/mysqlbinlog mysql-bin.000267 |grep '3:59:' |grep -v '13:59:' #171102 3:59:58 server id 21323 end_log_pos 824385760 Query thread_id=3023086382 exec_time=0 error_code=0 #171102 3:59:58 server id 21323 end_log_pos 824386335 Query thread_id=3023086386 exec_time=0 error_code=0 #171102 3:59:58 server id 21323 end_log_pos 824386363 Intvar #171102 3:59:58 server id 21323 end_log_pos 824386698 Query thread_id=3023086386 exec_time=0 error_code=0 #171102 3:59:58 server id 21323 end_log_pos 824387706 Query thread_id=3023086388 exec_time=0 error_code=0 #171102 3:59:58 server id 21323 end_log_pos 824387734 Intvar #171102 3:59:58 server id 21323 end_log_pos 824388209 Query thread_id=3023086388 exec_time=0 error_code=0 #171102 3:59:58 server id 21323 end_log_pos 824388534 Query thread_id=3023086398 exec_time=0 error_code=0
所以定位到最后 end_log_pos 824388534
4、在另外一臺slave上查看master.info
[root@LeduPass02/data/mysqldata]# cat master.info 15 mysql-bin.000268 11367810 192.168.100.70 omsync om@123 3306 60 0 0 0
5、在slave 配置slave,進行同步
在Slave上配置相關設置,以便告訴Slave如何去連接Master,這包括主機地址,登陸憑證等等
[root@ucenter_slave /data]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.1.51-Community-Server-log Source Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql (none)>change master to master_host='192.168.100.70',master_port=3306,master_user='omsync',master_password='om@123',master_log_file='mysql-bin.000267',master_log_pos=824388534;
開啟slave
mysql (none)>start slave;
查看slave狀態:
到此,關于“MYSQL增加從庫的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。