写在最前
1. 操作流程
本章我选择安装三个节点,节点 IP 分别为:172.31.0.41
、172.31.0.42
和 172.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;
评论