《2022年mysql备份与恢复方案 .pdf》由会员分享,可在线阅读,更多相关《2022年mysql备份与恢复方案 .pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、服务器备份方案一、 MYSQL数据库备份与恢复:数据库本地备份:当数据量少的时候可以在每天凌晨1 点-3 点进行完全备份,随着数据库的增大,可以2 两小时(按照需求设置时间)做增量备份与完全备份相结合的备份方式以确保数据的安全。数据库完全备份脚本:1. 确定我们备份文件存放的目录这里我把所有备份文件放到/home/mysqlback 2. 确定需要备份的数据库,这里我们用备份d_test 这个数据库来说明。3. 确定我们要备份的时间,我们以每天两小时备份一次做说明。#!/bin/sh dbuser=root dbpasswd=123456 dbname=d_test date1=date +%
2、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脚本dbuser=root #定义数据库用户名dbpasswd=123456 #定义数据库密码dbname
3、=d_test #定义需要备份的数据库date1=date +%Y%m%d #读取当前日期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$dbuse
4、r -p$dbpasswd $dbname | gzip $back/$dbname$date2.sql.gz #删除指定 5 天前备份的过期文件以便节省磁盘空间cd /home/mysqlback rm -rf $date3 异地备份首先准备一台异地的服务器,并且搭建好vsftp(vsftp 具体搭建详细步骤请参考VSFTP 搭建文档)异地备份到 vsftp 服务器上脚本如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - #
5、!/bin/sh echo start backup. dbuser=root dbpasswd=123456 dbname=d_test 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/2015.sql.gz sleep 5s cd $back ftp EOF open 19
6、2.168.16.104 user ftp1 1123456 binary put 2015.sql.gz rename 2015.sql.gz $date2.sql.gz close bye EOF mv 2015.sql.gz $date2.sql.gz cd /home/ftp1 rm -rf $date3 数据库恢复或者重建,因为是完全备份,可以直接恢复最后一次完全备份文件。gunzip 备份 .sql.gz | mysql -u root -p d_test 二 文件备份与恢复:因为文件一般都比较大,所以我们采用完整与增量结合的方式做备份,每个星期(时间具体情况而定)备份完整备份一次
7、文件,每天做一次增量备份。备份脚本如下#!/bin/sh wenjian=/home/backwenjian backlog=/home/backlog date1=date +%Y%m%d 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - date2=date +%Y%m%d%H%M%S date3=date -d -14day +%Y%m%d back=/home/beifen/$date1 if ! -d $back the
8、n mkdir -p $back fi tar -g $backlog -zcf $back/$date2.tar.gz $wenjian cd /home/beifen rm -rf $date3 #!/bin/sh #shell脚本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 #读取 14 天前的日期back=/home
9、/beifen/$date1 #指定备份存放的文件目录#判断是不是有文件存放目录如果没有则新建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%
10、d mv /home/backlog /home/backlog-$date 文件恢复:使用 tar 解包命令进行解包, 恢复顺序为,最后一次完整备份 +最后一次完整备份后的一次增量备份+ +最后一次增量备份。脚本运行时间也是备份策略时间:一种系统默认自动执行的目录有一下几个,如果备份策略规律符合下面的策略时间的话,可以把编写的shell 脚本放入对应的目录即可,系统会自动运行对应文件,提示:所以的shell 脚本要给予执行权限,否则无法执行。/etc/cron.daily/ 每天执行一次/etc/cron.monthly/ 每月执行一次/etc/cron.weekly/ 每周执行一次/etc
11、/cron.hourly/ 每小时执行一次名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - 另外我们可以自己定义时间策略规律:可以直接用命令 :crontab e 来编辑,这个命令编辑的文件是/var/spool/cron/ 下面对应的用户 cron 文件,如果你用的是root 用户编辑的,那么你编辑的就是/var/spool/cron/root 文件。也可以直接修改/etc/crontab 文件。编辑文件格式如下:Minute
12、Hour Day Month Dayofweek Command 分钟小时天月每星期那天命令字段的代表的意思:Minute 代表每个小时第几分钟执行指定任务Hour 代表每天的第几个小时执行指定任务Day 代表每月的第几天执行指定的任务Month 代表每年的第几个月执行指定任务Dayofweek 代表每周的第几天执行指定任务Command 代表指定要执行的程序这些字段除了 Command是每次必须指定的以外其他的可以可选,不指定的可以用*代替下面举例说明:Minute Hour Day Month Dayofweek Command 分钟小时 天月每星期那天命令10 * * * * sh /h
13、ome/sh/mysql_back.sh 指定每小时的第10 分钟执行一次 sh命令 /home/sh/mysql_back.sh 是指定的脚本路径10 13 * * * sh /home/sh/mysql_back.sh 指定每天 13点第 10分钟执行一次 sh命令 /home/sh/mysql_back.sh 是指定的脚本路径10 13 22 * * sh /home/sh/mysql_back.sh 指定每月 22号 13点第 10分钟执行一次 sh命令 /home/sh/mysql_back.sh 是指定的脚本路径10 13 22 5 * sh /home/sh/mysql_back
14、.sh 指定每年的 5 月 22 号 13点第 10分钟执行一次 sh命令 /home/sh/mysql_back.sh 是指定的脚本路径10 13 * * 2 sh /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_b
15、ack.sh 是指定的脚本路径10 13-18 * * * sh /home/sh/mysql_back.sh 指定每天 13 点到 18 点的第 10分钟执行一次 sh命令 /home/sh/mysql_back.sh 是指定的脚本路径10 13 22,26 * * sh /home/sh/mysql_back.sh 指定每月 22 号以及 26 号的13 点第 10 分钟执行一次 sh 命令 /home/sh/mysql_back.sh 是指定的脚本路径10 13 */22 * * sh /home/sh/mysql_back.sh 指定每隔 22天 13点 10分钟执行一次 sh命令 /home/sh/mysql_back.sh 是指定的脚本路径10 13 * * * root run-parts /home/sh/ 指定每天 13点第 10分钟执行 /home/sh/下面的所有可以执行的文件。我们通过上面的举例可以灵活设置出实际需求策略。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -
限制150内