logo logo
关于我们

技术分享

技术分享 阿里云RDS数据库备份同步到自建库方法(SHELL脚本)

阿里云RDS数据库备份同步到自建库方法(SHELL脚本)

2016-07-13

一、背景:

由于阿里云RDS生产库每天都需要备份且拷贝到自建读库,而如果使用阿里云的自动拷贝到只读实例, 费用太高, 故采用自编写同步脚本方法实现。

二、前提: 

1). 已开通阿里云RDS, 且开启定期备份功能。(备份功能生成备份文件供下载)

2). 已在备份的目标服务器上安装mysql数据库。

3). 备份目标服务器已安装数据恢复工具Percona XtraBackup,您可以从Percona XtraBackup官网下载安装。

  • MySQL 5.6及之前的版本需要安装 Percona XtraBackup 2.3,安装指导请参见官方文档Percona XtraBackup 2.3

  • MySQL 5.7版本需要安装 Percona XtraBackup 2.4,安装指导请参见官方文档Percona XtraBackup 2.4

  • MySQL 8.0版本需要安装 Percona XtraBackup 8.0,安装指导请参见官方文档Percona XtraBackup 8.0

 

三、脚本编写和测试

1. 编写SHELL脚本

#!/usr/bin/env bash
#########数据库基础信息#############
#输入参数
URL_PATH=$1#定义时间格式
DATE=`date +%Y%m%d%H%M%S`
#日志记录文件地址
LOG_PATH=/data/db_bakup/bakup.log
#保存备份个数
BACK_NUM=3#备份文件存放路径
BAKUP_PATH=/data/db_bakup/##########################
back_up(){
cd ${BAKUP_PATH}echo "===${DATE}-下载备份,URL_PATH=${URL_PATH}===" >> ${LOG_PATH}wget -c "${URL_PATH}" -O database.${DATE}.tar.gzecho "===创建文件夹用于存放解压文件===" >> ${LOG_PATH}mkdir database.${DATE}echo "===解压database.${DATE}===" >> ${LOG_PATH}tar -izxvf database.${DATE}.tar.gz -C database.${DATE}echo "===恢复解压好的备份文件===" >> ${LOG_PATH}
innobackupex --defaults-file=/data/db_bakup/database.${DATE}/backup-my.cnf --apply-log /data/db_bakup/database.${DATE}echo "===停止数据库===" >> ${LOG_PATH}
service mysql stop
#删除数据库data软链接(我的数据库安装在/data/mysql/)rm -rf /data/mysql/dataecho "===删除原数据库文件夹===" >> ${LOG_PATH}
#删除原数据库文件夹rm -rf database/#更名mv database.${DATE} database
#新建数据库软链接ln -s /data/db_bakup/database /data/mysql/data
#创建版本号文件(方便辨认当前数据库备份是属于哪个版本的)touch database/rev.databasecat "${DATE}" >> database/rev.databaseecho "===修改文件属主===" >> ${LOG_PATH}chown -R mysql:mysql /data/db_bakup/databasechown -R mysql:mysql /data/mysqlecho "===重启数据库===" >> ${LOG_PATH}
service mysql start
#找出需要删除的备份
delfile=`ls -l -crt  ${BAKUP_PATH}/*.tar.gz | awk '{print $9 }' | head -1`

#判断现在的备份数量是否大于$number
count=`ls -l -crt  ${BAKUP_PATH}/*.tar.gz | awk '{print $9 }' | wc -l`
if [[ $count -gt $BACK_NUM ]];then
     #删除最早生成的备份,只保留number数量的备份
     rm $delfile
     #写删除文件日志
     echo "delete $delfile" >> ${LOG_PATH}
fi
echo "===结束===" >> ${LOG_PATH}
}
back_up;

 

 

脚本保存文件为: /data/db_bakup/back_up.sh

2. 给文件增加运行权限

chmod u+x /data/db_bakup/back_up.sh

3. 启动备份命令:

sh /data/db_bakup/back_up.sh "备份文件下载链接"

注意:"备份文件下载链接" 从阿里云RDS管理控制台复制获取

4. 查看备份日志查看进程

tail -f  /data/db_bakup/bakup.log -n 50

5. 登录数据库查看是否已经切换到新的备份

mysql -uroot -p

6. 完毕~~~


云祺备份软件,云祺容灾备份系统,虚拟机备份,数据库备份,文件备份,实时备份,勒索软件,美国,图书馆
  • 标签:
  • 其他

您可能感兴趣的新闻 换一批

现在下载,可享30天免费试用

立即下载

请添加好友为您提供支持
jia7jia_7

请拨打电话
为您提供支持

400-9955-698