PgSQL-仅在数据库完全为空时如何导入数据库转储?

霍姆斯

实际上,用例使用来自动执行此操作ansible我只想在数据库完全为空(里面没有表)时才导入数据库转储当然,总会有执行sql语句的方法,但这是不得已的方法,我相信应该为此提供更优雅的解决方案。

pg_restore 据我所知,手册没有提供此选项。

这是我计划使用ansible进行的操作:

  - name: db_restore | Receive latest DB backup
    shell: s3cmd --skip-existing get `s3cmd ls s3://{{ aws_bucket }}/ | grep sentry | tail -1 | awk '{print $4}'` sql.latest.tgz
    args:
        chdir: /root/
        creates: sql.latest.tgz

  - name: db_restore | Check if file exists
    stat: path=/root/sql.latest.tgz
    register: sql_latest

  - name: db_restore | Restore latest DB backup if backup file found
    shell: PGPASSWORD={{ dbpassword }} tar -xzOf /root/sentry*.tgz db.sql | psql -U{{ dbuser }} -h{{ pgsql_server }} --set ON_ERROR_STOP=on {{ dbname }}
    when: sql_latest.stat.exists
    ignore_errors: True

理想情况下,这应该检查数据库是否为空。没有用于此目的的ansible模块。Google也保持沉默。当前的解决方案实际上也可以使用,当导入失败时,它将给出错误信息,而我可以忽略错误,但是看到一个错误的警报有些痛苦。

哈比图斯

要将数据库视为空数据库,我们必须知道从创建时就没有添加任何内容。由于postgres不会跟踪此问题(如@Craig Ringer所述),因此我建议使用与ansible不同的方法。

因此,只需使用如下处理程序机制:

- name: Create zabbbix postgres DB
  postgresql_db: name="{{zabbix_db_name}}"
  notify:
    - Init zabbix database

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

pgsql在数据库中找到类似的记录

来自分类Dev

在Joomla中连接到PGSQL数据库时出错

来自分类Dev

pgsql数据库更改时通知多个Rails应用

来自分类Dev

PGSQL:获取数据库中的几何对象占用的空间

来自分类Dev

如何将数据从ASCII(ISO / IEC 8859-1)导入到Rails / PGSQL数据库?

来自分类Dev

使用mysql2pgsql将数据库从MySql传输到Postgres时出错

来自分类Dev

如何将pgsql设置为laravel的默认数据库

来自分类Dev

导入数据库转储——PSQL

来自分类Dev

通过mysql或pgsql搜索的库?

来自分类Dev

将Inno Setup exec函数中的命令传递到pgsql数据库

来自分类Dev

如何在PDO类构造函数中为PHP PgSQL数据库设置UTF-8

来自分类Dev

通过pgadmin导入pgsql文件

来自分类Dev

如何在启动时将我的数据库转储导入mariadb?

来自分类Dev

如何从PgSQL DB获取计时

来自分类Dev

如何从pgsql中的列表中选择数据

来自分类Dev

将postgres数据库转储导入本地应用

来自分类Dev

PL / pgSQL从表动态复制数据

来自分类Dev

恢复Postgres数据库转储

来自分类Dev

FTP数据库转储

来自分类Dev

如何将MySQL转储导入SQL Server数据库

来自分类Dev

如何将转储文件Oracle数据库导入MySQL

来自分类Dev

如何将MySQL转储导入SQL Server数据库

来自分类Dev

如何获取转储db2数据库?

来自分类Dev

如何还原从phpMyAdmin转储的MySQL数据库?

来自分类Dev

如何在pgAdmin中执行pgsql脚本?

来自分类Dev

如何从PL / pgSQL函数返回多行

来自分类Dev

如何从匿名PL / pgSQL块返回结果?

来自分类Dev

如何从Sublime编译Postgresql(pl / pgsql)函数?

来自分类Dev

如何在PHP中启动PGSQL连接?