Centos7部署MySQL8+keepalived雙主熱備(含Keepalived配置與GTID同步優(yōu)化方案)
架構(gòu)拓?fù)湓?/strong>
GTID同步 VIP 192.168.1.100 MySQL主節(jié)點1 MySQL主節(jié)點2
核心邏輯:
通過Keepalived實現(xiàn)VIP漂移
雙向GTID同步保證數(shù)據(jù)一致性
雙寫模式需配合應(yīng)用層沖突解決機制
MySQL 8部署流程
? 步驟1:官方源配置
wget https://repo.mysql.com//mysql80-community-release-el7-7.noarch.rpm
sudo rpm -Uvh mysql80-community-release-el7-7.noarch.rpm
?
?? 注意:
確認(rèn)EL7版本與CentOS 7兼容
國內(nèi)鏡像加速可替換為華為云源
安裝前執(zhí)行 yum clean all && yum makecache
? 步驟2:安裝與服務(wù)啟動
sudo yum install mysql-community-server
sudo systemctl enable --now mysqld
?
安全初始化:
# 查看臨時密碼
grep 'temporary password' /var/log/mysqtd.log
# 執(zhí)行安全腳本
mysql_secure_installation
?
密碼策略說明:
策略項 默認(rèn)值 修改建議,密碼長度 8字符 ≥12字符,特殊字符 必需 維持強校驗,密碼過期 180天 生產(chǎn)環(huán)境建議90天
雙主同步配置
節(jié)點1配置(192.168.1.10)
# /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_do_db=需要同步的數(shù)據(jù)庫名
auto_increment_increment=2 # 雙主必須配置
auto_increment_offset=1
?
節(jié)點2配置(192.168.1.11)
auto_increment_increment=2
auto_increment_offset=2 # 確保自增ID不沖突
?
? 授權(quán)同步賬戶
-- 在兩臺服務(wù)器分別執(zhí)行
CREATE USER 'sync_user'@'%' IDENTIFIED BY 'V3ryS3cure!P@ss';
GRANT REPLICATION SLAVE ON *.* TO 'sync_user'@'%';
ALTER USER 'sync_user'@'%' IDENTIFIED WITH mysql_native_password BY 'V3ryS3cure!P@ss';
?
? 建立雙向通道
-- 在節(jié)點1執(zhí)行
CHANGE MASTER TO
MASTER_HOST='192.168.1.11',
MASTER_USER='sync_user',
MASTER_PASSWORD='V3ryS3cure!P@ss',
MASTER_AUTO_POSITION=1;
-- 在節(jié)點2執(zhí)行
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='sync_user',
MASTER_PASSWORD='V3ryS3cure!P@ss',
MASTER_AUTO_POSITION=1;
START SLAVE;
?
Keepalived高可用配置
主節(jié)點配置(192.168.1.10)
# /etc/keepalived/keepalived.conf
global_defs {
router_id MYSQL_HA_01
}
vrrp_script chk_mysql {
script "/usr/local/bin/mysql_check.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
192.168.1.100/24 dev eth0
}
track_script {
chk_mysql
}
}
?
備節(jié)點配置(192.168.1.11)
router_id MYSQL_HA_02
state BACKUP
priority 90
?
? 健康檢測腳本
#!/bin/bash
# /usr/local/bin/mysql_check.sh
if ! mysqladmin ping -h127.0.0.1 -uroot -p'YourPassword' >/dev/null 2>&1; then
systemctl stop keepalived
exit 1
fi
exit 0
?
安全加固:
腳本權(quán)限設(shè)置為700
使用獨立監(jiān)控賬戶代替root
日志記錄到/var/log/keepalived.log
關(guān)鍵驗證操作
1. 同步狀態(tài)檢查
SHOW SLAVE STATUSG
-- 確認(rèn)以下參數(shù):
-- Slave_IO_Running: Yes
-- Slave_SQL_Running: Yes
-- Retrieved_Gtid_Set: 正常遞增
?
2. VIP漂移測試
# 主節(jié)點執(zhí)行
systemctl stop mysqld
# 觀察備節(jié)點是否接管VIP
ip addr show eth0 | grep 192.168.1.100
?
3. 數(shù)據(jù)沖突測試
-- 節(jié)點1插入
INSERT INTO test.t1 VALUES (null, 'node1');
-- 節(jié)點2插入
INSERT INTO test.t1 VALUES (null, 'node2');
-- 檢查雙節(jié)點數(shù)據(jù)一致性
?
安全加固清單
啟用SSL加密傳輸
配置iptables防火墻規(guī)則
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="3306" accept'
?
開啟審計日志
[mysqld]
audit_log=ON
audit_log_format=JSON
?
定期備份驗證
mysqldump --single-transaction --master-data=2 -uroot -p dbname > backup.sql
審核編輯 黃宇
?
-
SSL
+關(guān)注
關(guān)注
0文章
132瀏覽量
26808 -
CentOS
+關(guān)注
關(guān)注
0文章
85瀏覽量
14828
發(fā)布評論請先 登錄
路由器雙機熱備Gateway重定向不通問題的故障處理
億級流量電商架構(gòu) Linux 高可用高并發(fā)實戰(zhàn)運維實戰(zhàn)架構(gòu)
全志T153處理器ARM+RISC-V的雙核CP多有強?——飛凌嵌入式
服務(wù)器數(shù)據(jù)恢復(fù)—Raid5兩盤損壞熱備盤未啟咋恢復(fù)?
Mysql數(shù)據(jù)恢復(fù)—Windows Server下MySQL(InnoDB)全表誤刪數(shù)據(jù)恢復(fù)案例
企業(yè)級HDFS高可用與YARN資源調(diào)度方案
華納云:海外服務(wù)器負(fù)載均衡與高可用架構(gòu)設(shè)計
服務(wù)器數(shù)據(jù)恢復(fù)—熱備盤上線過程中硬盤掉線導(dǎo)致數(shù)據(jù)丟失,數(shù)據(jù)恢復(fù)揭秘
深入剖析RabbitMQ高可用架構(gòu)設(shè)計
QNAP 正式推出 NAS 雙機架構(gòu)的高可用性解決方案,打造不中斷的儲存環(huán)境
raid5數(shù)據(jù)恢復(fù)—raid5陣列熱備盤未完全激活導(dǎo)致崩潰的數(shù)據(jù)恢復(fù)案例
介紹三種常見的MySQL高可用方案
服務(wù)器數(shù)據(jù)恢復(fù)—V7000存儲上raid5熱備盤同步失敗的數(shù)據(jù)恢復(fù)方案
利用dockerfile搭建mysql主從集群和redis集群
CentOS 7下MySQL 8雙主熱備高可用架構(gòu)全解
評論