写在最前

1. 操作流程

本章我选择安装三个节点,节点 IP 分别为:172.31.0.41172.31.0.42172.31.0.43

1.1 安装polardbx-engine

自行选择下载一个比较新的版本即可,这里我选择下载 https://github.com/polardb/polardbx-engine/releases/download/2.4.2/t-polardbx-engine-8.4.19-20250825_17558853.el7.x86_64.rpm

https://github.com/polardb/polardbx-engine/releases/

yum install -y t-polardbx-engine-8.4.19-20250825_17558853.el7.x86_64.rpm

1.2 前置配置

注意,每个集群节点的 server_id 必须唯一。一个简单的做法是使用节点的 IP 地址去掉点后的数字作为 ID,例如将 172.31.0.43 转换为 17231043

# 创建账号用于运行polarx
useradd -ms /bin/bash polarx
echo "polarx:polarx" | chpasswd

# 前置目录
mkdir -p /app/polarx
mkdir /data/polarx/polardbx-engine
cd /data/polarx/polardbx-engine && mkdir log mysql run data tmp

# 把 /app/polarx 目录及其子目录的属主改成 polarx
chown -R polarx:polarx /app/polarx
# 把 /data/polarx/polardbx-engine 目录及其子目录的属主改成 polarx
chown -R polarx:polarx /data/polarx/polardbx-engine

# 生成my.cnf
cat > /app/polarx/my.cnf <<EOF
[mysqld]
basedir = /opt/polardbx_engine
log_error_verbosity = 2
default_authentication_plugin = mysql_native_password
gtid_mode = ON
enforce_gtid_consistency = ON
log_bin = mysql-binlog
binlog_format = row
binlog_row_image = FULL
master_info_repository = TABLE
relay_log_info_repository = TABLE
# 忽略大小写
lower_case_table_names=1
# 编码格式
character_set_server = utf8mb4
collation_server = utf8mb4_bin
 
# change me if needed
datadir = /data/polarx/polardbx-engine/data
tmpdir = /data/polarx/polardbx-engine/tmp
socket = /data/polarx/polardbx-engine/tmp.mysql.sock
log_error = /data/polarx/polardbx-engine/log/alert.log
port = 4886
cluster_id = 1
cluster_info = 172.31.0.41:14886@1,172.31.0.42:14886@2,172.31.0.43:14886@3
server_id = 17231043
 
[mysqld_safe]
pid_file = /data/polarx/polardbx-engine/run/mysql.pid
EOF

1.3 初始化

切换到 polarx 用户后,执行 mysqld_safe 命令时,可能会停留在以下提示:mysqld_safe Starting mysqld daemon with databases from /data/polarx/polardbx-engine/data 此时直接 按回车键 即可继续启动,这是正常现象,不会影响数据库运行。

# 切换到polarx运行集群
su - polarx

# 172.31.0.41初始化:
/opt/polardbx_engine/bin/mysqld --defaults-file=/app/polarx/my.cnf  --cluster-info='172.31.0.41:14886;172.31.0.42:14886;172.31.0.43:14886@1'   --initialize-insecure
启动
/opt/polardbx_engine/bin/mysqld_safe --defaults-file=/app/polarx/my.cnf --cluster-info='172.31.0.41:14886;172.31.0.42:14886;172.31.0.43:14886@1' &


# 172.31.0.42初始化:
/opt/polardbx_engine/bin/mysqld --defaults-file=/app/polarx/my.cnf  --cluster-info='172.31.0.41:14886;172.31.0.42:14886;172.31.0.43:14886@2'   --initialize-insecure
启动
/opt/polardbx_engine/bin/mysqld_safe --defaults-file=/app/polarx/my.cnf --cluster-info='172.31.0.41:14886;172.31.0.42:14886;172.31.0.43:14886@2' &


# 172.31.0.43初始化:
/opt/polardbx_engine/bin/mysqld --defaults-file=/app/polarx/my.cnf  --cluster-info='172.31.0.41:14886;172.31.0.42:14886;172.31.0.43:14886@3'   --initialize-insecure
启动
/opt/polardbx_engine/bin/mysqld_safe --defaults-file=/app/polarx/my.cnf --cluster-info='172.31.0.41:14886;172.31.0.42:14886;172.31.0.43:14886@3' &

2. 拓展操作

2.1 验证集群

PolarDB-X兼容MySQL客户端,因此可以直接执行 yum install -y mysql

# 尝试连接
mysql -h127.0.0.1 -P4886 -uroot
# 查看集群状态
SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_GLOBAL;
SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_LOCAL \G

# 创建数据库并插入数据,然后可以切换到另外的节点尝试查询数据,结果完全正确。
CREATE DATABASE db1;
USE db1;
CREATE TABLE tb1 (id int);
INSERT INTO tb1 (id) VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);

select * from tb1;

# kill -9杀进程模拟宕机,然后再到别的节点执行查询集群状态,看是否出现主从切换
ps -ef | grep polarx | grep -v grep | awk '{print $2}' | xargs -r kill -9

2.2 重置密码

出于安全考虑不能长时间让 root 用户处于空密码状态,应尽快为其设置强密码,此处123456为例子实际应尽可能避免弱密码。

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

写在最后