MySQL|一文解決主庫已有數據的主從複製
- 2021 年 5 月 12 日
- 筆記
主從複製配置方案和實際的場景有很多,在之前配置了主從庫都是全新的配置方案
在這一篇會配置主庫存在數據,然後配置主從複製
開始之前,先分享一套MySQL教程👇,小白入門或者學習鞏固都可以看👇
MySQL基礎入門-mysql教程-數據庫實戰(MySQL基礎+MySQL高級+MySQL優化+MySQL34道作業題)_嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibili
主從複製所需要的環境
【Docker】簡單介紹與安裝
【Docker】安裝MySQL8.0
【MySQL】使用docker配置主從複製(主庫和從庫都是全新的情況)
應用的場景
- 我們的項目已經運行了一段時間
- 發現從庫已經不夠用
- 需要添加的新的從庫
- 但是現在的主庫已經存在了很多的數據
- 下來咱們來實現一下這個配置方案
開始配置
可以看到以下三張圖
- 第一張是mysql-master主庫 存在kaka_test_master_slave
- 第二張是mysql_slave從庫 存在kaka_test_master_slave
- 第三張是mysql_slave1從庫 沒有kaka_test_master_slave
給mysql_master主庫添加一條數據測試mysql_slave是否已經開啟了主從複製
在這裡需要注意一下,我是在2020-4-8號配置的,然後把主機關閉了,就出現了主從複製重啟失敗
原因是主機的MASTER_LOG_FILE這個文件名發生了變化,修改一下,然後重啟主從複製即可
我們先在主機插入了一條數據id為6
然後去查看master-slave的數據情況(主從複製已經正常)
開始給mysql-slave1導入mysql-master的數據庫
配置有倆種方案
- 第一種是放棄主庫之前的數據,配置主從複製
- 第二種是複製主庫數據到mysql-slave1這個從庫,然後配置主從複製
在實際案例中,一般第一種情況很少使用,配置主從複製就是為了緩解讀寫讀的壓力。沒有了以前的數據那就沒什麼意義了.
所以本案例主要講第二種
由於為了演示方便所以就只準備了一張表
1. 把mysql-master的數據庫直接鎖住
1 flush tables with read lock;
2.查看主數據庫狀態,並查看file 和 position的值
3.備份數據庫
1 docker exec da30bacb60fd /usr/bin/mysqldump -u root --password=123456 kaka_test_master_slave > backup.sql
這個時候會報錯是因為我們在終端輸入的密碼
在mysql-master配置文件etc/my.cnf加入下面配置即可
然後在執行一下命令,就可以看到導出的mysql數據庫了
1 docker exec da30bacb60fd /usr/bin/mysqldump kaka_test_master_slave > backup.sql 2 3 # 或者 4 docker exec -it mysql-master mysqldump -uroot -p123456 kaka_test_master_slave > kaka.sql
4.給master-slave1從庫創建數據庫
5.把備份數據庫複製到master-slave1容器中
1 # 複製文件到從機容器 2 docker cp backup.sql mysql-slave1:/ 3 4 # 進入到mysql中 5 mysql -u root -p 6 7 # 導入MySQL 8 source /home/kaka.sql;
配置主從複製
1. 跟之前的操作一樣,先給mysql-slave1的mysql配置文件配置 server_id
這裡配置的是3
或者直接set global server_id=3
2.給予從庫權限
這裡切記MASTER_LOG_POS這個參數,是在主庫 show master status 獲得的
1 CHANGE MASTER TO 2 -> MASTER_HOST='172.10.0.2', 3 -> MASTER_USER='master', 4 -> MASTER_PASSWORD='123456', 5 -> MASTER_LOG_FILE='mysql-bin.000001', 6 -> MASTER_LOG_POS=472;
3.開啟主從複製
1 start slave
4.查看主從複製狀態
1 show slave status\G
測試
先把主機數據庫解開,然後添加了一條數據 現在的id邊為7了
1 unlock tables;
看我們mysql-slave的數據
在來看mysql-slave1的數據
以上就是配置的全部過程
————————————————