回到顶部
您的当前位置: 编程语言> 数据库> MYSQL> 进阶应用
Windows/Linux下Mysql数据库自动备份
2013-11-25 15:42:04
标签: 原创 Mysql 数据库备份 windows linux
Windows下Mysql数据库自动备份

WindowsMysql数据库的自动备份可以使用Windows系统的“任务计划”功能进行定时备份。

1.编辑数据库备份脚本并保存,代码如下:注释:保存文件名称为“dbName_YYYYMMdd_HHmmss”。

@echo 取日期、时间变量值
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
if /i %time:~0,2% lss 10 set hh=0%time:~1,1%
if /i %time:~0,2% geq 10 set hh=%time:~0,2%
set mn=%time:~3,2%
set ss=%time:~6,2%
set date=%yy%%mm%%dd%
set time=%hh%%mn%%ss%
set filename=%date%_%time%
mysqldump -uroot -ppassword --default-character-set=utf8 --opt --extended-insert=false 
--triggers -R --hex-blob -x dbName > D:\db_bak\dbName_%filename%.sql 
@echo 导出已经完成
@pause

2.使用Windows任务计划功能设置定时任务,操作步骤如下(以Windows Server 2003为例):

2.1.打开任务计划功能:开始->系统工具->任务计划程序(WindowsXP任务计划位置:开始->所有程序->附件->系统工具->任务计划 控制面板->任务计划),如下图:

2.2.点击“创建任务”(或“创建基本任务)对计划进行设置,如下图:

在触发器界面设置任务启动时间:

在操作界面点击【浏览】选择之前保存的数据库备份脚本文件:

其他按需设置即可,设置完成后点击【确定】按钮,该定时任务即设置完成。

Linux下Mysql数据库自动备份

LinuxMysql数据库的自动备份是利用系统crontab来定时执行备份脚本文件。

1、创建保存备份文件的路径/var/ backup/ mysqlbak

# mkdir -p /var/backup/mysqlbak

2、创建/usr/sbin/bakmysql备份脚本文件

#vi /usr/sbin/bakmysql.sh

编写如下代码并保存

#!/bin/bash
# mysql备份脚本
cd /var/ mysqlbak /
dateDIR=`date +"%y-%m-%d"`
mkdir -p $dateDIR/
for i in `mysql -uroot -ppassword -e "show databases"  | grep -v "Database" | 
grep -v "information_schema"`
do
  mysqldump -uroot -proot --skip-lock-tables $i  |  
  gzip  > /mysqlbak/$dateDIR/${i}_${dateDIR}.gz
done

3、修改文件属性,使其可执行

# chmod +x /usr/sbin/ bakmysql.sh

4、修改/etc/crontab

# crontab -e

在下面添加

0 3 * * * root / usr/sbin/bakmysql.sh

表示每天3点钟执行备份(0 3 * * *分别表示:分时 年,中间用空格隔开)

这样每天就可以在/var/backup/mysqlbak下看到备份的sql文件 了!

特别注意:若运行crontab出现错误,提示no crontab for root,则系统中目前没有crontab,需要新建一个。

解决办法:

  1. 登录到root用户。

  2. 在root下输入:crontab -e

  3. 可能会提示你:no crontab for root - using an empty one 然后会叫你“Select a editor ......”下面有几个选项,就是叫你选择编辑器。一般选 vim.tiny。

  4. 进入crontab编辑页面之后就直接"shift:",然后输入wq保存即可。

然后一个新的crontab就生成了!