第一步:格式化并挂载 sdb (所有节点执行)
# 1. 格式化为 xfs 文件系统 (CentOS/RHEL 推荐)
# 如果提示已经挂载或 busy,请先 umount /dev/sdb
mkfs.xfs -f /dev/sdb
# 2. 创建挂载点
mkdir -p /mnt/sdb
# 3. 临时挂载
mount /dev/sdb /mnt/sdb
# 4. 获取 UUID (用于配置开机自动挂载)
UUID_VAL=$(blkid -s UUID -o value /dev/sdb)
echo "UUID: $UUID_VAL"
# 5. 写入 /etc/fstab 实现开机自动挂载
# 注意:这里直接追加到文件末尾
echo "UUID=$UUID_VAL /mnt/sdb xfs defaults,noatime 0 0" >> /etc/fstab
# 6. 验证自动挂载配置是否正确 (无输出则代表成功)
mount -a
df -h | grep sdb
(如果看到 /dev/sdb 挂载在 /mnt/sdb 且容量为 500G,说明第一步成功)
第二步:建立目录结构与软链接 (所有节点执行)
这一步是将“旧路径”映射到“新磁盘”,让原有脚本无感知。
# 1. 在新磁盘创建目录结构
mkdir -p /mnt/sdb/pgsql/{data,log}
mkdir -p /mnt/sdb/repmgr/{conf,log}
# 2. 处理旧目录并建立软链接
rm -rf /mnt/sdb/pgsql/data
rm -rf /mnt/sdb/pgsql/log
# 备份并移除旧的 pgsql 目录 (如果存在)
# 1. 移动 data 目录
# 如果 /app/pgsql/data 存在,将其移动到 sdb;如果不存在则忽略
mv /app/pgsql/data /mnt/sdb/pgsql/data 2>/dev/null || true
# 2. 移动 log 目录
mv /app/pgsql/log /mnt/sdb/pgsql/log 2>/dev/null || true
# 3. 创建软链接 (让 /app/pgsql/data 指向 /mnt/sdb/pgsql/data)
ln -s /mnt/sdb/pgsql/data /app/pgsql/data
ln -s /mnt/sdb/pgsql/log /app/pgsql/log
# 备份并移除旧的 repmgr 目录 (如果存在)
rm -rf /etc/repmgr/conf
rm -rf /etc/repmgr/log
# 1. 移动 conf 目录 (包含 repmgr.conf)
mv /etc/repmgr/conf /mnt/sdb/repmgr/conf 2>/dev/null || true
# 2. 移动 log 目录
mv /etc/repmgr/log /mnt/sdb/repmgr/log 2>/dev/null || true
# 3. 创建软链接
ln -s /mnt/sdb/repmgr/conf /etc/repmgr/conf
ln -s /mnt/sdb/repmgr/log /etc/repmgr/log
# 3. 授权给 postgres 用户 (非常重要,否则无法启动)
chown -R postgres:postgres /mnt/sdb/pgsql
chown -R postgres:postgres /mnt/sdb/repmgr
chmod 700 /mnt/sdb/pgsql/data
chmod 755 /mnt/sdb/pgsql/log
chmod 755 /mnt/sdb/repmgr/conf
chmod 755 /mnt/sdb/repmgr/log
第三步:验证环境 (所有节点执行)
执行以下命令确认链路通畅:
# 检查软链接是否指向正确
ls -ld /app/pgsql /etc/repmgr
# 模拟写入测试 (确保 postgres 用户有权限写入 sdb)
su - postgres -c "touch /app/pgsql/data/test_ok.txt"
ls -l /mnt/sdb/pgsql/data/test_ok.txt
# 如果能看到 test_ok.txt,说明配置完美!
rm /mnt/sdb/pgsql/data/test_ok.txt

3207

被折叠的 条评论
为什么被折叠?



