设计该脚本的一些设计、编写考虑:
-
该脚本适用于编译安装mysql和通过yum或apt-get等安装方式
-
该脚本可以反复执行,不会重复覆盖数据
-
可增加,删除N天前的备份以节省磁盘空间
-
充分利用mysqldump的自带锁表功能、刷新日志、复制等功能
利用mysqldump命令备份MySQL数据库的脚本(不带注释版,适合生产环境使用)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
MYSQLDBUSERNAME=root
MYSQLDBPASSWORD=password
MYSQBASEDIR= /usr/local/mysql
MYSQL=$MYSQBASEDIR /bin/mysql
MYSQLDUMP=$MYSQBASEDIR /bin/mysqldump
BACKDIR= /var/backup/db
DATEFORMATTYPE1=$( date +%Y-%m-%d)
DATEFORMATTYPE2=$( date +%Y%m%d%H%M%S)
[ -d $MYSQBASEDIR ] && MYSQDATADIR=$MYSQBASEDIR /data || MYSQDATADIR= /var/lib/mysql
[ -x $MYSQL ] || MYSQL=mysql
[ -x $MYSQLDUMP ] || MYSQLDUMP=mysqldump
[ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}
[ -d ${BACKDIR}/${DATEFORMATTYPE1} ] || mkdir ${BACKDIR}/${DATEFORMATTYPE1}
DBLIST=` ls -p $MYSQDATADIR | grep / | tr -d /`
for DBNAME in $DBLIST
do ${MYSQLDUMP} --user=${MYSQLDBUSERNAME} --password=${MYSQLDBPASSWORD} --routines --events --triggers --single-transaction --flush-logs --databases ${DBNAME} | gzip > ${BACKDIR}/${DATEFORMATTYPE1}/${DBNAME}-backup-${DATEFORMATTYPE2}.sql.gz
[ $? - eq 0 ] && echo "${DBNAME} has been backuped successful" || echo "${DBNAME} has been backuped failed"
/bin/sleep 5
done
|
利用mysqldump命令备份MySQL数据库的脚本(带注释版,适合学习和测试使用)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#!/bin/bash
MYSQLDBUSERNAME=root
MYSQLDBPASSWORD=password
MYSQBASEDIR= /usr/local/mysql
MYSQL=$MYSQBASEDIR /bin/mysql
MYSQLDUMP=$MYSQBASEDIR /bin/mysqldump
BACKDIR= /var/backup/db
DATEFORMATTYPE1=$( date +%Y-%m-%d)
DATEFORMATTYPE2=$( date +%Y%m%d%H%M%S)
[ -d $MYSQBASEDIR ] && MYSQDATADIR=$MYSQBASEDIR /data || MYSQDATADIR= /var/lib/mysql
[ -x $MYSQL ] || MYSQL=mysql
[ -x $MYSQLDUMP ] || MYSQLDUMP=mysqldump
[ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}
[ -d ${BACKDIR}/${DATEFORMATTYPE1} ] || mkdir ${BACKDIR}/${DATEFORMATTYPE1}
DBLIST=` ls -p $MYSQDATADIR | grep / | tr -d /`
for DBNAME in $DBLIST
do ${MYSQLDUMP} --user=${MYSQLDBUSERNAME} --password=${MYSQLDBPASSWORD} --routines --events --triggers --single-transaction --flush-logs --ignore-table=mysql.event --databases ${DBNAME} | gzip > ${BACKDIR}/${DATEFORMATTYPE1}/${DBNAME}-backup-${DATEFORMATTYPE2}.sql.gz
[ $? - eq 0 ] && echo "${DBNAME} has been backuped successful" || echo "${DBNAME} has been backuped failed"
/bin/sleep 5
done
|
执行效果:
1
2
3
4
5
6
|
[root@htvm ~]
mysql has been backuped successful
test has been backuped successful
[root@htvm ~]
mysql-backup-20150727195515.sql.gz test -backup-20150727195515.sql.gz
[root@htvm ~]
|
标签:mysqldump,备份MySQL数据库,MySQL数据库备份,mysql备份,mysql备份脚本
--end--
本文出自 “通信,我的最爱” 博客,请务必保留此出处http://dgd2010.blog.51cto.com/1539422/1678653