MariaDB Galera Cluster 搭建过程
mysql数据库高可用解决方案
MariaDB Galera群集是用于MariaDB的几乎同步的多主群集。 它仅在Linux上可用,并且仅支持XtraDB / InnoDB存储引擎
特点
虚拟同步复制
双活多主拓扑
读写任何集群节点
自动成员资格控制,失败的节点从集群中删除
自动节点加入
真正的并行复制,在行级别
直接的客户连接,原生的MariaDB外观
优势
上述功能为DBMS集群解决方案带来了许多好处,包括:
没有从站滞后
没有丢失的传输
读取可扩展性
较小的客户端时延
搭建过程如下
搭建环境采用ubuntu 20.04 LTS, 搭建3台服务器
Ubuntu-10.11.1.31-node1
Ubuntu-10.11.1.32-node2
Ubuntu-10.11.1.33-node3
添加mariadb官方仓库
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
更新apt
sudo apt update
安装MariaDB starting with 10.4
sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common -y
初始化数据库,具体步骤百度吧
sudo mysql_secure_installation
修改配置文件,如果没有就新建一个,3个ubuntu都一样的修改,除了IP地址变动一下
sudo vim /etc/mysql/conf.d/galera.cnf
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="my_cluster"
#把三个node的IP地址写入进去
wsrep_cluster_address="gcomm://10.11.1.31,10.11.1.32,10.11.1,33"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="10.11.1.31" #当前node的IP地址
wsrep_node_name="Node1"
这4个参数自己修改一下就行了。
wsrep_cluster_name="my_cluster"
wsrep_cluster_address="gcomm://10.11.1.31,10.11.1.32,10.11.1,33"
wsrep_node_address="10.11.1.31"
wsrep_node_name="Node1"
打开防火墙端口
sudo ufw allow 3306,4567,4568,4444/tcp
sudo ufw allow 4567/udp
在node1上初始化集群,记得执行命令前把mysql服务先停止一下,我第一次是重启系统的。
sudo galera_new_cluster
然后就可以查看集群状态了
sudo mysql -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
会输出下面的结果,就是代表集群已经有1个node了
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 1 |
+--------------------+-------+
#在node2上也启动mariaDB
systemctl start mysql
查看集群状态,
sudo mysql -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
已经有2个了
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 2 |