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