迁移 OpenResty Edge Log Server 数据库数据

当 OpenResty Edge Log Server 使用的数据库空间不足,或需要将数据迁移到其他设备时,可以参照本文档进行操作。我们提供了三种迁移方法,请根据实际情况选择最适合的方案。

注意:以下操作涉及删除操作,请务必谨慎操作,以免误删重要数据。

方法一:迁移完整数据目录

适用场景

  • 硬盘空间不足,希望把数据迁移到本机新的硬盘上。
  • 或硬盘空间不足,希望迁移到其他机器的硬盘上。
  • 或没有磁盘空间问题,单纯想要进行数据迁移。
  • 适用于本机迁移或跨机迁移。

本机不同硬盘间迁移步骤

  1. 如果 Log Server 数据库服务还能正常工作,那么停止 Log Server 数据库服务,避免数据不一致:

    sudo systemctl stop openresty-postgresql12
    
  2. 将数据复制到空间充足的硬盘:

    sudo cp -p -R /var/postgres12/data/ /path/to/new/data
    
  3. 重命名原数据目录:

    sudo mv /var/postgres12/data/ /var/postgres12/data-bak
    
  4. 创建软链接:(如果空间严重不足,可以删除一些日志或其他文件以释放空间)

    sudo ln -s /path/to/new/data /var/postgres12/data
    
  5. 确认新数据无误后,可以删除旧数据:

    sudo rm -rf /var/postgres12/data-bak
    
  6. (可选)重启 Log Server 数据库服务:

    sudo systemctl start openresty-postgresql12
    

跨机迁移步骤

  1. 在源机器上停止 Log Server 数据库服务,避免数据不一致:

    sudo systemctl stop openresty-postgresql12
    
  2. 在目标机器上安装 Log Server 数据库服务,参考文档:https://doc.openresty.com.cn/cn/edge/edge-installation-upgrade/edge-installation/

  3. 停止目标机器上的 Log Server 数据库服务:

    sudo systemctl stop openresty-postgresql12
    
  4. 删除或移动目标机器上的初始数据:(请再三确认操作的机器,避免误删有效数据)

    删除:

    sudo rm -rf /var/postgres12/data
    

    移动:

    sudo /var/postgres12/data /var/postgres12/data-init
    
  5. 使用安全的文件传输方式(如 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
    
  6. 在目标机器上重新启动数据库服务:

    sudo systemctl restart openresty-postgresql12
    
  7. 登录 Log Server 所在机器,修改配置以使用新的数据库服务:

    sudo vi /usr/local/oredge-log-server/conf/config.ini
    

方法二:利用主从复制进行迁移

适用场景

  • Log Server 数据库服务当前能正常运行。
  • 适用于跨机迁移。

操作步骤

  1. 在目标机器上安装 Log Server 数据库服务,参考文档:https://doc.openresty.com.cn/cn/edge/edge-installation-upgrade/edge-installation/

  2. 按照文档 使用交互式脚本配置 OpenResty Edge 数据库高可用OpenResty Edge 数据库高可用,将源机器配置为主库,目标机器配置为从库。

  3. 在源机器上停止主库:

    sudo systemctl stop openresty-postgresql12
    
  4. 在目标机器上将从库提升为主库:

    sudo -u postgres /usr/local/openresty-postgresql12/bin/pg_ctl promote -D /var/postgres12/data
    
  5. 登录 Log Server 所在机器,修改配置以使用新的数据库服务:

    sudo vi /usr/local/oredge-log-server/conf/config.ini
    

方法三:通过导出和导入数据进行迁移

适用场景

  • Log Server 数据库服务当前能正常运行。
  • 源机器上有足够空间保存导出的数据。
  • 适用于跨机迁移。

操作步骤

  1. 停止 Log Server 服务,避免新的数据写入数据库:

    sudo systemctl stop oredge-log-server
    
  2. 从源机器导出数据:

    /usr/local/openresty-postgresql12/bin/pg_dump or_edge_log_server -C -Upostgres | gzip > or_edge_log_server-`date +%F`.gz
    
  3. 在目标机器上安装 Log Server 数据库服务,参考文档:https://doc.openresty.com.cn/cn/edge/edge-installation-upgrade/edge-installation/

  4. 停止目标机器上的 Log Server 数据库服务:

    sudo systemctl stop openresty-postgresql12
    
  5. 删除目标机器上的初始数据:(请再三确认操作的机器,避免误删有效数据)

    sudo rm -rf /var/postgres12/data
    
  6. 将导出的数据传输到目标机器

  7. 在目标机器上导入数据:

    zcat or_edge_log_server-{date}.gz | /usr/local/openresty-postgresql12/bin/psql -Upostgres
    
  8. 启动目标机器上的数据库服务:

    sudo systemctl start openresty-postgresql12
    
  9. 修改 Log Server 配置以使用新的数据库服务:

    sudo vi /usr/local/oredge-log-server/conf/config.ini