斑马斑马-04-白云之上-mysql定时自动备份实现

原文链接:https://blog.csdn.net/qq_31659985/java/article/details/84668379

mysql_backup.sh 用于备份数据

mysql_restore.sh 用于恢复数据

remove_backup.sh 用于删除一段时间以前的备份文件

一、数据备份

1.创建备份目录

  我们把备份文件放在/data/backup/mysql下面,把脚本放在/data/backup 下面

  创建文件夹:mkdir -p  /data/backup/mysql

2.创建脚本文件

  创建mysql_backup.sh文件

  

  vi mysql_backup.sh

#!/bin/bash
# 需要的话,自己改这里哦
#db_user=‘root‘
#db_password=`cat /data/www/mysql_password`
db_name=‘test‘
backup_dir=‘/data/backup/mysql/‘
current_time=$(date +‘%Y-%m-%d_%H%M%S‘)
filepath=$backup_dir$current_time‘.sql.gz‘
#此处没有使用 $db_password $db_user, 已经写入到配置文件中
echo ‘开始导出数据库...‘
mysqldump --defaults-extra-file=/data/backup/my_mysql.cnf  $db_name | gzip > $filepath
echo ‘导出成功,文件名为: ‘$filepath

mysql_backup.sh 

上面的脚本没有使用到 $db_passoword, 需要的话,大家也可以不用创建配置文件,直接把 -p$db_password -u$db_user拼接到 mysqldupm 命令后面

使用 gzip 命令压缩的话,可以节省 80% 的空间
mysql 5.6以上会提示在命令行输入密码不安全,会有一行 notice ,但是也能导出成功
如果直接使用密码的话,就会报下面这个警告
mysqldump: [Warning] Using a password on the command line interface can be insecure.
解决不报错的办法就是把密码写到配置文件中去,文件内容参考如下,配置文件我们可以在新建一个

vi my_mysql.cnf

[mysqldump]
max_allowed_packet    = 400M
host=11.19.113.203
user=root
password=‘111111111111‘
[mysql]
host=11.19.113.203
user=root
password=‘111111111111‘

大家需要把上面的参数改成自己的就好了,可别漏了这一步哦。

其中 mysqldump 下的参数是给导出的命令使用的,mysql 下的参数是导入的时候使用的

3.对脚本分配可执行权限

  chmod +x ./mysql_backup.sh

4.对脚本进行测试

  导出

  sh ./mysql_backup.sh

  查看

  ll ./mysql

  解压并比较文件大小

  gzip -dc ./mysql/2020-03-26_223108.sql.gz > ./mysql/2020-03-26_223108.sql

5.如果在执行过程中报错

  mysql_backup.sh: line 11: mysqldump: command not found

1、先用一条find命令查找mysqldump的所载路径

find  / -name mysqldump -print

2、mysql:command not found建立软连接(这个我们上一篇中已经建立)
ln -s  /usr/local/mysql/bin/mysql  /usr/bin
3、mysqldump:command not found 建立软连接
ln -s  /usr/local/mysql/bin/mysqldump  /usr/bin

二、数据恢复

1.使用还原目录

  我们已经把备份文件放在/data/backup/mysql下面,把备份脚本放在/data/backup 下面

  同样,把mysql_restore.sh文件也放在/data/backup 下面

2.创建脚本文件

  创建mysql_restore.sh文件

  vi mysql_restore.sh

#!/bin/bash

if [ -z $1 ] || [ ! -f $1 ]
then
    echo "请输入sql压缩文件(*.sql.gz)"
    exit 1
fi

db_name=‘test‘
base_dir=‘/data/backup/mysql/‘
gz_sql_file=`basename $1`

