Mysql主從復制部署過程解讀
MySQL 主從復制是將主數(shù)據(jù)庫的變更自動同步到從數(shù)據(jù)庫的過程,常用語讀寫分離、高可用性和數(shù)據(jù)備份。
GTID(全局事務標識符)是 MySQL 5.6 引入的特性,用于唯一標識每一個事務。
在主從復制中使用 GTID 可以簡化復制配置,提高可靠性,避免傳統(tǒng)復制中常見的位點偏移問題。
1.環(huán)境準備
確保主從服務器已安裝相同版本的 MySQL,并能通過網(wǎng)絡互相訪問。
# 檢查 MySQL 版本 mysql -V
2.配置主服務器
(1)編輯主服務器的配置文件(通常是 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf)
[mysqld] server-id = 1 # 唯一標識,建議使用IP地址的最后一個數(shù) log-bin = mysql-bin # 啟用二進制日志 gtid_mode = ON enforce_gtid_consistency = ON log_slave_updates = ON binlog_format = ROW
(2)重啟 MySQL 服務并驗證配置
sudo systemctl restart mysql mysql -e "SHOW VARIABLES LIKE 'gtid_mode';" # 應顯示 ON mysql -e "SHOW VARIABLES LIKE 'enforce_gtid_consistency';" # 應顯示 ON
(3)創(chuàng)建復制用戶
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES;
3.配置從服務器
(1)編輯從服務器的配置文件
[mysqld] server-id = 2 # 唯一標識,不能與主庫重復 log-bin = mysql-bin # 啟用二進制日志 read-only = 1 # 從庫設置為只讀(可選) gtid_mode = ON enforce_gtid_consistency = ON log_slave_updates = ON binlog_format = ROW
(2)重啟 MySQL 服務
sudo systemctl restart mysql
(3)連接從服務器到主服務器
在從服務器上執(zhí)行以下命令,配置主從關系: CHANGE MASTER TO MASTER_HOST='主服務器IP', MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_AUTO_POSITION = 1; # 使用 GTID 自動定位 START SLAVE; SHOW SLAVE STATUS\G; #檢查 IO 和 SQL 線程狀態(tài),確認從服務器是否落后于主服務器 檢查以下兩個狀態(tài)是否均為 Yes: Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0
4.其他配置
(1)MySQL 啟用安全連接(MySQL 8.0)
# step 1 在主庫和從庫生成 SSL 證書 # 在主庫和從庫分別執(zhí)行(使用相同的 CA) mkdir /etc/mysql/ssl && cd /etc/mysql/ssl openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-csr.pem openssl x509 -req -in server-csr.pem -days 3650 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem # step 2 配置主庫 my.cnf [mysqld] ssl-ca=/etc/mysql/ssl/ca.pem ssl-cert=/etc/mysql/ssl/server-cert.pem ssl-key=/etc/mysql/ssl/server-key.pem # step 3 配置從庫 my.cnf [mysqld] ssl-ca=/etc/mysql/ssl/ca.pem ssl-cert=/etc/mysql/ssl/server-cert.pem ssl-key=/etc/mysql/ssl/server-key.pem # step 4 重啟主從庫服務 systemctl restart mysql # step 5 創(chuàng)建用戶 # 創(chuàng)建使用舊認證方式的復制用戶 -- 在主庫執(zhí)行 CREATE USER 'repl_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES; # 修改 MySQL 用戶認證方式 ALTER USER 'yang'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES;
(2)禁用主庫的 SSL 要求
[mysqld] require_secure_transport = OFF # 關閉強制 SSL
(3) 傳統(tǒng)方式配置主從
-- 從庫執(zhí)行 CHANGE MASTER TO MASTER_HOST='主庫IP', MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_PORT=3306, MASTER_LOG_FILE='主庫binlog文件', MASTER_LOG_POS=主庫binlog位置; START SLAVE;
(4)其他命令
stop slave; #停止復制從庫 reset slave; #刪除從庫配置 reset master; #刪除主庫配置 SHOW MASTER STATUS; #查詢當前主庫的 binlog 文件和位置
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Win10環(huán)境下安裝Mysql5.7.23問題及遇到的坑
這篇文章主要介紹了Win10環(huán)境下安裝Mysql5.7.23問題及遇到的坑,本文通過圖文并茂的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11
MySQL中的CONCAT()函數(shù):輕松拼接字符串的利器
這篇文章主要介紹了MySQL中的CONCAT()函數(shù):輕松拼接字符串的利器,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
mysql建庫時提示Specified key was too long max key length is 1000
本文將詳細提供mysql建庫時提示Specified key was too long max key length is 1000 bytes的問題的解決方法,有需求的朋友可以參考2012-11-11
mysql如何修改表結構(alter table),多列/多字段
這篇文章主要介紹了mysql如何修改表結構(alter table),多列/多字段問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
MySQL如何查找樹形結構中某個節(jié)點及其子節(jié)點
這篇文章主要介紹了MySQL如何查找樹形結構中某個節(jié)點及其子節(jié)點問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06

