热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

原文链接:https:blog.csdn.netqq_31659985javaarticledetails84668379mysql_backup.sh用于备份数据mysql_re

原文链接: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
View Code

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

其中 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
View Code

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天

  技术图片

五、增量备份与删除

 

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


推荐阅读
  • 用SpringBoot实现万能文件在线预览
    推荐一个用SpringBoot搭建的文档在线预览解决方案:kkFileView,一款成熟且开源的文件文档在线预览项目解决方案,对标业内付 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • mapreduce原理_MapReduce原理及WordCount实践
    参考链接:https:www.cnblogs.comlaowangcp8961946.html一、MapReduce流程1.1Mapreduce整体流程: ... [详细]
author-avatar
king1994
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有