目錄
一、MHA(一主多從模式)
1.環境準備(所有節點)
2.?部署 MySQL 主從復制(Master+Slave)
3.部署 MHA Manager(管理節點)
(1)安裝 MHA Manager
(2)配置 SSH 無密碼登錄
(3)創建 MHA 配置文件
4.部署 MHA Node(所有 MySQL 節點)
5.驗證和啟動 MHA
二、PXC(多主模式)
1.環境準備
2.安裝 PXC 相關軟件(所有節點)
3.配置 PXC(所有節點)
(1)創建數據目錄并設置權限
(2)修改配置文件
4.啟動 PXC 集群
5.初始化配置和測試
一、MHA(一主多從模式)
1.環境準備(所有節點)
# 關閉防火墻和 SELinux
systemctl stop ufw
systemctl disable ufw
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0# 配置主機名和 hosts 文件
# 主庫(master)
hostnamectl set-hostname mysql-master
echo "192.168.10.61 mysql-master" >> /etc/hosts
echo "192.168.10.62 mysql-slave1" >> /etc/hosts
echo "192.168.10.63 mha-manager" >> /etc/hosts# 從庫1(slave1)和從庫2(slave2)執行相同操作,修改hostnamectl為對應主機名# 安裝依賴包
sudo apt-get install -y make gcc libc6-dev libssl-dev libdbd-mysql-perl libdbi-perl libnet-daemon-perl libplrpc-perl libio-socket-ssl-perl
2.?部署 MySQL 主從復制(Master+Slave)
參照Mysql主從復制部署_mysql replication部署操作-CSDN博客
3.部署 MHA Manager(管理節點)
(1)安裝 MHA Manager
wget https://mirrors.aliyun.com/ubuntu/pool/universe/m/mha4mysql-manager/mha4mysql-manager_0.58-1.1_all.deb
sudo dpkg -i mha4mysql-manager_*.deb
sudo apt-get install -f # 解決依賴問題
(2)配置 SSH 無密碼登錄
參考ssh免密登錄-CSDN博客
(3)創建 MHA 配置文件
mkdir -p /etc/mha/masterha/app1
vim /etc/mha/masterha/app1.cnf
配置內容:
[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
master_binlog_dir=/var/lib/mysql
user=mha_admin # MHA管理用戶
password=password # MHA管理用戶密碼
ping_interval=1 # 檢測間隔(秒)
repl_user=repl # 復制用戶
repl_password=password # 復制用戶密碼
ssh_user=root # SSH用戶
secondary_check_script="masterha_secondary_check -s mysql-slave1 -s mysql-slave2" # 雙節點檢測[server1]
hostname=mysql-master
port=3306[server2]
hostname=mysql-slave1
port=3306
candidate_master=1 # 候選主庫
check_repl_delay=0 # 不檢查復制延遲[server3]
hostname=mysql-slave2
port=3306
candidate_master=1
check_repl_delay=0
4.部署 MHA Node(所有 MySQL 節點)
# 1.安裝 MHA Node
# 在所有MySQL節點(master、slave1、slave2)執行
wget https://mirrors.aliyun.com/ubuntu/pool/universe/m/mha4mysql-node/mha4mysql-node_0.58-1.1_all.deb
sudo dpkg -i mha4mysql-node_*.deb
sudo apt-get install -f # 解決依賴問題# 2.創建 MHA 管理用戶
# 在所有MySQL節點執行
CREATE USER 'mha_admin'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'mha_admin'@'%';
FLUSH PRIVILEGES;
5.驗證和啟動 MHA
# 檢查 SSH 連通性
# 在mha-manager節點執行
masterha_check_ssh --conf=/etc/mha/masterha/app1.cnf# 檢查復制狀態
masterha_check_repl --conf=/etc/mha/masterha/app1.cnf# 啟動 MHA Manager
nohup masterha_manager --conf=/etc/mha/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &# 查看 MHA 狀態
masterha_check_status --conf=/etc/mha/masterha/app1.cnf
注意事項:
二進制日志保留:主庫需保留足夠的 binlog(expire-logs-days設置長一些),避免故障轉移時從庫需要舊 binlog。
VIP 管理:生產環境建議配合 Keepalived 或 LVS 實現 VIP 自動漂移。
監控告警:監控 MHA Manager 日志(/var/log/masterha/app1/manager.log)和 MySQL 復制狀態。
參數優化:根據實際情況調整ping_interval(檢測頻率)和secondary_check_script(雙節點檢測)。?
二、PXC(多主模式)
1.環境準備
# 關閉防火墻和 SELinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0# 配置主機名和 hosts 文件
# 節點1
hostnamectl set-hostname pxc-node1
echo "192.168.4.1 pxc-node1" >> /etc/hosts
echo "192.168.4.2 pxc-node2" >> /etc/hosts
echo "192.168.4.3 pxc-node3" >> /etc/hosts# 節點2和節點3執行相同操作,修改hostnamectl為對應主機名
2.安裝 PXC 相關軟件(所有節點)
# 1.安裝依賴包
yum install -y epel-release
yum install -y libev lsof perl-Compress-Raw-Bzip2 perl-Compress-Raw-Zlib perl-DBD-MySQL perl-DBI perl-Digest perl-Digest-MD5 perl-IO-Compress perl-Net-Daemon perl-PlRPC qpress socat openssl openssl-devel# 2.卸載 mariadb(如果已安裝)
rpm -e mariadb-libs --nodeps# 3.安裝 XtraBackup
yum -y install percona-xtrabackup-24-2.4.18-1.el7.x86_64.rpm# 4.創建 MySQL 用戶和組
groupadd -r mysql
useradd -M -s /bin/false -r -g mysql mysql# 5.安裝 Percona XtraDB Cluster
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install Percona-XtraDB-Cluster-57
3.配置 PXC(所有節點)
(1)創建數據目錄并設置權限
mkdir -p /data/local/percona-xtradb-cluster/data
chown -R mysql:mysql /data/local/percona-xtradb-cluster/data
mkdir -p /data/local/percona-xtradb-cluster/run
chown -R mysql:mysql /data/local/percona-xtradb-cluster/run
mkdir -p /data/logs/mysql
chown -R mysql:mysql /data/logs/mysql
touch /data/logs/mysql/error.log
(2)修改配置文件
?????????默認的/etc/my.cnf文件可以刪除或重新指定路徑,寫入以下內容(以節點 1 為例,節點 2 和節點 3 需修改server_id、wsrep_node_name、wsrep_node_address)
socket = /data/local/percona-xtradb-cluster/run/mysql.sock
datadir = /data/local/percona-xtradb-cluster/data
socket = /data/local/percona-xtradb-cluster/run/mysql.sock
pid-file = /data/local/percona-xtradb-cluster/run/mysql.pid
wsrep_cluster_address=gcomm://192.168.4.1,192.168.4.2,192.168.4.3
pxc_strict_mode=ENFORCING
wsrep_cluster_name=test-pxc
wsrep_node_name=pxc-node1
wsrep_node_address=192.168.4.1
4.啟動 PXC 集群
# 引導第一個節點(以節點 1 為例)
systemctl start mysql@bootstrap.service# 啟動其他節點(節點 2 和節點 3)
systemctl start mysql
systemctl disable mysql
5.初始化配置和測試
獲取初始密碼并修改:
????????在任意節點上通過grep password /data/logs/mysql/error.log獲取臨時密碼,然后登錄 MySQL 修改密碼。
創建 SST 傳輸賬號:
????????登錄 MySQL 后執行以下命令創建 SST 傳輸所需的賬號
grant all privileges on *.* to'sst'@'localhost' identified by 'password';
?查看集群狀態:
????????在任意節點上登錄 MySQL,執行show status like 'wsrep%';命令,查看集群狀態相關信息,確保wsrep_cluster_size顯示正確的節點數,wsrep_local_state值為 4(表示正常),wsrep_ready為ON。
測試集群:
????????可以在一個節點上創建數據庫、表并插入數據,然后在其他節點上查看是否能同步數據,或者停止某個節點的 MySQL 服務,觀察其他節點的集群狀態和數據是否正常,再重新啟動該節點,查看數據是否能恢復同步。