一、部署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_namewsrep_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节点本地登录数据库还是不需要密码。

原因

  1. 权限同步问题:在 Galera 集群中,数据变更会自动同步,但某些权限变更可能需要手动同步。

  2. 用户权限缓存:MySQL/MariaDB 可能缓存了用户权限,导致变更没有立即生效。

  3. 初始化操作未完全同步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

本节不做细节描述,可参考其它文章

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