Amazon provides us with option of Automated backup but if in case you need to take scheduled manual back up than following script can be used..
In the script we are considering the scenario of taking monthly backup on 1st of every month from the daily automated RDS snapshots..
We have define the DB names individully in commands but you can use for loop as well if list is very big in your case..
Note : You need to have AWS CLI installed in you server to get this script running fine if in case you don't have that follow the following link.
In the script we are considering the scenario of taking monthly backup on 1st of every month from the daily automated RDS snapshots..
#!/bin/sh # The script to take monthly backup of DB snapshots # By Ravi Gadgil #Following command will find the snapshot identifier from the DB that need to be manually copied.. aws rds describe-db-snapshots --db-instance-identifier DB-server-name1 | grep `date +%Y-%m-01` | grep rds | awk '{ print $8 }' > /tmp/
DB-server-name1
.txt aws rds describe-db-snapshots --db-instance-identifier DB-server-name2 | grep `date +%Y-%m-01` | grep rds | awk '{ print $8 }' > /tmp/
DB-server-name2
.txt aws rds describe-db-snapshots --db-instance-identifier DB-server-name3 | grep `date +%Y-%m-01` | grep rds | awk '{ print $8 }' > /tmp/
DB-server-name3
.txt #Following command will take the snapshot identifier from above command and copy it.. aws rds copy-db-snapshot --source-db-snapshot-identifier `cat /tmp/
DB-server-name1
.txt` --target-db-snapshot-identifier
DB-server-name1
-monthly-backup-`date +%Y-%m` aws rds copy-db-snapshot --source-db-snapshot-identifier `cat /tmp/
DB-server-name2
.txt` --target-db-snapshot-identifier
DB-server-name2
-monthly-backup-`date +%Y-%m`aws rds copy-db-snapshot --source-db-snapshot-identifier `cat /tmp/
DB-server-name3
.txt` --target-db-snapshot-identifier
DB-server-name3
-monthly-backup-`date +%Y-%m`
We are running the above script on the 2nd of every month so it can take DB snapshot of one day old and backup it..We have define the DB names individully in commands but you can use for loop as well if list is very big in your case..
Note : You need to have AWS CLI installed in you server to get this script running fine if in case you don't have that follow the following link.