在Debian上實現MariaDB的高可用性,可以采用多種方法。以下是兩種常見的方法:
MariaDB Galera Cluster是一個多主復制解決方案,支持真正的多主同步,確保數據的一致性和高可用性。
安裝MariaDB:
sudo apt update
sudo apt install mariadb-server mariadb-client
配置MariaDB:
編輯/etc/mysql/mariadb.conf.d/50-server.cnf
文件,添加或修改以下內容:
[mysqld]
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://<node1_ip>,<node2_ip>,<node3_ip>
wsrep_node_address=<node_ip>
wsrep_node_name=<node_name>
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=<sst_user>:<sst_password>
wsrep_on=ON
重啟MariaDB服務:
sudo systemctl restart mariadb
加入集群: 在每個節點上執行以下命令,將節點加入到集群中:
mysql -u root -p
然后輸入以下SQL命令:
CREATE USER 'sst_user'@'%' IDENTIFIED BY 'sst_password';
GRANT ALL PRIVILEGES ON *.* TO 'sst_user'@'%';
FLUSH PRIVILEGES;
驗證集群狀態: 在任意節點上執行以下命令,查看集群狀態:
SHOW STATUS LIKE 'wsrep_cluster_size';
Keepalived和LVS(Linux Virtual Server)可以實現負載均衡和高可用性。
安裝Keepalived和LVS:
sudo apt update
sudo apt install keepalived lvs-tools
配置Keepalived:
編輯/etc/keepalived/keepalived.conf
文件,添加以下內容:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
<virtual_ip>
}
}
virtual_server <virtual_ip> 3306 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server <node1_ip> 3306 {
weight 1
TCP_CHECK {
connect_timeout 10
connect_port 3306
}
}
real_server <node2_ip> 3306 {
weight 1
TCP_CHECK {
connect_timeout 10
connect_port 3306
}
}
}
啟動Keepalived服務:
sudo systemctl start keepalived
sudo systemctl enable keepalived
配置MariaDB:
確保每個MariaDB實例的my.cnf
文件中包含以下內容,以支持LVS的DR模式:
server-id = <unique_id>
log_bin = /var/log/mysql/mysql-bin.log
auto_increment_increment = 2
auto_increment_offset = 1
驗證高可用性: 通過停止主節點上的Keepalived服務,觀察虛擬IP是否自動切換到備用節點,并確保數據庫服務仍然可用。
通過以上兩種方法,你可以在Debian上實現MariaDB的高可用性。選擇哪種方法取決于你的具體需求和環境。