遷移 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