将 OpenResty Edge Admin 数据库迁移至 Kubernetes 环境
在开始迁移操作之前,请确保已根据在 Kubernetes 环境中部署 OpenResty Edge的文档指引,部署了最新版本的 OpenResty Edge。
导出当前数据库
请在您安装了 Edge Admin 数据库的机器上运行 pg_dump
命令以导出数据库。打开命令行终端并执行以下指令:
/usr/local/openresty-postgresql12/bin/pg_dump or_edge_admin -C -U postgres | gzip > or_edge_admin-$(date +%F).gz
执行时,系统可能会提示您输入密码。
将导出的数据库文件传输至 Kubernetes Pod
利用 kubectl cp
命令,把本地导出的数据库文件传输到 Kubernetes Pod 中:
kubectl cp or_edge_admin-$(date +%F).gz openresty-edge/oredge-admin-database-0:/tmp/or_edge_admin-$(date +%F).gz
请注意,openresty-edge
是 OpenResty Edge 服务所在的命名空间名称,而 oredge-admin-database-0
是目标 Pod 的名称。
在 Kubernetes Pod 中导入数据库
接下来,您需要进入 Pod 并利用 psql
命令来导入数据库。
首先,使用以下命令进入 Pod:
kubectl exec -it oredge-admin-database-0 -n openresty-edge -- /bin/bash
在 Pod 内部,删除现有数据库 or_edge_admin
中的所有初始数据(如有重要数据请提前备份):
/usr/local/openresty-postgresql12/bin/psql -U or_edge_admin -d or_edge_admin --command 'DROP SCHEMA public CASCADE'
/usr/local/openresty-postgresql12/bin/psql -U or_edge_admin -d or_edge_admin --command 'CREATE SCHEMA public'
然后,在 Pod 的命令行中,使用 psql
命令开始导入数据:
zcat /tmp/or_edge_admin-$(date +%F).gz | /usr/local/openresty-postgresql12/bin/psql -U or_edge_admin -d or_edge_admin
耐心等待数据导入完成。
更新 Edge Admin Database 的 Schema 至最新版
运行以下命令来升级数据库 schema:
bash /docker-entrypoint-post.d/update-admin-db.sh
重新编译 OpenResty Edge 配置
登录到 Edge Admin 的 Pod oredge-admin-0
:
kubectl exec -it oredge-admin-0 -n openresty-edge -- /bin/bash
执行以下命令以重新编译配置文件:
cd /usr/local/oredge-admin
sudo bash utils/recompile-apps.sh wildcard-http
sudo bash utils/recompile-apps.sh http
sudo bash utils/recompile-apps.sh http_proxy
sudo bash utils/recompile-apps.sh socks5_proxy
sudo bash utils/recompile-apps.sh global
sudo bash utils/recompile-apps.sh waf
sudo bash utils/recompile-apps.sh dns
sudo bash utils/recompile-apps.sh global-action
sudo bash utils/recompile-apps.sh gateway
按照上述步骤操作后,您应该已经成功完成了数据库数据的迁移,将 OpenResty Edge Admin 数据库集成至 Kubernetes 集群中。