作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL(本章节)
PostgreSQL
Redis
Etcd
上个小节我们介绍了MariaDB基本部署,在单机下他们几乎没有区别,但是MariaDB是由一个多主集群,类似其他诸如ZooKeeper的软件,就是我们今天要讲的Galera Cluster集群,也叫多主集群。
一.环境规划
我们这里以3个节点来部署我们的Galera Cluster集群,他们的IP是192.168.31.185/186/187。
二.环境准备
由于多主是从10.1版本开始支持的,而我们默认从Centos7里面部署版本是5.X,所以需要安装较新的版本才可以支持。
2.1 准备repo文件
# 创建MariaDB仓库文件
cat > /etc/yum.repos.d/MariaDB.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.6/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF2.2 安装MariaDB
# 安装MariaDB和Galera
yum install -y MariaDB-server MariaDB-client galera-4
# 启动MariaDB(仅初始化)
systemctl start mariadb
systemctl stop mariadb三. 配置Galera Cluster
3.1 所有节点通用配置框架
其他节点只需要修改当前节点配置的里面的IP即可。
[mysqld]
# 基础配置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=0.0.0.0 # 允许所有IP访问
# Galera集群配置
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_name="mariadb_galera_cluster" # 集群名称保持一致
wsrep_cluster_address="gcomm://192.168.31.185,192.168.31.186,192.168.31.187" # 集群所有节点IP
# 当前节点配置(仅需修改这里)
wsrep_node_name="192.168.31.185" # 用IP作为节点名(无需修改主机名)
wsrep_node_address="192.168.31.185" # 自身节点IP
# 同步相关配置
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0 # 生产环境可改为1(强一致性)
wsrep_slave_threads=1 # 根据CPU核心数调整
wsrep_certify_nonPK=1
wsrep_max_ws_rows=131072
wsrep_max_ws_size=10737418243.2 初始化集群
galera_new_cluster # 初始化集群,会自动启动mysql服务3.3 检查第一个节点状态
# 登录数据库
mysql -u root -p # 首次登录无密码,直接回车
# 查看集群状态
SHOW STATUS LIKE 'wsrep%';wsrep_cluster_size:应为 1(此时仅 node1 加入)
wsrep_local_state_comment:应为Synced(同步完成)
3.4 其他节点加入集群
systemctl start mariadb3.5 再次检查集群状态
可以看到机器节点已经有3个节点。
SHOW STATUS LIKE 'wsrep%';3.6 安全配置
mysql_secure_installation按提示操作:
3.7 验证多主集群
#任何一个执行
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.047 sec)
MariaDB [(none)]> create database abcd;
Query OK, 1 row affected (0.142 sec)#另外任意一个节点执行
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| abcd |
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
6 rows in set (0.045 sec)
MariaDB [(none)]> create database xyz;
Query OK, 1 row affected (0.128 sec)四. 注意事项
1.MariaDB本身也支持主从配置。
2.MariaDB里面有引导节点的说法,如果集群崩溃(无法恢复)需要手工指定引导节点才能恢复。