如何将本地 postgresql 数据库迁移到 azk?

How do I migrate my local postgresql database to azk?

这里有将现有 MySQL 数据库迁移到 azk 映像的说明:http://images.azk.io/#/mysql?_k=yvigvq

我如何为 postgresql 做同样的事情?

谢谢!

我只是做了一个 PR,在图像存储库中添加了说明:

https://github.com/azukiapp/docker-postgres/pull/3

参见部分:Migrating an existing PostgreSQL Server

基本上有三种方法可以将转储文件恢复到 azk 内的数据库 运行ning(它们也可以与其他数据库一起使用,例如 MySQL 和 MariaDB):

1- 使用本地客户端(图形工具或命令行工具):

连接数据库之前,需要先找到数据库运行ning端口:

$ azk start postgres  # Ensures the database is running
$ azk status postgres
┌───┬──────────┬───────────┬──────────────┬─────────────────┬─────────────┐
│   │ System   │ Instances │ Hostname/url │ Instances-Ports │ Provisioned │
├───┼──────────┼───────────┼──────────────┼─────────────────┼─────────────┤
│ ↑ │ postgres │ 1         │ dev.azk.io   │ 1-data:32831    │ -           │
└───┴──────────┴───────────┴──────────────┴─────────────────┴─────────────┘

现在,我们可以使用主机 dev.azk.io 和上一个命令 (32381) 生成的端口连接到数据库。用户名、密码和数据库名称在 Azkfile.

中定义

2- 使用 azk shell 和数据库 CLI:

运行同样的步骤找出数据库运行ning端口,可以运行以下命令:

$ azk shell postgres
$ psql --host dev.azk.io --port 32831 --username ${POSTGRES_USER} \
--password=${POSTGRES_PASS} --dbname=${POSTGRES_DB} < dbexport.sql

3 - 使用数据库图像中的自动加载脚本:

大多数官方 Docker 数据库图像都有一个 entrypoint 脚本,它会在 /docker-entrypoint-initdb.d/ 文件夹中查找文件,并在数据库初始化时 运行 它们.鉴于此,您可以简单地将转储文件 (.sql) 挂载到该位置,如以下 Azkfile:

中所述
systems({
 postgres: {
   image: { docker: "azukiapp/postgres" },
   mounts: {
     "/docker-entrypoint-initdb.d": sync("./dumps"),
   }
 }
});

使用命令 azk start postgres 启动 postgres 系统,转储文件将自动 运行。

Obs:如您在 Postgres' script and in the Mysql's 中所见,转储文件可以是纯文本 (.sql)、压缩 (.sql.gz) 甚至 shell 脚本(.sh).