linux的crontab定时服务备份mysql数据

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: linux的crontab定时服务备份mysql数据

利用Linux的crontab定时服务备份mysql数据。


一、库文件备份


库文件备份,我建议一周一次(当然,我的项目规模一般,然后至于怎么一周一次,稍候我们再聊了)

#!/bin/bash
date_now=`date +%Y_%m_%d_%H%M%S`
mysqldump -uroot -plixiaoli --flush-logs --master-data=2 maweiqing>/home/backup/${date_now}.sql &&
zip -r /home/backup/${date_now}.zip /home/backup/${date_now}.sql
rm -f /home/backup/${date_now}.sql



获取当前日期,作为库文件备份的文件名

mysqldump命令对数据库maweiqing备份到20151030.sql中

zip命令对文件压个缩。

rm命令删除sql文件

二、二进制日志备份


二进制文件备份,我建议早晚各一次了。

#!/bin/bash
date_now=`date +%Y_%m_%_d_%H%M%S`
filename=mysql-bin
filesuffix_max=0
filesuffix_lastbutone=0
mysqlpath=/var/lib/mysql/
backuppath=/home/backup/mysqlbinarylog/
mysqladmin -uroot -plixiaoli flush-logs &&
for fname in `ls $mysqlpath`
do
filesuffix=${fname##*.}
isnum=`expr match ${filesuffix} '[0-9][0-9]*$'`
if [ $isnum ] && [ $isnum -ne 0 ] && [ $filesuffix -gt $filesuffix_max ]
   then
       filesuffix_lastbutone=$filesuffix_max
       filesuffix_max=$filesuffix
fi
done &&
filefullname=${filename}.${filesuffix_lastbutone}
cp $mysqlpath$filefullname $backuppath &&
zip ${backuppath}${date_now}${filefullname}.zip $backuppath$filefullname &&
echo "done"


1. 注意,二进制日志备份,需要mysql开启二进制日志。

2. 其文件路径是在/var/lib/mysql/路径下面。

3. mysqladmin 命令进行二进制日志备份。


说到这,我觉得我要提醒你点什么,以免你照做后出现错误来找我(如果你要来找我,我觉得挺乐意的)。


上面两个文件列出的路径,你一定要检查是否存在,如果不存在,就mkdir一下。

zip命令如果在服务器上没有安装的话,我稍候也会告诉你怎么做的。

mysql日志文件的事情,我的另一篇文章会说明的,请参见。

至于在Linux上怎么编辑文件,我想你可以问问“vim”大人。

还有什么忘记说的?对了,你在看这篇文章之前最好看看mysql配置

这两个文件是搞好了,接下来要做什么?“元芳,你怎么看?”“大人,你觉得呢?”


三、测试备份


首先,要想让两个文件运行,肯定是要赋予他们灵魂的,不然,怎么搞。


[root@iZ23gsv94suZ soft]# chmod 700 flushlog_and_copy.sh 
[root@iZ23gsv94suZ soft]# chmod 700 backuplixiaoli.sh

库文件备份


[ot@iZ23gsv94suZ soft]# sh backuptiangong.sh 
mysqldump: [Warning] Using a password on the command line interface can be insecure.
  adding: home/backup/2015_10_30_105545.sql (deflated 77%)
[root@iZ23gsv94suZ backup]# ll
total 28
-rw-r--r-- 1 root root 23948 Oct 30 10:55 2015_10_30_105545.zip


二进制日志备份


[root@iZsuZ soft]# sh flushlog_and_copy.sh 
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
expr: syntax error
  adding: home/backup/mysqlbinarylog/mysql-bin.000002 (deflated 36%)
done
[root@iZ23gZ soft]# cd /home/backup/mysqlbinarylog/
[root@iZ23 mysqlbinarylog]# ll
total 8
-rw-r--r-- 1 root root 343 Oct 30 10:59 2015_10_30_105901mysql-bin.000002.zip
-rw-r----- 1 root root 167 Oct 30 10:59 mysql-bin.000002


四、加入crontab定时服务


到这呢,你可能需要先看看Linux:时间同步,了解一下Linux的自动化服务!


①、先看看crontab服务


[root@iZ23gsv94suZ mysqlbinarylog]# crontab -l

-bash: crontab: command not found


②、安装crontab


[root@iZ23gsv94suZ mysqlbinarylog]# yum install -y vixie-cron
Loaded plugins: security
Setting up Install Process
Resolving Dependencies
Installed:
  cronie.x86_64 0:1.4.4-15.el6                                                                                                                                                                                                  
Dependency Installed:
  cronie-anacron.x86_64 0:1.4.4-15.el6                                            crontabs.noarch 0:1.10-33.el6                                            exim.x86_64 0:4.72-7.el6                                           
Complete!

③、设置crontab开机启动


参照Linux:时间同步.


④、将mysql备份文件加入crontab


crontab -e


30 12,17,23 * * 1-5 sh /home/soft/flushlog_and_copy.sh

40 23 * * 6 sh /home/soft/backuplixiaoli.sh


周一到周五12点半、17点半、23点半进行二进制文件备份

周六23点40分进行库文件备份。

然后,我们crontab -l查看一下,是否已经命令加入到自动化任务中!


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
缓存 NoSQL 关系型数据库
13- Redis和Mysql如何保证数据⼀致?
该内容讨论了保证Redis和MySQL数据一致性的几种策略。首先提到的两种方法存在不一致风险:先更新MySQL再更新Redis,或先删Redis再更新MySQL。第三种方案是通过MQ异步同步以达到最终一致性,适用于一致性要求较高的场景。项目中根据不同业务需求选择不同方案,如对一致性要求不高的情况不做处理,时效性数据设置过期时间,高一致性需求则使用MQ确保同步,最严格的情况可能涉及分布式事务(如Seata的TCC模式)。
37 6
|
14天前
|
关系型数据库 MySQL Apache
mysql5.7 本地计算机上的mysql 服务启动后停止 的问题解决
mysql5.7 本地计算机上的mysql 服务启动后停止 的问题解决
11 0
|
20天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
|
22天前
|
存储 Java 关系型数据库
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
24 1
|
22天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
77 1
|
14天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
17 0
|
6天前
|
存储 关系型数据库 MySQL
Linux | MySQL基础
Linux | MySQL基础
|
7天前
|
关系型数据库 MySQL Linux
Linux联网安装MySQL Server
Linux联网安装MySQL Server
20 0
|
25天前
|
关系型数据库 MySQL
MySQL查询当天昨天明天本月上月今年等数据
MySQL查询当天昨天明天本月上月今年等数据
19 2
|
26天前
|
关系型数据库 MySQL 开发工具
MySQL分组后,组内排序,然后取每组的第一条数据
MySQL分组后,组内排序,然后取每组的第一条数据
15 1