视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL定时备份之使用Linux下的crontab定时备份实例
2020-11-09 21:04:00 责编:小采
文档


1. Mysql备份某个数据库的命令

代码如下:
################################################################## 
# 备份某个数据库 
################################################################## 

# root 用户,创建备份目录 
mkdir -p /usr/local/cncounter/mysql_dump 
cd /usr/local/cncounter/mysql_dump 

# 导出数据库,热备 
mysqldump -u root -pmypasssecret cncounter > cncounter_dump.sql.20140414_1333 
2. Mysql还原某个数据库的命令
代码如下:
################################################################## 
# 还原某个数据库 
################################################################## 
# 修改密码 
# mysqladmin -u root password "mypasssecret" 
# mysqladmin -u root password oldpass "mypasssecret" 

# 登录 
mysql -u root -pmypasssecret 

-- 热备只是备份数据库内部的表,以及数据 
use cncounter; 
source /usr/local/cncounter/mysql_dump/cncounter_dump.sql.20140414_1333; 
exit; 

3. 使用crontab 定时备份Mysql

3.1 备份脚本

代码如下:
##################################################################
# crontab 定时备份
##################################################################
#
# root 用户,创建执行脚本
mkdir -p /root/mysql_dump/data
cd /root/mysql_dump
touch mysql_back.sh
chmod 755 mysql_back.sh

# 编辑备份脚本
vim mysql_back.sh

################下面是备份脚本的内容
#!/bin/sh
# File: /root/mysql_dump/mysql_back.sh
# Database info
DB_NAME="cncounter"
DB_USER="root"
DB_PASS="mypasssecret"
# Others vars
# whereis mysqldump
# IS ` but not '
BIN_DIR="/usr/bin"
BCK_DIR="/root/mysql_dump/data"
DATE=`date +%Y%m%d_%H%M%S`
# TODO
mkdir -p $BCK_DIR
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS $DB_NAME \
 > $BCK_DIR/$DB_NAME.dump_$DATE.sql

当然,执行的脚本也可以不用那么灵活: 其中行末尾的 反斜线(\) 的意思是shell 指令换行,如果写在单行内部,就不再需要.
代码如下:
/usr/bin/mysqldump --opt -uroot -pmypasssecret cncounter \
> /root/mysql_dump/data/cncounter.dump_`date +%Y%m%d_%H%M%S`.sql

dump出来的sql文件有可能很大,我们也可以开启 gzip 压缩,一般来说可以实现10倍压缩比例:也就是讲输出到文件的内容通过管道操作符让 gzip 程序处理一遍.
代码如下:
/usr/bin/mysqldump --opt -uroot -pmypasssecret cncounter | gzip \
> /root/mysql_dump/data/cncounter.dump_`date +%Y%m%d_%H%M%S`.sql.gz

3.2 添加到crontab
代码如下:
# 添加到crontab
crontab -e

# 添加一行,root用户不需要指定执行的用户名,ESC,wq
1 1 * * * /root/mysql_dump/mysql_back.sh

# 不一定需要重启crontab服务
# service crond restart

3.3 crontab 简单说明

代码如下:
# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

可以发现,crontab 的执行周期有5个部分组成,其中第一个是分钟数,第二个是小时数,第三个是一个月中的第几天。。 如果是 * 就表示每天都会调度。
user-name 部分,如果需要以其他用户调度,则可以指定,否则不能指定,比如 root 用户就不能指定 root,否则有调度日志,但是没有实际执行。

您可能感兴趣的文章:

  • Linux shell实现每天定时备份mysql数据库
  • 在Windows环境下使用MySQL:实现自动定时备份
  • mysql自动定时备份数据库的最佳方法(windows服务器)
  • linux实现mysql数据库每天自动备份定时备份
  • CentOS下mysql定时备份Shell脚本分享
  • 定时备份mysql, 定时切割nginx access log的方法
  • Navicat for MySQL定时备份数据库及数据恢复详解
  • MySQL数据库定时备份的实现方法
  • 定时备份 Mysql并上传到七牛的方法
  • MYSQL定时清除备份数据的具体操作
  • 下载本文
    显示全文
    专题