定时备份:使用 mysqldump
+ crontab
mysqldump 用法
-
备份全部数据库的数据和结构
1
mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql
-
备份全部数据库的结构(加 -d 参数)
1
mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql
-
备份全部数据库的数据(加 -t 参数)
1
mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql
-
备份单个数据库的数据和结构(数据库名mydb)
1
mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql
-
备份单个数据库的结构
1
mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql
-
备份单个数据库的数据
1
mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql
-
备份多个表的数据和结构(数据,结构的单独备份方法与上同)
1
mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql
-
一次备份多个数据库
1
mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql
crontab 用法
crontab不同操作系统实现不同,语法是通用的
crontab 表达式含义:
1
* * * * *
- 表示分钟
- 表示小时
- 表示一个月中的第几天
- 表示月份
- 表示一个星期中的第几天
*
表示分钟都要执行(以此类推)a-b
表示从 a 到 b 这段时间内要执行(以此类推)*/n
表示每 n 分钟执行一次(以此类推)a,b,c
表示在第 a、b、c 分钟执行(以此类推)
定时任务脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
number=31
backup_dir=/var/lib/mysql
dd=`date +%Y-%m-%d_%H:%M:%S`
tool=mysqldump
username=root
password=xxxx
database_name=test
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
$tool -u$username -p$password $database_name > $backup_dir/$database_name-$dd.sql
delfiles=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`
if [ $count -gt $number ];
then
rm $delfiles;
fi
利用全量备份和binlog恢复数据
-
使用全量备份恢复临时库
1
mysql -uroot -p database < dump.sql
-
flush logs
重开一个binlog,一是避免操作当前binlog文件防止发生意外情况,二是缩小范围排除干扰,在之前的binlog中定位操作范围1
flush logs
-
恢复
1
mysqlbinlog --start-position "6276" --stop-position "6481" binlog.000011 | mysql -uroot -p