将 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 集群中。