概述
復(fù)制的常見應(yīng)用場景
主從復(fù)制實現(xiàn)基本原理
MySQL支持的復(fù)制類型
復(fù)制解決的問題
復(fù)制過程
主從復(fù)制失敗的原因
MYSQL8主從復(fù)制實現(xiàn)
關(guān)鍵點:主庫
創(chuàng)建一個遠(yuǎn)程用戶
并授予復(fù)制權(quán)限
。
在主庫
和從庫
的my.cnf
配置服務(wù)器唯一id
;
開啟全局事務(wù)ID
;
1、MYSQL主節(jié)點配置HOST
# 在msyql的主從節(jié)點配置host
sudo tee -a /etc/hosts << EOF
192.168.1.100 mysql-master
192.168.1.101 mysql-slave1
EOF
2、修改配置文件中的ServerID
在 my.cnf
文件中啟用二進(jìn)制日志
記錄,并為其分配一個唯一的服務(wù)器 ID
。
關(guān)閉主節(jié)點
和從節(jié)點
的mysql服務(wù)。
-- 關(guān)閉mysql服務(wù)
systemctl stop msyqld
主服務(wù)器配置
每個數(shù)據(jù)庫實例的服務(wù)器ID
要唯一值
[mysqld]
# 啟用binlog日志記錄
log-bin=mysql-bin
# 主服務(wù)器唯一服務(wù)器ID
server-id=1
從服務(wù)器配置
注意:請確保此服務(wù)器的服務(wù)器 ID 不同于主服務(wù)器
。
[mysqld]
# 從服務(wù)器唯一服務(wù)器ID
server-id=2
修改主從參數(shù)–啟用全局事務(wù)標(biāo)識符(GTID)
主庫
和備庫
都要添加下列參數(shù)。
https://blog.csdn.net/kang_01/article/details/124415221
# 修改my.cnf
[mysqld]
# 啟用全局事務(wù)標(biāo)識符(GTID),用于標(biāo)識復(fù)制拓?fù)浣Y(jié)構(gòu)中多個服務(wù)器上的事務(wù)
gtid_mode=ON
# 使用基于GTID的復(fù)制時強(qiáng)制執(zhí)行嚴(yán)格一致性檢查,防止數(shù)據(jù)不一致性
enforce_gtid_consistency=ON
# 必須參數(shù)
# 設(shè)置多級復(fù)制拓?fù)浣Y(jié)構(gòu)(包括雙master環(huán)境),其中一個從屬方作為向下游的其他從屬方的主節(jié)點,則這很有用
# 控制slave數(shù)據(jù)庫 是否把 從master 接受到的log 合并在 本slave 執(zhí)行的內(nèi)容記錄到slave的二進(jìn)制日志中
log_slave_updates=1
重啟MySQL服務(wù)
保存配置
后,啟動mysql服務(wù)
# 重啟mysql服務(wù)
systemctl restart msyqld
3、主庫創(chuàng)建用戶repl@%并授權(quán)
在主庫
上執(zhí)行。
-- 為主庫創(chuàng)建repl用戶
CREATE USER 'repl'@'%.example.com' IDENTIFIED WITH mysql_native_password BY 'password';
-- 為repl用戶授權(quán) 在所有庫.表上 均有REPLICATION SLAVE權(quán)限
-- REPLICATION SLAVE權(quán)限允許用戶作為從服務(wù)器連接到主服務(wù)器,并接收主服務(wù)器上更改的副本
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';
-- 應(yīng)用權(quán)限配置
FLUSH PRIVILEGES;
-- 鎖定所有表并防止數(shù)據(jù)寫入。這將確保您的備份是一致的,并且不會在正在進(jìn)行復(fù)制時被更改。
FLUSH TABLES WITH READ LOCK;
查看主庫的binlog位置和binlog名稱
將這些值記錄下來
,因為它們將在配置從服務(wù)器
時使用。
-- 查看二進(jìn)制日志的名稱和位置。
SHOW MASTER STATUS;
釋放表鎖
-- 釋放表鎖
UNLOCK TABLES;
4、從庫開始主從復(fù)制
在從庫
上執(zhí)行。MASTER_AUTO_POSITION = 1
啟用自動復(fù)制拓?fù)?/code>,能實現(xiàn)
自動切換主庫
。
啟用 MASTER_AUTO_POSITION = 1
自動拓?fù)鋮?shù)后,從庫
會自動記錄
每個從庫當(dāng)前所處的拓?fù)湮恢?/code>,當(dāng)發(fā)生
主庫故障切換
時,從庫會自動嘗試連接新的主庫
,并根據(jù)之前記錄的拓?fù)湮恢眯畔⒅匦麻_始復(fù)制數(shù)據(jù),從而實現(xiàn)自動切換主庫
,避免了手動干預(yù)的繁瑣操作。
-- 配置從庫連接到主庫,準(zhǔn)備執(zhí)行復(fù)制數(shù)據(jù)
-- MASTER_AUTO_POSITION = 1 啟用自動復(fù)制拓?fù)?/span>
CHANGE MASTER TO
MASTER_HOST = 'master.example.com',
MASTER_USER = 'repl',
MASTER_PASSWORD = 'password',
MASTER_AUTO_POSITION = 1;
主從復(fù)制其他參數(shù)示范
MASTER_LOG_FILE
和 MASTER_LOG_POS
的值應(yīng)該是您在步驟3
中記錄的binlog的位置和名稱
。
MASTER_LOG_POS = 107
指定主庫binlog文件
當(dāng)前正在寫入
的位置(偏移量)。這個參數(shù)的值是一個整數(shù)。
在主從復(fù)制中,從庫
會連到主庫
獲取主庫
的binlog文件
,然后從上次讀取的位置
繼續(xù)讀新的日志數(shù)據(jù)
。
因此,MASTER_LOG_POS
參數(shù)以及相關(guān)的 MASTER_LOG_FILE
參數(shù)對于從服務(wù)器來說非常重要,它們告訴從服務(wù)器應(yīng)該從哪里開始讀取主服務(wù)器的日志數(shù)據(jù)。
-- 配置從庫連接到主庫,準(zhǔn)備執(zhí)行復(fù)制數(shù)據(jù)
CHANGE MASTER TO
MASTER_HOST = 'master.example.com',
MASTER_USER = 'repl',
MASTER_PASSWORD = 'password',
MASTER_LOG_FILE = 'mysql-bin.000001',
MASTER_AUTO_POSITION = 1,
MASTER_LOG_POS = 107;
啟動從庫復(fù)制進(jìn)程
-- 啟動從庫復(fù)制進(jìn)程:
START SLAVE;
-- 檢查從庫的狀態(tài)
SHOW SLAVE STATUS\G;
5、測試主從復(fù)制是否生效
-- 在主庫上創(chuàng)建數(shù)據(jù)庫
CREATE database scott;
-- 在主庫上創(chuàng)建表
CREATE TABLE scott.emp(
empno FLOAT(4),
ename VARCHAR(10),
job VARCHAR(9),
hiredate DATE,
sal FLOAT(7, 2),
comm FLOAT(7.2),
deptno FLOAT(2)
);
在從庫
查看:文章來源:http://www.zghlxwxcb.cn/news/detail-428039.html
-- 進(jìn)入scott庫
use scott;
-- 查看有哪些表
show tabtles;
文章來源地址http://www.zghlxwxcb.cn/news/detail-428039.html
到了這里,關(guān)于MYSQL8主從復(fù)制的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!