1. 程式人生 > 其它 >MySQL8.0.26傳統主從複製(保姆式文件)

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