file_ext=${gz_sql_file##*.}
if [ $file_ext != ‘gz‘ ]
then
    echo ‘文件格式不正确,请输入 .sql.gz 文件‘
    exit 1
fi

sql_file=${gz_sql_file%.*}
echo ‘解压文件中...‘
gzip -dc $base_dir$gz_sql_file > $base_dir$sql_file
echo ‘解压完成.‘
echo ‘开始导入数据库...‘

mysql --defaults-extra-file=/data/backup/my_mysql.cnf $db_name < $base_dir$sql_file

if [ -f $base_dir$sql_file ]
then
    echo ‘删除临时文件.‘
    rm -f $base_dir$sql_file
fi
echo ‘导入完成.‘

mysql_restore.sh

上面代码中的配置文件,就是我们第一步时创建的配置文件,在这里一样的使用

3.对脚本分配可执行权限

  chmod +x ./mysql_restore.sh

4.对脚本进行测试

  查看数据库,

  

  删除数据库,(重要数据库不建议执行此操作)

  通过脚本恢复

  sh ./mysql_restore.sh  ./mysql/备份文件名.sql.gz

  如果数据库不存在,要先建立一个,创建的数据库名要和(mysql_restore.sh设置的一样)

  恢复完成(欢迎张三回来)

   

三、创建计划任务

1.创建脚本文件

crontab -e
# 粘贴下面的内容, 大家根据自己的需要更改就可以了
0 1,12 * * * /data/backup/mysql_backup.sh # 每天凌晨1点,中午12点备份一次数据

# 大家可以先使用下面这条做为测试哦,1分钟跑一次,我们只需要查看 ll /data/backup/mysql 这个文件夹就好了
*/1 * * * * /data/backup/mysql_backup.sh

2.测试

四、添加自动清理备份

1.自动删除

  我们已经把备份文件放在/data/backup/mysql下面,把备份脚本和恢复脚本放在/data/backup 下面

  同样,把remove_backup.sh文件也放在/data/backup 下面

2.创建脚本文件

  创建remove_backup.sh文件

  vi remove_backup.sh

#/bin/bash

# 删除1天前的备份
 find /data/backup/mysql -type f -mtime +1 | xargs rm -f

remove_backup.sh

如果是,删除30天前的,把相应位置改为30
  find /data/backup/mysql -type f -mtime +30 | xargs rm -f

3.对脚本分配可执行权限

  chmod +x ./remove_backup.sh

4.创建定时任务  

crontab -e
# 粘贴下面的内容, 大家根据自己的需要更改就可以了
0 1,12 * * * /data/backup/remove_backup.sh # 每天凌晨1点,中午12点备份一次数据

# 大家可以先使用下面这条做为测试哦,2分钟跑一次,我们只需要查看 ll /data/backup/mysql 这个文件夹就好了
*/2 * * * * /data/backup/remove_backup.sh

5.对脚本进行测试

5.1 准备工作

 修改(删除脚本)remove_backup.sh文件把时间设置成删除半小时的历史文件

  find /data/backup/mysql -type f -mmin +30 | xargs rm -f

 修改(定时任务)crontab把时间设置成没两分钟执行一次

  find /data/backup/mysql -type f -mtime +30 | xargs rm -f

定时任务设置成每分钟

5.2 开始观察

删除前

删除后

5.2 收工调整

  1:把定时任务设置成每天凌晨3:00备份。每天凌晨5:00删除过期备份

  2:把删除备份的保留时间修改成15天

  

五、增量备份与删除

原文地址:https://www.cnblogs.com/YK2012/p/12576327.html

时间: 2024-10-10 10:13:45

斑马斑马-04-白云之上-mysql定时自动备份实现的相关文章

debian mysql 定时自动备份的脚本

#!/bin/sh LOG=/var/log/mysql-backup.log # mysql db info USER_ROOT=XXXXXX USER_PWD=XXXXXXX # mysql data stored dir TODAY=`date +%F` STOREDIR=/mnt/tf-card/mysql-back/$TODAY mkdir $STOREDIR echo "*** PATH:$STOREDIR mysql-backup ***" >> $LOG #

Linux下mysql定时自动备份并FTP到远程脚本

1.添加backupmysqleveryday.sh(vi /data/shell/backupmysqleveryday.sh) #!/bin/sh #this shell is user for backup mysql data everyday #author:www.ieliwb.com #path-config base_mysql_path=/data/webserver/mysql/ mysql_dump_path=/data/mysqlbackup/ mnt_back_path

MySQL数据库的定时自动备份

昨天做了MySQL数据库的备份基本操作的实验,今天试一下MySQL数据库的定时自动备份. 大概思路就是,首先为备份文件单独创建一个目录,然后再目录下创建Shell脚本里写上执行数据库备份的命令,并且给这个Shell脚本添加可执行的权限,最后给这个Shell脚本添加到crond计划任务,让它每天定时执行. 1.首先进入home目录,创建一个mysqlBackup的目录,然后进入这个目录 2.创建一个.sh后缀的文件, 3.编辑Shell脚本,备份所有数据库到/home/mysqlBackup目录下

定时自动备份wordpress 的N种方法

定时自动备份wordpress 的N种方法 WordPress Database Backup 这货是一个WordPress插件,插件下载地址:http://wordpress.org/plugins/wp-db-backup/,也可以直接在wp后台搜索WP-DB-Backup 安装 界面还算简单,可以立即备份或者定时备份,可以将备份定时发到邮箱,但是据说有时候这货会漏备份,博主在使用这款插件,有几天确实是没有备份.... 2.WP-DBManager 这货也是WordPress插件,但是功能不

SQL Server 数据库定时自动备份【转】

在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库.要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业.启动SQL Server Agent服务,然后在其中新建作业,作业中添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL语句,该语句实现了对数据库TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是T

MS-SQL数据库定时自动备份

在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库.要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业.启动SQL Server Agent服务,然后在其中新建作业,作业中添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL语句,该语句实现了对数据库TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是T

SQL Server 数据库定时自动备份

原文:SQL Server 数据库定时自动备份 SQL Server 数据库定时自动备份——每天定时备份,保留前8天的备份 利用SQL Server代理新建作业来定期备份 1)在数据库库的[SQL Server代理]->[作业],右键[新建作业] 2)在[常规]选项卡设置[名称](自定义) 3)在[步骤]选项卡中点击[新建],然后在弹出的窗口的[常规]选项卡中设置“步骤名称”(自定义):选择“类型”为“Transact-SQL 脚本(T-SQL)”(默认):选择“数据库”为你要备份的数据库:添加

Windows Server服务器端MySQL数据库自动备份

1.给root账户授权所有sql权限 grant all privileges on *.* to [email protected]"%" identified by "."; flush privileges; 2.建立bat批处理文件 @echo off set path=%path%;D:\Program Files\MySQL\MySQL Server 5.5\bin set y=%date:~0,4% set m=%date:~5,2% set d=%d

使用SQL Server维护计划实现数据库定时自动备份

在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库.要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业.启动SQL Server Agent服务,然后在其中新建作业,作业中添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL语句,该语句实现了对数据库TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是T