Postgres:尝试简化数据库最小化脚本

时间:2017-12-21 19:24:55

标签: bash postgresql amazon-web-services amazon-ec2

在ec2-user @的crontab $(crontab -e)上,他们运行了几个脚本来创建我们数据库的备份。

ec2-user @ - > 〜$ crontab -l 30 7 * * * /home/ec2-user/db/dump.sh 30 5 * * * cd / home / ec2-user / code / dev / utils / db_dump /&& node index.js>> /home/ec2-user/output.txt 15 9 * * * /home/ec2-user/code/dev/utils/db_dump/dump.sh>> /home/ec2-user/output_dump.txt 15 12 * * * /home/ec2-user/code/dev/remote_development/staging/cron/staging_cron.sh 0 17 * * * /home/ec2-user/code/dev/utils/looker-contrave-users/contrave_users.sh

/home/ec2-user/db/dump.sh是我们的标准每日数据库备份。它创建一个存储在/home/ec2-user/db/master.dump中的每日转储。我们将这个转储用于几件事。 1备份和2 A开发数据库创建源。此脚本可以根据需要运行。

cd / home / ec2-user / code / dev / utils / db_dump /& amp;& node index.js>> /home/ec2-user/output.txt ^这实际上是创建我们数据库的最小备份转储。它基本上将完整备份还原到名为pg-webhooks-dump的数据库,然后运行一个SQL文件,删除超过30天前创建的条目。然后在该DB上运行另一个pg_dump以获得最小转储。 还有/home/ec2-user/code/dev/utils/db_dump/dump.sh,我相信它实际上是处理转储的。你应该调查一下,因为我只是快速看一下。

最终,我们希望简化数据库的整个最小化过程,以便它执行以下操作: 1.它不需要中间人数据库转储,然后转出。最终,它应该只对30天以上的任何事情做一个选择(Atleast这就是我的想法,你可以想出一个更好的方法来做到这一点)。 2.最小的数据库仅供开发人员使用,因此我希望开发人员可以选择他们需要多长时间或备份的日期范围。 30天为我们提供了大约30GB的备份。我想让开发者有能力拉,2天,5天,10天,15天和30天。他们需要一个简单的bash脚本。

我拥有的是:

#!/bin/bash
echo "get run delete.sql"
psql --username xxxxx --port xxxxx --host xxxxxx-f "/home/ec2-user/code/dev/utils/db_dump/delete.sql"
echo "done deleting, now dump"
pg_dump --username xxxx --dbname xxxx --port 5432 --host yyyyy -N zzzz -F c -b -v -f "/home/ec2-user/db/master_reduced.dump"
echo "done dumping now delete DB instance"
aws rds delete-db-instance --db-instance-identifier prod-webhooks-dump --skip-final-snapshot

echo "Now lets create a new DB from staging-webhooks-dump"
cd /home/ec2-user/code/dev/utils/db_dump/ && node small_db.js
echo "done creating, now lets restore from dump"
pg_restore -v -h staging-db -U master -d master /home/ec2-user/db/master_reduced.dump
echo "lets delete the old snapshot"
aws rds delete-db-snapshot --db-snapshot-identifier "staging--dump"
echo "now lets kill it and snapshot it"
aws rds delete-db-instance --db-instance-identifier staging--test --final-db-snapshot-identifier "staging--dump"

现在我知道在MSSQL中有一个SELECT TO功能,但我不知道如何在Postgres(我是超级新手)中做到这一点,或者是否有一种简单的方法可能会变换它以允许开发说'#34;我想要1天的数据"在新的数据库(在不同的VPC上)

0 个答案:

没有答案