mysql实现定时全量备份

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: mysql实现定时全量备份

参考地址:  https://github.com/wentmac/mysql_backup

定时备份逻辑:

1:定义备份的数据库

2:使用mysqldump备份

3:压缩备份sql脚本

4:删除10天前的备份数据

5:通过rsync同步到备份服务器

新增文件 mysql_backup.sh

#!/bin/bash
# mysql_backup.sh: backup mysql databases and keep newest 5 days backup.
#
# ${db_user} is mysql username
# ${db_password} is mysql password
# ${db_host} is mysql host
# ${db_port} is mysql port
# —————————–
#/root/mysql_backup.sh
# everyday 3:00 AM execute database backup
# 0 3 * * * /root/mysql_backup.sh
#/etc/cron.daily
db_user="root"
db_password="123456"
db_host="47.106.111.110"
db_port="3306"
# the directory for story your backup file.  #
backup_dir="/Host/backup/mysql/"
# 要备份的数据库名 #
#all\_db="$(${mysql} -u ${db\_user} -h ${db\_host} -p${db\_password} -Bse 'show databases')" #
all_db="test"
# 要保留的备份天数 #
backup_day=10
#数据库备份日志文件存储的路径
logfile="/Host/backup/mysql_backup.log"
###ssh端口号###
ssh_port=22
###定义ssh auto key的文件###
id\_rsa=/root/auth\_key/id\_rsa\_153.141.rsa
###定义ssh auto username###
id\_rsa\_user=rsync
###定义要同步的远程服务器的目录路径(必须是绝对路径)###
clientPath="/home/backup/mysql"
###定义要镜像的本地文件目录路径 源服务器(必须是绝对路径)###
serverPath=${backup_dir}
###定义生产环境的ip###
web_ip="192.168.0.2"
# date format for backup file (dd-mm-yyyy)  #
time="$(date +"%Y-%m-%d")"
# mysql, ${mysqldump} and some other bin's path  #
mysql="/usr/bin/mysql "
mysqldump="/usr/bin/mysqldump"
# the directory for story the newest backup  #
test ! -d ${backup\_dir} && mkdir -p ${backup\_dir}
#备份数据库函数#
mysql_backup()
{
    # 取所有的数据库名 #
    for db in ${all_db}
    do
        echo "开始备份: "${db}
        backname=${db}.${time}
        dumpfile=${backup_dir}${backname}
        #将备份的时间、数据库名存入日志
        echo "------"$(date +'%Y-%m-%d %T')" Beginning database "${db}" backup--------" >>${logfile}
        ${mysqldump} -F -u${db\_user} -h${db\_host} -P${db\_port} -p${db\_password} ${db} > ${dumpfile}.sql 2>>${logfile} 2>&1
        #开始将压缩数据日志写入log
        echo $(date +'%Y-%m-%d %T')" Beginning zip ${dumpfile}.sql" >>${logfile}
        #将备份数据库文件库压成ZIP文件,并删除先前的SQL文件. #
        tar -czvf ${backname}.tar.gz ${backname}.sql 2>&1 && rm ${dumpfile}.sql 2>>${logfile} 2>&1
        #将压缩后的文件名存入日志。
        echo "backup file name:"${dumpfile}".tar.gz" >>${logfile}
        echo -e "-------"$(date +'%Y-%m-%d %T')" Ending database "${db}" backup-------\\n" >>${logfile}
    done
}
delete\_old\_backup()
{
    echo "delete backup file:" >>${logfile}
    # 删除旧的备份 查找出当前目录下七天前生成的文件,并将之删除
    find ${backup\_dir} -type f -mtime +${backup\_day} | tee delete_list.log | xargs rm -rf
    cat delete_list.log >>${logfile}
}
rsync\_mysql\_backup()
{
    # rsync 同步到其他Server中 #
    for j in ${web_ip}
    do
        echo "mysql\_backup\_rsync to ${j} begin at "$(date +'%Y-%m-%d %T') >>${logfile}
        ### 同步 ###
        rsync -avz --progress --delete $serverPath -e "ssh -p "${ssh\_port}" -i "${id\_rsa} ${id\_rsa\_user}@${j}:$clientPath >>${logfile} 2>&1
        echo "mysql\_backup\_rsync to ${j} done at "$(date +'%Y-%m-%d %T') >>${logfile}
    done
}
#进入数据库备份文件目录
cd ${backup_dir}
mysql_backup
delete\_old\_backup
# rsync\_mysql\_backup
echo -e "------------------------mysql backup && rsync done at "$(date +'%Y-%m-%d %T')"----------------------------\\n\\n">>${logfile}
cat ${logfile}

通过 crontab 实现定时:

0 3 * * * /home/tioncico/mysql_backup.sh

每天3点0分进行备份

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
13天前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
71 10
|
3月前
|
存储 关系型数据库 MySQL
【赵渝强老师】使用select...into outfile语句备份MySQL
本文介绍了MySQL中使用`SELECT...INTO OUTFILE`语句将表数据导出为文本文件的方法。通过示例演示了如何备份员工表(emp)的数据,包括创建存储目录、设置权限、配置参数`secure_file_priv`以及解决相关错误的过程。字段分隔符和行终止符可自定义,确保数据格式符合需求。最后展示了备份文件的内容,验证操作成功。
227 36
|
6月前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
3月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mysqldump备份MySQL
本文介绍了 MySQL 自带的逻辑备份工具 mysqldump 的使用方法。通过 mysqldump,可以将数据库中的数据转换为对应的 SQL 插入语句,便于备份和还原。文章详细说明了如何备份所有数据库、指定数据库及特定表,排除某些表不备份的操作,以及删除数据库后如何通过备份文件恢复数据。同时提供了视频讲解和具体命令示例,帮助用户更好地理解和应用该工具。
158 5
|
4月前
|
关系型数据库 MySQL Linux
实现MySQL数据库的定时自动备份脚本。
拿走,不谢,这个脚本配方(指引)保证你的数据库数据像蛋糕店一样地天天更新,还能确保老旧的蛋糕(数据)不会堆积满仓库。这下可好,数据安全有保障,数据库管理员也能轻松一点,偶尔闲下来的时候,煮杯咖啡,看个剧岂不美哉?别忘了偶尔检查一下你的自动备份是否正常工作,以防万一蛋糕机器出了点小差错。
202 20
|
3月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mydumper备份MySQL
本文介绍了使用mydumper工具进行MySQL数据库备份与恢复的操作方法。相比单线程工作的mysqldump,mydumper支持多线程,速度提升可达10倍。其功能包括事务性表快照、快速压缩、导出binlog等,并提供详细的参数说明和操作步骤。文章通过实例演示了安装mydumper、创建存储目录、全库备份、指定数据库及表备份、删除数据库以及使用myloader恢复数据的完整流程,并附带视频讲解,帮助用户更好地理解和应用该工具。
|
5月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
250 28
|
5月前
|
存储 关系型数据库 MySQL
利用Cron表达式实现MySQL数据库的定时备份
以上就是如何使用Cron表达式和mysqldump命令实现MySQL数据库的定时备份。这种方法的优点是简单易用,而且可以根据需要定制备份的时间和频率。但是,它也有一些限制,例如,它不能备份MySQL服务器的配置文件和用户账户信息,也不能实现增量备份。如果需要更复杂的备份策略,可能需要使用专门的备份工具或服务。
120 15
|
10月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
585 3
|
10月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
292 3

推荐镜像

更多