从零开始在centos8.3上部署mariadb三节点集群
3台数据库服务器部署数据库集群。
一、部署3台centos8.3的服务器
本文使用每一台配置8核CPU8G内存500G硬盘的虚拟机。
1、安装过程默认中文语言,环境添加英文。


2、安装过程,选择最小安装+标准安装。

时区选择上海。
分区默认自动分区。
IP可以直接配好,也可以进入系统后配置。
主机名为了方便管理,更改为mysql01、mysql02、mysql03

配置完root密码后开始安装系统。本文后续的命令均由root账户操作。

二、基础设置
1、更改YUM源
建议使用可信的YUM源,如阿里云、清华大学、163等。
本节不做细节描述,可参考其它文章。
2、(可选)开启SSH远程,(可选)修改SSH默认远程端口
方便远程配置管理。
本节不做细节描述,可参考其它文章
3、(可选)配置SNMP远程监控
方便对服务器做性能监控。
本节不做细节描述,可参考其它文章
4、(可选)防火墙放通远程和监控端口
如果只更改了YUM源,本步骤可忽略。
本节不做细节描述,可参考其它文章
三、部署数据库集群
在 MariaDB 中,可以通过使用 Galera 插件来实现高可用性集群。
1、安装软件包
在每台服务器上执行以下命令来安装 MariaDB Server 及 Galera 插件
sudo dnf install -y tar mariadb-server mariadb-server-galera
OpenCloudOS 9 默认没有安装 tar,在数据同步中会使用 tar 命令,所以在数据库服务安装时要同时安装 tar
在 CentOS 8.3.2011 系统上,安装 MariaDB 并配置 Galera 集群时,数据库的默认安装路径通常如下:
-
配置文件:
/etc/my.cnf.d/mariadb-server.cnf -
数据目录:
/var/lib/mysql -
日志文件:
/var/log/mariadb/mariadb.log -
服务脚本:
/usr/lib/systemd/system/mariadb.service
2、配置 MariaDB 服务器
编辑 MariaDB 配置文件
sudo vi /etc/my.cnf.d/mariadb-server.cnf
文件中默认是全部注释掉的,都不用管,直接添加以下内容:
[galera]
log_bin=mysql-bin
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# 本地节点的名称
wsrep_node_name="192.168.0.11"
# 本地节点的网络地址
wsrep_node_address="192.168.0.11"
# 是否启用 wsrep 复制,默认值为 OFF,如果要加入集群,需要开启设置为 ON
wsrep_on=ON
# wsrep 库的位置,不同系统路径稍有区别,本演示是默认路径安装
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
# 集群的名称,同一集群中所有节点的值都相等
wsrep_cluster_name="my_galera_cluster"
# 启动时要连接集群节点的地址
wsrep_cluster_address="gcomm://192.168.0.11,192.168.0.12,192.168.0.13"
# 用于进行状态快照传输的方式,默认值 rsync
wsrep_sst_method=rsync
其他集群服务器只需修改 wsrep_node_name 和 wsrep_node_address 的值,其他保持一致。
3、防火墙放通端口
防火墙开启 MariaDB 所需的端口(TCP3306、4567、4568、4444)
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4567/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4568/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4444/tcp --permanent
sudo firewall-cmd --reload
如有必要,可以对访问源IP进行限制,仅放通前端业务服务器和集群内部之间的IP的访问。
4、启动集群
在所有节点上停止 MariaDB 服务
systemctl stop mariadb
在第一个节点上,使用以下命令初始化 MariaDB Galera 集群:
galera_new_cluster
在三个节点上,启动 MariaDB 服务并设置开机启动:
systemctl start mariadb
systemctl enable mariadb
如果防火墙端口没有放通,这里start启动会报错。
5、验证集群
验证集群状态,可以进入 MariaDB 数据库
mysql -u root -p
执行以下命令来查看集群状态
SHOW STATUS LIKE 'wsrep%';
集群状态相关
wsrep_cluster_size:当前集群中的节点数量。正常情况下,对于一个三节点集群,该值应为3。
wsrep_cluster_status:集群的状态。通常为Primary,表示集群正常运行。
wsrep_local_state_comment:当前节点的状态。常见的状态有:
Synced:节点已同步,正常参与集群。
Donor:节点正在向新加入的节点提供数据。
Joiner:节点正在加入集群。
Desynced:节点不同步,可能需要重新同步。
节点状态相关
wsrep_local_state:当前节点的状态代码。常见的代码有:
4:表示节点已同步(Synced)。
2:表示节点正在同步(Syncing)。
wsrep_ready:节点是否准备好处理客户端请求。正常情况下为ON。
数据同步相关
wsrep_last_committed:最后一个已提交的事务 ID。
wsrep_replicated:当前节点复制的事务数量。
wsrep_replicated_bytes:当前节点复制的数据量(字节)。
wsrep_received:当前节点从其他节点接收到的事务数量。
wsrep_received_bytes:当前节点从其他节点接收到的数据量(字节)。
性能相关
wsrep_flow_control_paused:流量控制暂停的时间比例。如果该值较高,可能表示集群存在性能瓶颈。
wsrep_flow_control_sent:当前节点发送的流量控制请求次数。
wsrep_flow_control_recv:当前节点接收到的流量控制请求次数。
其他
wsrep_protocol_version:Galera 协议版本。
wsrep_thread_count:Galera 线程数量。
wsrep_open_connections:当前打开的连接数。
6、数据库初始化
6.1. 确保集群正常运行
在进行初始化操作之前,确保所有节点都已成功加入集群并正常运行。
6.2. 在单个节点上进行初始化
我们这里在192.168.0.11节点上进行 mysql_secure_installation 初始化操作。
按照提示进行操作,包括设置 root 密码、移除匿名用户、禁止远程 root 登录、移除测试数据库等。
6.3. 配置同步
完成初始化后,我们会发现192.168.0.12节点、192.168.0.13节点本地登录数据库还是不需要密码。
原因
权限同步问题:在 Galera 集群中,数据变更会自动同步,但某些权限变更可能需要手动同步。
用户权限缓存:MySQL/MariaDB 可能缓存了用户权限,导致变更没有立即生效。
初始化操作未完全同步:
mysql_secure_installation的某些操作可能没有正确传播到所有节点。
我们需要手动同步权限数据表。
登录数据库
mysql -u root -p
再重设一次数据库root账户的密码,可以与初始化时的相同。
注意这里your_new_password是你账户的密码,根据实际更改。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';
权限变更同步。
FLUSH PRIVILEGES;
验证。192.168.0.12节点、192.168.0.13节点本地登录需要密码了,并且是192.168.0.11节点设置的密码。
四、其它配置
配置浮动IP
为了前端业务访问数据库的便捷性,可以给数据库集群配置一个浮动IP。
推荐使用Keepalived
本节不做细节描述,可参考其它文章
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)