mysql备份与恢复方案
- 格式:docx
- 大小:20.91 KB
- 文档页数:8
38
效劳器备份方案
一、MYSQL数据库备份与恢复:
数据库本地备份:当数据量少的时候可以在每天凌晨1点-3点进行完全备份,随着数据库的增大,可 以2两小时〔根据需求设置时间〕做增量备份与完全备份相结合的备份方式以保证数据的平安.
数据库完全备份脚本:
1 .确定我们备份文件存放的目录这里我把所有备份文件放到/home/mysqlback
2 .确定需要备份的数据库,这里我们用备份d_test这个数据库来说明.
3 .确定我们要备份的时间,我们以每天两小时备份一次做说明.
#!/bin/sh
dbuser="root"
dbpasswd="123456〞
dbname="d_test〞
date1='date +%Y%m%d'
date2=、date +%Y%m%d%H%M%S、
date3='date -d -5day +"%Y%m%d"'
back="/home/mysqlback/$date1〞 if [ ! -d $back ] then
mkdir -p $back fi
mysqldump -u$dbuser -p$dbpasswd $dbname | gzip > $back/$dbname$date2.sql.gz
cd /home/mysqlback rm -rf $date3
#!/bin/sh#shell 脚本
页脚内容
date2 = 'date +%Y%m%d%H%M%S、#读取当前的日期时间Y年m月d日H小时M分钟S
秒
date3 = 'date -d -5day +"%Y%m%d"'#读取当天日期之5天前的日期
back = /home/mysqlback/$date1# 备份文件存放目录
# 判断是不是有文件存放目录如果没有那么新建.
if [ ! -d $back ]
then
mkdir -p $back fi
# 使用mysqldump命令来备份指定的数据库并且压缩成gz包.
mysqldump -u$dbuser -p$dbpasswd $dbname | gzip > $back/$dbname$date2.sql.gz
# 删除指定5天前备份的过期文件以便节省磁盘空间
cd /home/mysqlback
rm -rf $date3
异地备份
首先准备一台异地的效劳器,并且搭建好vsftp〔vsftp具体搭建详细步骤请参考VSFTP搭建文档〕
异地备份到vsftp效劳器上脚本如下:
#!/bin/sh
echo "start backup"
dbuser="root"
贝脚内容
38 38
dbuser="root"
dbpasswd="123456"
dbname="dtest"
date1='date +%Y%m%d' #定义数据库用户名
# 定义数据库密码
# 定义需要备份的数据库
# 读取当前日期 dbpasswd="123456" dbname="dtest" date1='date +%Y%m%d' date2=、date
+%Y%m%d%H%M%S、 date3='date -d -4day +"%Y%m%d"' back="/home/ftp1/$date1" if
[ ! -d $back ] then mkdir -p $back fi mysqldump -u$dbuser -p$dbpasswd
$dbname | gzip > $back/2021.sql.gz sleep 5s cd $back ftp <
open 192.168.16.104
user ftp1 1123456
binary
put 2021.sql.gz
rename 2021.sql.gz $date2.sql.gz
close bye
EOF
贝脚内容 mv 2021.sql.gz $date2.sql.gz
cd /home/ftpl
rm -rf $date3
数据库恢复或者重建,由于是完全备份,可以直接恢复最后一次完全备份文件.
gunzip〈备份.sql.gz | mysql -u root -p d_test
二.文件备份与恢复:
由于文件一般都比拟大,所以我们采用完整与增量结合的方式做备份,每个星期〔时间具体情况而定〕
备份完整备份一次文件,每天做一次增量备份.备份脚本如下 #!/bin/sh
wenjian="/home/backwenjian〞
backlog="/home/backlog〞
date1='date +%Y%m%d'
date2=、date +%Y%m%d%H%M%S、
date3='date -d -14day +"%Y%m%d"'
back="/home/beifen/$date1〞 if [ ! -d $back ] then
mkdir -p $back fi
tar -g $backlog -zcf $back/$date2.tar.gz $wenjian cd /home/beifen rm -rf
$date3
#shell脚本
贝脚内容 I 38
#!/bin/sh
#判断是不是有文件存放目录如果没有那么新建 if [ ! -d $back ]
then
mkdir -p $back
fi #用tar备份指定文件并打包 tar -g $backlog -zcf $back/$date2.tar.gz $wenjian
#命令在第一次使用的时候是完整
备份,之后使用那么是增量备份
#进入备份存放目录删除指定时间目录
cd /home/beifen
rm -rf $date3
如果需要一周备份一次完整备份,我们只需要把记录文件删除或者备份到其他目录或者改名就好下面是
脚本
# ! /sbin/sh
date='date +%Y%m%d'
mv /home/backlog /home/backlog-$date
文件恢复:
使用tar解包命令进行解包,恢复顺序为,最后一次完整备份+最后一次完整备份后的一次增量备份
贝脚内容 wenjian="/home/backwenjian
backlog="/home/backlog"
date1='date +%Y%m%d'
date2=、date
+%Y%m%d%H%M%S、
date3='date -d -14day +"%Y%m%d"
back="/home/beifen/$date1" 企划编号:克烨O.202112260738
#指定需要备份的文件目录
#指定备份时候记录文件
#读取当前日期
#读取当前日期时间
#读取14天前的日期
#指定备份存放的文件目录
+……+最后一次增量备份.
脚本运行时间也是备份策略时间:
一种系统默认自动执行的目录有一下几个,如果备份策略规律符合下面的策略时间的话,可以把编写的
shell脚本放入对应的目录即可,系统会自动运行对应文件,提示:所以的shell脚本要给予执行权
限,否那么无法执行.
另外我们可以自己定义时间策略规律: 可以直接用命令:crontab -e来编辑,这个命令编辑的文件是/var/spool/cron/下面对应的用户 cron文件,如果你用的是root用户编辑的,那么你编辑的就是/var/spool/cron/root文件.也
可以直接修改/etc/crontab文件.
编辑文件格式如下:
Minute Hour Day Month Dayofweek Command
分钟 小时天 月每星期那天 命令
字段的代表的意思:
Minute代表每个小时第几分钟执行指定任务
Hour代表每天的第几个小时执行指定任务
Day代表每月的第几天执行指定的任务
Month代表每年的第几个月执行指定任务
Dayofweek 代表每周的第几天执行指定任务
Command代表指定要执行的程序
这些字段除了 Command是每次必须指定的以外其他的可以可选,不指定的可以用*代替
贝脚内容
38
下面举例说明: 38
/etc/cron.daily/ 每天执行一次
/etc/cron.monthly/ 每月执行一次
/etc/cron.weekly/ 每周执行一次
/etc/cron.hourly/ 每小时执行一次 分钟小时天 月每星期那天命令
10****sh/home/sh/mysql_back.sh指定每小时的第 10
分钟执行一次sh命令/home/sh/mysql_back.sh 是指定的脚本路径
1013***sh/home/sh/mysql_back.sh指定每天 13 点第
10分钟执行一次sh命令/home/sh/mysql_back.sh 是指定的脚本路径
101322**sh/home/sh/mysql_back.sh指定每月 22 号 13
点第10分钟执行一次sh命令/home/sh/mysql_back.sh是指定的脚本路径
1013225*sh/home/sh/mysql_back.sh指定每年的 5 月 22
号13点第10分钟执行一次sh命令/home/sh/mysql_back.sh 是指定的脚本路径
1013**2sh /home/sh/mysql_back.sh指定每星期二 13 点
第10分钟执行一次sh命令/home/sh/mysql back.sh是指定的脚本路径〔星期的数字代表分 —
别为:0星期天1星期一 2星期二……6星期六〕
*/10****sh /home/sh/mysql_back.sh 指定每 10 分钟
〔每小时第10 20 30 40 50 60〕执行一次sh命令 /home/sh/mysql_back.sh 是指定的脚本
路径
1013-18***sh /home/sh/mysql_back.sh 指定每天 13 点
到18点的第10分钟执行一次sh命令/home/sh/mysql_back.sh是指定的脚本路径
101322, 2 6**sh /home/sh/mysql_back.sh 指定每月 22 号
以及26号的13点第10分钟执行一次sh命令/home/sh/mysql_back.sh是指定的脚本路径
1013*/22**sh /home/sh/mysql_back.sh 指定每隔 22 天
13点10分钟执行一次sh命令/home/sh/mysql_back.sh是指定的脚本路径
1013***root run-parts /home/sh/ 指定每天 13 点第 10 分
页脚内容