MySQL8.0.26傳統主從複製(保姆式文件)
第13章 MySQL主從複製-上(老男孩Linux雲端計算MySQL)
1. 介紹
需要2臺及以上節點,通過binlog回放實現資料複製同步。
搭建步驟:
https://www.processon.com/mindmap/60813d46e401fd53c7b675cf
2. 傳統複製 (Classic)
2.1 複製前提(搭建過程)
a. 準備2個以上MySQL例項
db01 10.0.0.51(內網)
db02 10.0.0.52
b. 主庫開啟binlog日誌。
mysql> select @@log_bin;
mysql> select @@log_bin_basename;
c.建立複製使用者並授權
mysql> create user repl@'10.0.0.%' identified with mysql_native_password by '123';
mysql> grant replication slave on *.* to repl@'10.0.0.%';
d.確保主從環境server_id和server_uuid不同
1)檢視
mysql> select @@server_id;
mysql> select @@server_uuid;
2)修改從庫server_id
vim /etc/my.cnf
server_id=2
3)修改從庫server_uuid
rm -f /data/3306/data/auto.cnf
/etc/init.d/mysqld restart
4)確保兩邊都reset master;讓環境乾淨,減少干擾
特別是防止GTID影響
e. 同步的資料庫版本最好一致。
f. 從庫的資料同步(mysqldump xtrabackup clone plugin 停庫CP)。
========================================================
1)主資料庫鎖表
mysql> flush table with read lock; ##視窗不能關.
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 | 156 | | | |
+---------------+----------+--------------+------------------+-------------------+
2)備份主庫
mysqldump -uroot -poldboy123 -A --master-data=2 --single-transaction -R -E --triggers --max_allowed_packet=64M|gzip>/data/backup/master_`date +%F`.sql.gz
3)主資料庫解鎖
mysql> unlock tables;
4)拷貝到從庫
scp /data/backup/master_`date +%F`.sql.gz 10.0.0.52:/tmp
5)從庫恢復資料
gzip -d /tmp/master_2021-12-19.sql.gz
mysql -uroot -poldboy123</tmp/master_2021-12-19.sql ##如果有錯,刪除/tmp/master_2021-12-19.sql第一行.
6)從庫指定連線引數以及位置點
CHANGE MASTER TO
MASTER_HOST='10.0.0.51',
MASTER_USER='repl',
MASTER_PASSWORD='123',
MASTER_PORT=3306,
MASTER_LOG_FILE='binlog.000001',
MASTER_LOG_POS=156,
MASTER_CONNECT_RETRY=10;
###5.7以前以前語句,寫到master.info檔案裡.5.7及以後寫到表裡
幫助:
help CHANGE MASTER TO
7)啟動專用複製執行緒 start slave;
mysql> start slave;
mysql> show slave status \G
成功標誌:兩個Yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Or from MySQL 8.0.22:
mysql> STOP REPLICA;
mysql> SHOW REPLICA STATUS\G
2.2 傳統主從複製原理
1.5.6兩種複製方式
2.主庫開啟binlog日誌,從庫獲取binlog日誌,在資料庫裡非同步回放來實現的.
3.複製的時候有3個執行緒
2.2.1 涉及到的執行緒
# 主庫執行緒
binlog dump執行緒,投遞binlog。
作用:
a. 與從庫進行互動
b. 監控binlog的變化
c. 投遞binlog給從庫
監控:
show processlist;
##Binlog Dump | 1647 | Source has sent all binlog to replica; waiting for more updates
# 從庫執行緒
IO執行緒 :
a. 連線主庫
b. 和主庫的Dump THREAD互動
c. 接收和儲存主庫的binlog日誌 ,儲存到relaylog(中繼日誌)中
SQL執行緒
a. 回放relaylog中的日誌到資料庫。
b.記錄回放的位置到relay-info.log中
監控:
show slave status \G
2.2.2 涉及到的檔案
# 主庫:
binlog:二進位制日誌。
# 從庫:
relaylog :中繼日誌,從庫用來臨時儲存接收到的binlog檔案。
master.info: 連線主庫的資訊(ip、port、user、password、已經獲取的binlog位置點)
5.7以上在表中,5.7以前是磁碟檔案。
relay-log.info:儲存SQL執行緒回放過的日誌資訊。
2.2.3 畫圖說明主從複製原理 ******
本文來自部落格園老男孩的部落格,作者:老男孩老師,轉載請務必註明原文連結:https://www.cnblogs.com/oldboy666/p/15728358.html