postgresql - 从 azure 容器实例备份 postgresql
问题描述
我创建了 Azure 容器实例并在其中运行了 postgresql。挂载了一个 azure 容器实例存储帐户。我怎样才能开始备份工作,可能是通过调度程序?
当我运行命令时
az container exec --resource-group Vitalii-demo --name vitalii-demo --exec-command "pg_dumpall -c -U postgrace > dump.sql"
我收到一个错误error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \ "pg_dumpall -c -U postgrace > dump.sql\": executable file not found in $PATH"
我读到了
Azure Container Instances currently supports launching a single process with az container exec, and you cannot pass command arguments. For example, you cannot chain commands like in sh -c "echo FOO && echo BAR", or execute echo FOO.
也许有机会作为任务运行?谢谢。
解决方案
不幸的是——正如你已经提到的——不可能运行任何带有参数的命令,echo FOO
或者将多个命令与&&
.
https://docs.microsoft.com/en-us/azure/container-instances/container-instances-exec#run-a-command-with-azure-cli
您应该能够使用--exec-command /bin/bash
.
但是,如果您想以编程方式安排备份,这将无济于事。
pg_dumpall
也可以通过环境变量配置:
https ://www.postgresql.org/docs/9.3/libpq-envars.html
您可以使用正确的环境变量启动备份容器以连接数据库服务:
- PGHOST
- PGPORT
- PG用户
- PG密码
当设置了这些变量时,一个简单的pg_dumpall
应该完全做你想要的。
希望有帮助。
更新:
是的,即使通过环境变量配置连接,您也无法声明所需的输出文件......对不起。
您可以使用预配置的脚本创建自己的 Dockerimage 来转储您的 PostgreSQL 数据库。
这样做,您可以在脚本中配置输出文件,然后简单地使用--exec-command dump_my_db.sh
.
请记住,您的脚本必须位于默认值中的某个位置,$PATH
例如/usr/local/bin
.
推荐阅读
- r - 保存由 ggplotGrob 生成的 ggplot2 时间序列图 grob
- python-3.x - 在 Linux 上安装 gns3-gui 时出现 GNS3 Python 错误
- php - 在“Symfony\Component\Form\FormView”类中存在并具有公共访问权限。Symfony 4
- jquery - IE : 中间点击链接和点击 onlick 监听器有时会打开链接,有时会触发监听器
- windows - 性能,在多个线程中将多个文件写入同一个目录
- sql - 在不丢失格式的情况下更新日期时间字段的日期
- symfony - 对于 200 到 299 之间的 HTTP 状态,Response::isOk() 不应该返回 true 吗?
- java - 获取 JsonNode 文本值的正确杰克逊方法
- python - Python 相对路径 - ModuleNotFoundError
- python - 如何使用初始值将参数递归输入到此函数中?