linux下应用crontab对mysql数据库进行定时备份

linux下应用crontab对mysql数据库进行定时备份

mysql数据库提供了备份命令mysqldump,可以结合crontab命令进行定时备份。

我写了一个mysqlbackup.sh的脚本,设置可执行权限chmod +X /mysqlbackup.sh。此脚本按照日期在当前目录下创建一个文件夹,同时在此目录下备份一个文件。内容如下:

#!/bin/bash
#设置mysql备份目录,注意要对改文件夹设置可执行权限chmod +X /mysqlbak/mysqldump
folder=/mysqlbak/mysqldump
cd $folder
day=`date +%Y%m%d`
rm -rf $day
mkdir $day
cd $day
#数据库服务器,一般为localhost
host=localhost
#用户名
user=root
#密码
password=password
#要备份的数据库
db=wordpress

#数据要保留的天数
days=3
mysqldump -h $host -u $user -p$password $db>backup.sql

zip backup.sql.zip backup.sql
rm backup.sql
cd ..
day=`date -d "$days days ago" +%Y%m%d`
rm -rf $day

另外,需要配置crontab。假设上述文件位置为/home/chzhao/bin/mysqlbackup.sh,则按以下命令配置crontab.

crontab -e

出现crontab的配置窗口,默认的编辑器是vim。
输入:

0 16 * * * /home/chzhao/bin/mysqlbackup.sh

表示每天的16点执行此脚本。

配置完毕之后,可以通过命令crontab -l查看crontab的配置情况。

其他mysqldump配置

常见选项:
–all-databases, -A: 备份所有数据库
–databases, -B: 用于备份多个数据库,如果没有该选项,mysqldump把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysqldum把每个名字都当作为数据库名。

–force, -f:即使发现sql错误,仍然继续备份
–host=host_name, -h host_name:备份主机名,默认为localhost
–no-data, -d:只导出表结构
–password[=password], -p[password]:密码
–port=port_num, -P port_num:制定TCP/IP连接时的端口号
–quick, -q:快速导出
–tables:覆盖 –databases or -B选项,后面所跟参数被视作表名
–user=user_name, -u user_name:用户名
–xml, -X:导出为xml文件

1.备份全部数据库的数据和结构

mysqldump -uroot -p123456 -A >F:\all.sql

2.备份全部数据库的结构(加 -d 参数)

mysqldump -uroot -p123456 -A-d>F:\all_struct.sql

3.备份全部数据库的数据(加 -t 参数)

mysqldump -uroot -p123456 -A-t>F:\all_data.sql

4.备份单个数据库的数据和结构(,数据库名mydb)

mysqldump -uroot-p123456 mydb>F:\mydb.sql

5.备份单个数据库的结构

mysqldump -uroot -p123456 mydb-d>F:\mydb.sql

6.备份单个数据库的数据

mysqldump -uroot -p123456 mydb-t>F:\mydb.sql

7.备份多个表的数据和结构(数据,结构的单独备份方法与上同)

mysqldump -uroot -p123456 mydb t1 t2>f:\multables.sql

8.一次备份多个数据库

mysqldump -uroot -p123456 --databases db1 db2>f:\muldbs.sql

还原部分分(1)mysql命令行source方法 和 (2)系统命令行方法

1.还原全部数据库:

(1) mysql命令行:mysql>source f:\all.sql

(2) 系统命令行: mysql -uroot -p123456

2.还原单个数据库(需指定数据库)

(1) mysql>use mydb

mysql>source f:\mydb.sql

(2) mysql -uroot -p123456 mydb \mydb.sql

3.还原单个数据库的多个表(需指定数据库)

(1) mysql>use mydb

mysql>source f:\multables.sql

(2) mysql -uroot -p123456 mydb\multables.sql

4.还原多个数据库,(一个备份文件里有多个数据库的备份,此时不需要指定数据库)

(1) mysql命令行:mysql>source f:\muldbs.sql

(2) 系统命令行: mysql -uroot -p123456

你可能感兴趣的:(mysql,备份,mysql,linux)