我们只是尝试将Google Cloud SQL 2nd generation进行故障转移,这非常容易并且令人惊讶,看来我们不必再担心数据库了。 但是,为了更安全地保护我们的数据,我们决定最好有一些不在Google内部托管的备份,尽管这不是必需的,但是我们在IBM Cloud中拥有帐户,并且他们获得了IBM Cloud对象存储(如Amazon S3),我们认为可能是备份的好地方。 现在我们计划在IBM数据中心(Linux服务器)的VPS上执行此操作,以root用户身份连接到Google Cloud SQL并执行mysqldump以将所有数据转储到1个或多个文件(可能在tar,gz中),然后使用S3备份脚本上传到IBM存储。
我们将在收到您的答复或弄清楚后发布我们的解决方案和步骤。
答案 0 :(得分:0)
您可以export your SQL data to a dump file将mysqldump存储在Google Cloud Storage存储桶中,然后可以使用Storage Transfer Service
将该数据传输到Amazon S3存储桶中。答案 1 :(得分:0)
好的,很高兴我可以在这里做些贡献,如果有人想做与我想做的事情完全一样的事情,请在复制之前点击以下链接,如果您有更好的做方法,欢迎帮助修复它。 检查链接: https://github.com/lumerit/s3-shell-backups https://knowledgelayer.softlayer.com/procedure/connecting-cos-s3-using-s3cmd 我的脚本基于: https://gist.github.com/JProffitt71/9044744 https://andycroll.com/development/backing-up-mysql-databases-remotely-using-cron-and-ssh/
第一个脚本,您可以将其命名为“ deleteold”,并记住要使用chmod 755
#!/bin/bash
# Usage: ./deleteold "dir-of-your-bucketname" "-30 day"
# Usage-sample-2: ./deleteold "dir-of-your-bucketname" "-500 minutes"
# Pls put your bucketname in s3://here
s3cmd ls s3://my-database-backups/$1/ | while read -r line;
do
createDate=`echo $line|awk {'print $1" "$2'}`
createDate=`date -d"$createDate" +%s`
### 28800 sec is the time difference between our server & IBM COS
createData=`expr $createData + 28800`
olderThan=`date -d"$2" +%s`
if [[ $createDate -lt $olderThan ]]
then
fileName=`echo $line|awk {'print $4'}`
echo $fileName
if [[ $fileName != "" ]]
then
echo $fileName
s3cmd del "$fileName"
fi
fi
done;
第二个脚本
#!/bin/sh
#### BEGIN CONFIGURATION ####
##Account name SLOSC3xx982-4
# set dump directory variables
SRCDIR='/tmp/s3backups'
DESTDIR='google'
BUCKET='my-database-backups'
# database access details
HOST=‘x0x.x9.x4.98'
PORT='3306'
USER='root'
PASS='5xxxyyzznIoi8XXP'
NOW=`date +%Y-%m-%d_%H%M_`
#### END CONFIGURATION ####
# make the temp directory if it doesn't exist and cd into it
mkdir -p $SRCDIR
cd $SRCDIR
# dump each database to its own sql file and upload it to s3
for DB in $(mysql -h$HOST -P$PORT -u$USER -p$PASS -BNe 'show databases' | grep -Ev
'mysql|information_schema|performance_schema')
do
mysqldump -h$HOST -P$PORT -u$USER -p$PASS --quote-names --create-options --force --set-
gtid-purged=OFF $DB > $DB.sql
tar -czf $NOW$DB.tar.gz $DB.sql
/usr/bin/s3cmd put $SRCDIR/$NOW$DB.tar.gz s3://$BUCKET/$DESTDIR/ --reduced-redundancy
files="$files $DB"
done
# remove all files in our source directory
cd
rm -f $SRCDIR/*.sql
rm -f $SRCDIR/*.tar.gz
## remove older files
/root/backups3/deleteold "google" "-3 day"
#/root/backups3/deleteold "google" "-490 minutes"
### Mail me ###
EMAILID=“your-name@gmail.com"
mail -s "Backups Report $NOW" $EMAILID << END
Success backup cloud SQL from $HOST to IBM COS $BUCKET
The following databases were attempted backed up
$files
END
将这两个脚本放在/ root / backups3中后(可以将其放置在任何位置),设置crontab每天执行第二个脚本,以便它将使用mysqldump将所有ur数据库转储到tar.gz文件中然后上传到S3(IBM COS或Aws S3,无论您喜欢什么)。 完成后,您会收到一封电子邮件,并且还会调用脚本1根据要删除的日期或分钟删除旧文件。