迁移 OpenResty Edge Log Server 数据库数据
当 OpenResty Edge Log Server 使用的数据库空间不足,或需要将数据迁移到其他设备时,可以参照本文档进行操作。我们提供了三种迁移方法,请根据实际情况选择最适合的方案。
注意:以下操作涉及删除操作,请务必谨慎操作,以免误删重要数据。
方法一:迁移完整数据目录
适用场景
- 硬盘空间不足,希望把数据迁移到本机新的硬盘上。
- 或硬盘空间不足,希望迁移到其他机器的硬盘上。
- 或没有磁盘空间问题,单纯想要进行数据迁移。
- 适用于本机迁移或跨机迁移。
本机不同硬盘间迁移步骤
如果 Log Server 数据库服务还能正常工作,那么停止 Log Server 数据库服务,避免数据不一致:
sudo systemctl stop openresty-postgresql12
将数据复制到空间充足的硬盘:
sudo cp -p -R /var/postgres12/data/ /path/to/new/data
重命名原数据目录:
sudo mv /var/postgres12/data/ /var/postgres12/data-bak
创建软链接:(如果空间严重不足,可以删除一些日志或其他文件以释放空间)
sudo ln -s /path/to/new/data /var/postgres12/data
确认新数据无误后,可以删除旧数据:
sudo rm -rf /var/postgres12/data-bak
(可选)重启 Log Server 数据库服务:
sudo systemctl start openresty-postgresql12
跨机迁移步骤
在源机器上停止 Log Server 数据库服务,避免数据不一致:
sudo systemctl stop openresty-postgresql12
在目标机器上安装 Log Server 数据库服务,参考文档:https://doc.openresty.com.cn/cn/edge/edge-installation-upgrade/edge-installation/
停止目标机器上的 Log Server 数据库服务:
sudo systemctl stop openresty-postgresql12
删除或移动目标机器上的初始数据:(请再三确认操作的机器,避免误删有效数据)
删除:
sudo rm -rf /var/postgres12/data
移动:
sudo /var/postgres12/data /var/postgres12/data-init
使用安全的文件传输方式(如 scp 或 rsync)将数据从源机器复制到目标机器:
scp:
scp -r /var/postgres12/data user@target_host:/var/postgres12/data
rsync:
rsync -avz --owner --group --perms /var/postgres12/data user@target_host:/var/postgres12/data
在目标机器上重新启动数据库服务:
sudo systemctl restart openresty-postgresql12
登录 Log Server 所在机器,修改配置以使用新的数据库服务:
sudo vi /usr/local/oredge-log-server/conf/config.ini
方法二:利用主从复制进行迁移
适用场景
- Log Server 数据库服务当前能正常运行。
- 适用于跨机迁移。
操作步骤
在目标机器上安装 Log Server 数据库服务,参考文档:https://doc.openresty.com.cn/cn/edge/edge-installation-upgrade/edge-installation/
按照文档 使用交互式脚本配置 OpenResty Edge 数据库高可用 或 OpenResty Edge 数据库高可用,将源机器配置为主库,目标机器配置为从库。
在源机器上停止主库:
sudo systemctl stop openresty-postgresql12
在目标机器上将从库提升为主库:
sudo -u postgres /usr/local/openresty-postgresql12/bin/pg_ctl promote -D /var/postgres12/data
登录 Log Server 所在机器,修改配置以使用新的数据库服务:
sudo vi /usr/local/oredge-log-server/conf/config.ini
方法三:通过导出和导入数据进行迁移
适用场景
- Log Server 数据库服务当前能正常运行。
- 源机器上有足够空间保存导出的数据。
- 适用于跨机迁移。
操作步骤
停止 Log Server 服务,避免新的数据写入数据库:
sudo systemctl stop oredge-log-server
从源机器导出数据:
/usr/local/openresty-postgresql12/bin/pg_dump or_edge_log_server -C -Upostgres | gzip > or_edge_log_server-`date +%F`.gz
在目标机器上安装 Log Server 数据库服务,参考文档:https://doc.openresty.com.cn/cn/edge/edge-installation-upgrade/edge-installation/
停止目标机器上的 Log Server 数据库服务:
sudo systemctl stop openresty-postgresql12
删除目标机器上的初始数据:(请再三确认操作的机器,避免误删有效数据)
sudo rm -rf /var/postgres12/data
将导出的数据传输到目标机器
在目标机器上导入数据:
zcat or_edge_log_server-{date}.gz | /usr/local/openresty-postgresql12/bin/psql -Upostgres
启动目标机器上的数据库服务:
sudo systemctl start openresty-postgresql12
修改 Log Server 配置以使用新的数据库服务:
sudo vi /usr/local/oredge-log-server/conf/config.ini