据我所知,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 }'` 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
理想情况下,这应检查DB是否为空.为此目的不存在ansible模块.谷歌也在沉默..目前的解决方案实际上也有效,导入失败时会出错,我可以忽略错误,但看到误报有点痛苦.
要将数据库视为空,我们必须知道从创建的角度来看没有添加任何内容.由于postgres没有跟踪这一点(正如@Craig Ringer已经提到过的),我建议采用与ansible不同的方法.所以,只需使用一个处理程序机制,如:
- name: Create zabbbix postgres DB postgresql_db: name="{{zabbix_db_name}}" notify: - Init zabbix database总结
以上是内存溢出为你收集整理的postgresql – PgSQL – 如何在数据库完全空的情况下导入数据库转储?全部内容,希望文章能够帮你解决postgresql – PgSQL – 如何在数据库完全空的情况下导入数据库转储?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)