- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章讲解Linux系统下如何自动备份MySQL数据的基本教程由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1.先创建一个数据库备份目录:
1
2
3
4
|
mkdir
backup
cd
backup
mkdir
mysqlbackup
cd
mysqlbackup
|
2.创建备份脚本 。
1
|
vi
mysqlautobackup
|
3.编写脚本:
1
2
|
filename=`
date
+%Y%m%d`
/mysql
的bin目录
/mysqldump
--opt 数据库名 -u(mysql账号) -p(mysql密码) |
gzip
> /备份到哪个目录
/name
$filename.gz
|
说明:以上采用gzip压缩,name可随意写,注意-u与mysql账号之间没有空格也无需括号,-p与mysql密码也是。 4.将脚本设置为可执行权限:
1
|
chmod
+x autobackup
|
5.写入计划任务:
1
2
|
crontab
-e
01 01 * * *
/bin/bash
/脚本所在目录
/mysqlautobackup
|
每天凌晨1点零1分执行脚本。 重启计划任务:
1
|
/etc/rc
.d
/init
.d
/crond
restart
|
至此所有步骤完成.
一些常用技巧 1、创建保存备份文件的路径/mysqldata 。
1
|
#mkdir /mysqldata
|
2、创建/usr/sbin/baktest文件 输入以下内容:
1
|
mysqldump -uroot -proot
test
|
gzip
>
/mysqldata/test
`
date
+%Y-%m-%d_%H%M%S`.sql.gz
|
3、修改文件属性,使其可以执行 。
1
|
#chmod +x /usr/sbin/baktest
|
4、修改/etc/crontab 在下面添加 。
1
|
01 3 * * * root /usr/sbin/baktest
|
表示每天3点钟01分执行备份 。
5、重新启动crond 。
1
|
#/etc/rc.d/init.d/crond restart
|
完成.
PS: 全备份脚本:
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
|
#!/bin/bash
# Name:qbk全备份脚本
# mysql qbk scripts
# By zxsdw.com
# Last Modify:2015-01-21
#定义脚本存放路径
#scriptsDir=/usr/sbin
#定义用户名及密码
user=root
userPWD=密码
#定义要备份的数据库
database=数据库
#定义完全备份文件存放路径
bakDir=
/backup/mysql
#eMailFile=$bakDir/email.txt
#eMail=admin@zxsdw.com
#定义日志文件
LogFile=$bakDir
/mysqlbak
.log
DATE=`
date
+%Y%m%d`
echo
" "
>> $LogFile
echo
" "
>> $LogFile
echo
"--------------------------"
>> $LogFile
echo
$(
date
+
"%y-%m-%d %H:%M:%S"
) >>$LogFile
echo
"-----------------"
>> $LogFile
cd
$bakDir
DumpFile=$DATE.sql.gz
mysqldump --flush-logs -u$user -p$userPWD --quick $database|
gzip
>$DumpFile
echo
"Dump Done"
>> $LogFile
echo
"[$DumpFile]Backup Success!"
>> $LogFile
daily_databakDir=$bakDir
/daily_backup
cd
$bakDir
/daily_backup
find
$daily_databakDir -name
"daily*"
-
type
f -mtime +35 -
exec
rm
{} \; >
/dev/null
2>&1
|
增量备份脚本 。
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#!/bin/bash
# Name:zbk增量备份
# mysql zbk scripts
# By zxsdw.com
# Last modify:2015-01-21
#定义数据库用户名及密码
user=root
userPWD=密码
#定义数据库
database=数据库
#生成一个新的mysql-bin.00000X文件,如果err日志被清除,则自动新建一个。
/usr/local/mysql/bin/mysqladmin
-u$user -p$userPWD flush-logs
#定义增量备份位置
daily_databakDir=
/backup/mysql/daily_backup
#定义MYSQL数据日志目录
mysqlDataDir=
/usr/local/mysql/var
#定义增量日志及目录
eMailFile=$daily_databakDir
/email
.txt
#eMail=admin@zxsdw.com
#定义变量DATE格式为20150127
DATE=`
date
+%Y%m%d`
#定义一个总的logFile日志
logFile=$daily_databakDir
/mysql
$DATE.log
#美化日志模板
echo
" "
> $eMailFile
echo
"-----------------------"
>> $eMailFile
#时间格式为15-01-27 01:06:17
echo
$(
date
+
"%y-%m-%d %H:%M:%S"
) >> $eMailFile
echo
"-------------------------"
>> $eMailFile
#定义删除bin日志的时间范围,格式为20150124010540
TIME=$(
date
"-d 3 day ago"
+%Y%m%d%H%M%S)
#定义需要增量备份数据的时间范围,格式为2015-01-26 01:04:11
StartTime=$(
date
"-d 1 day ago"
+
"%Y-%m-%d %H:%M:%S"
)
###########开始删除操作美化日志标题##############
echo
"Delete 3 days before the log"
>>$eMailFile
#删除三天前的bin文件,及更新index里的索引记录,美化日志标题
mysql -u$user -p$userPWD -e
"purge master logs before ${TIME}"
&&
echo
"delete 3 days before log"
|
tee
-a $eMailFile
#查找index索引里的bin 2进制文件并赋值给 i。
filename=`
cat
$mysqlDataDir
/mysql-bin
.index |
awk
-F
"/"
'{print $2}'
`
for
i
in
$filename
do
#########开始增量备份操作,美化日志标题###########
echo
"$StartTime start backup binlog"
>> $eMailFile
#利用mysqlbinlog备份1天前增加的数据,并gzip压缩打包到增量备份目录
/usr/local/mysql/bin/mysqlbinlog
-u$user -p$userPWD -d $database --start-datetime=
"$StartTime"
$mysqlDataDir/$i |
gzip
>> $daily_databakDir
/daily
$DATE.sql.gz |
tee
-a $eMailFile
done
#如果以上备份脚本执行成功,接着运行下面的删除脚本
if
[ $? = 0 ]
then
# 删除mtime>32的增量日志备份文件
find
$daily_databakDir -name
"*.log"
-
type
f -mtime +32 -
exec
rm
{} \; >
/dev/null
2>&1
cd
$daily_databakDir
echo
"Daily backup succeed"
>> $eMailFile
else
echo
"Daily backup fail"
>> $eMailFile
#mail -s "MySQL Backup" $eMail < $eMailFile #备份失败之后发送邮件通知
#fi结束IF判断
fi
#把变量eMailFile的内容替换logFile内容
cat
$eMailFile > $logFile
#如果上面的IF判断失败,再次运行删除mtime>32的增量日志备份文件
find
$daily_databakDir -name
"*.log"
-
type
f -mtime +32 -
exec
rm
{} \; >
/dev/null
2>&1
rsync
-vzrtopg --delete --progress --password-
file
=
/usr/local/rsync/rsync
.
passwd
root@$ip:
/zxs/allimg/
$(
date
-d -1day +%y%m%d)
/zxs/allimg/
gunzip <
/backup/mysql/daily_backup/ceshi
.sql.gz |
/usr/local/mysql/bin/mysql
-u用户名 -p密码 数据库名 --force
--force参数 忽略错误
|
最后此篇关于讲解Linux系统下如何自动备份MySQL数据的基本教程的文章就讲到这里了,如果你想了解更多关于讲解Linux系统下如何自动备份MySQL数据的基本教程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
1、流程控制语句主要有if、ii...else、elseif(有时也可以写成else if)、switch四种。 PHP中语句格式为: if(条件满足) {执行语句} if(条件满足) {执行
目录 DFS初步概念 DFS例题-迷宫游戏 题目描述 输入输出格式 输入输出样例
This question两年前被问到,但它提到的资源要么不是很有帮助(恕我直言),要么链接不再有效。 必须有一些很好的教程才能理解 Phaser .我已经阅读了 javadoc,但我的眼睛呆滞了,因
This question两年前被问到,但它提到的资源要么不是很有帮助(恕我直言),要么链接不再有效。 必须有一些很好的教程才能理解 Phaser .我已经阅读了 javadoc,但我的眼睛呆滞了,因
这个正则出自这个网站 http://www.regexlab.com/zh/regref.htm 正向预搜索:"(?=xxxxx)","(?!xxxxx)"
chr(9)、chr(10)、chr(13)、chr(32)、chr(34) 所有关于 ASCII码的表格:[url]http://www.asciitable.com/[/url] chr(13)
我是一名优秀的程序员,十分优秀!