关于linux如何实现mysql数据库每天自动备份与定时备份的示例详解
备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。这篇文章主要介绍了linux实现mysql数据库每天自动备份定时备份,需要的朋友可以参考下
概述
备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。而对于一些网站、系统来说,数据库就是一切,所以做好数据库的备份是至关重要的!
备份是什么?
为什么要备份
容灾方案建设
存储介质
光盘
磁带
硬盘
磁盘阵列
DAS:直接附加存储
NAS:网络附加存储
SAN:存储区域网络
云存储
这里主要以本地磁盘为存储介质讲一下计划任务的添加使用,基本的备份脚本,其它存储介质只是介质的访问方式可能不大一样。
1、查看磁盘空间情况:
既然是定时备份,就要选择一个空间充足的磁盘空间,避免出现因空间不足导致备份失败,数据丢失的恶果!
存储到当前磁盘这是最简单,却是最不推荐的;服务器有多块硬盘,最好是把备份存放到另一块硬盘上;有条件就选择更好更安全的存储介质;
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 50G 46G 16G 97% /
tmpfs 19G 92K 19G 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/mapper/VolGroup-lv_home 534G 36G 503G 1% /home2、创建备份目录:
上面我们使用命令看出/home下空间比较充足,所以可以考虑在/home保存备份文件;
cd /home
mkdir backup
cd backup3、创建备份Shell脚本:
注意把以下命令中的DatabaseName换为实际的数据库名称;
当然,你也可以使用其实的命名规则!
vi bkDatabaseNamesh输入/粘贴以下内容:
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S)sql对备份进行压缩:
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S)sqlgz注意:
把 username 替换为实际的用户名;
把 password 替换为实际的密码;
把 DatabaseName 替换为实际的数据库名;
4、添加可执行权限:
chmod u+x bkDatabaseNamesh添加可执行权限之后先执行一下,看看脚本有没有错误,能不能正常使用;
/bkDatabaseNamesh
5、添加计划任务
检测或安装 crontab
确认crontab是否安装:
执行 crontab 命令如果报 command not found,就表明没有安装
# crontab
-bash: crontab: command not found如时没有安装 crontab,需要先安装它,具体步骤请参考:
CentOS下使用yum命令安装计划任务程序crontab
使用rpm命令从CentOS系统盘安装计划任务程序crontab
添加计划任务
执行命令:
crontab -e这时就像使用vi编辑器一样,可以对计划任务进行编辑。
输入以下内容并保存:
/1 /home/backup/bkDatabaseNamesh具体是什么意思呢?
意思是每一分钟执行一次shell脚本“/home/backup/bkDatabaseNamesh”。
6、测试任务是否执行
很简单,我们就执行几次“ls”命令,看看一分钟过后文件有没有被创建就可以了!
如果任务执行失败了,可以通过以下命令查看任务日志:
# tail -f /var/log/cron输出类似如下:
Sep 30 14:01:01 bogon run-parts(/etc/cronhourly)[2503]: starting 0anacron
Sep 30 14:01:01 bogon run-parts(/etc/cronhourly)[2512]: finished 0anacron
Sep 30 15:01:01 bogon CROND[3092]: (root) CMD (run-parts /etc/cronhourly)
Sep 30 15:01:01 bogon run-parts(/etc/cronhourly)[3092]: starting 0anacron
Sep 30 15:01:02 bogon run-parts(/etc/cronhourly)[3101]: finished 0anacron
Sep 30 15:50:44 bogon crontab[3598]: (root) BEGIN EDIT (root)
Sep 30 16:01:01 bogon CROND[3705]: (root) CMD (run-parts /etc/cronhourly)
Sep 30 16:01:01 bogon run-parts(/etc/cronhourly)[3705]: starting 0anacron
Sep 30 16:01:01 bogon run-parts(/etc/cronhourly)[3714]: finished 0anacron
Sep 30 16:15:29 bogon crontab[3598]: (root) END EDIT (root)总结
用raid 1模式,可以软件实现也可以硬件实现。很多主板支持硬件实现raid功能,在BIOS中打开raid支持选项,启动时就会提示进入raid配置。
进入配置界面后,应能找到这两块硬盘,创建一个raid 1,将两块硬盘加入,随后会要求对其格式化。这样应该就完成了,安装操作系统后系统中就只能找到一块硬盘。实际上就已经是raid 1模式了。再有就是软件实现了,要在windows 中进行设置了,网上应该有很多。
服务器
服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
是随着文件备份与ftp被广泛应用的产物。利用ftp自动备份可轻松解决企业、网站等数据中心的备份任务。在管理人员繁忙或无人值守的时候,实现远程轻松备份和远程自动备份。其目的,是为防止企业、网站、服务器等数据中心出现意外时,能在最短的时间恢复正常运作。
ftp自动备份——filegee
新建一个备份任务,选择任务的备份类型;备份的源目录为ftp服务器,可对ftp服务器进行增、删、改设置。
目标目录可选择本机或ftp(目标目录是ftp,也就是说可将文件远程备份到其它地方);还可对文件进行压缩加密。在根据建立任务向导中,自动执行的模式有多种,可根据数据的更新量来设置自动执行的时间,ftp自动备份模式有:每月、每周、每日、间隔、实时。时间跨度满足ftp自动备份对所有时间的要求,只要设定好自动执行的时间,就可全天候随时自动执行备份任务。这里选择的是,每天下午的17:00自动执行远程ftp的备份任务。如下:
在任务建立的向导中,还可以对文件进行选择,可以选择需要备份的部分文件;可设置任务自动重试,可设置自动重试到任务完全成功为止,所以,完全不必担心ftp自动备份任务不成功或出错而无法备份的情况。如果备份的数据量大,还可设置自动删除日志文件,做到节省存储空间。如果,还是不放心备份文件的安全,可对文件加密(这已是第二次加密了,前面步骤中,可压缩加密),在保证ftp自动备份文件时,还能充分保障备份的安全。还可生成执行命令,在执行任务前后运行其他的程序。
通过上述步骤,就可完成ftp自动备份的任务,操作非常简单,功能非常强大。能够实时、远程的完成ftp备份任务,不仅节省了时间,提高了效率,还保证了备份文件的安全。
服务器备份进行方法
服务器备份是指针对于服务器所产生的数据信息进行相应的存储备份过程,从而保障数据的安全运行,从狭义上来看信息的价值在于其潜在用途,并会随着时间的推移而改变。数据管理和保护可攫取信息的最大价值,并规避因未按照监管法规保留信息而导致的风险。企业应对当前和将来的信息使用方式进行评估,实施满足其全部需求的流程和技术。
1、完全备份。
每天对自己的系统进行完全备份。当发生数据丢失的灾难时,只要用一盘磁带(即灾难发生前一天的备份磁带),就可以恢复丢失的数据。然而它亦有不足之处,首先,由于每天都对整个系统进行完全备份,造成备份的数据大量重复。这些重复的数据占用了大量的磁带空间,这对用户来说就意味着增加成本。其次,由于需要备份的数据量较大,因此备份所需的时间也就较长。对于那些业务繁忙、备份时间有限的单位来说,选择这种备份策略是不明智的。
2、增量备份。
星期天进行一次完全备份,然后在接下来的六天里只对当天新的或被修改过的数据进行备份。这种备份策略的优点是节省了磁带空间,缩短了备份时间。但它的缺点在于,当灾难发生时,数据的恢复比较麻烦。例如,系统在星期三的早晨发生故障,丢失了大量的数据,那么现在就要将系统恢复到星期二晚上时的状态。这时系统管理员就要首先找出星期天的那盘完全备份磁带进行系统恢复,然后再找出星期一的磁带来恢复星期一的数据,然后找出星期二的磁带来恢复星期二的数据。很明显,这种方式很繁琐。另外,这种备份的可靠性也很差。在这种备份方式下,各盘磁带间的关系就象链子一样,一环套一环,其中任何一盘磁带出了问题都会导致整条链子脱节。比如在上例中,若星期二的磁带出了故障,那么管理员最多只能将系统恢复到星期一晚上时的状态。
3、差分备份。
管理员先在星期天进行一次系统完全备份,然后在接下来的几天里,管理员再将当天所有与星期天不同的数据(新的或修改过的)备份到磁带上。差分备份策略在避免了以上两种策略的缺陷的同时,又具有了它们的所有优点。首先,它无需每天都对系统做完全备份,因此备份所需时间短,并节省了磁带空间,其次,它的灾难恢复也很方便。系统管理员只需两盘磁带,即星期一磁带与灾难发生前一天的磁带,就可以将系统恢复。在实际应用中,备份策略通常是以上三种的结合。例如每周一至周六进行一次增量备份或差分备份,每周日进行全备份,每月底进行一次全备份,每年底进行一次全备份。
可以用一下ucache灾备云这种方式来进行数据实时备份、定时备份、自动备份、增量备份、永久增量备份、加密类型设置、多副本数据管理、CDP数据持续保护功能、多通道备份、支持LAN-Free和LAN-Base、数据重删功能、设置数据保留策略、对备份任务可以设置流量控制、任务告警、任务日志查看等。而且这些操作就是在云控制台的管理账号下直接可以操作。挺方便的。
服务器是Windows2003操作系统和linux操作系统也都支持。
数据库备份的重要性毋庸置疑,本地备份是不安全的,理想的方式是通过公网实现远程异地备份,这个笔者几年前已在使用。主要是在远程服务器上安装FTP服务软件如Serv-U等,而本地服务器上安装SyncBackSE 40软件,自动定时把数据库备份文件上传到远程FTP服务器上,当然数据库要选择压缩备份,可以极大地减少网络传输流量。
但是最近笔者遇到了一个棘手的问题,随着数据库数据的日益增长,即使采用压缩备份方式,生成的备份文件尺寸也是很大,特别是数据库中含有图像数据时,压缩率很低,备份文件有几个G那么大,远程备份经常因为连接中断导致备份失败的情况就出现了。为此,笔者尝试了多种办法,但是一直无法解决这个问题。
最近笔者终于想出了一个新方法,经测试有效解决了这个问题。办法如下:
1、在SqlServer2008R2数据库中建立两个数据库备份计划,一个是完整备份方式,每月初运行一次,另一个是差异备份方式,每日运行一次,当然都要采用压缩方式。为什么要这样做呢,是因为如果每天都进行完整备份,则每天都要把整个数据量向远程FTP服务器传输一次,占用了许多流量,没有这个必要。
2、建立一个批处理文件,输入两条命令:
Del /q rar
Rar a _m0 _v100mXXXrar XXXbak
第一条命令是把老的压缩文件先删掉,第二条命令是用rar压缩软件的命令行方式对第一步中生成的完整数据库备份文件进行分卷处理,命令a是指压缩方式,命令-m0是指零压缩率,即不再进一步压缩,因为备份文件已经是压缩方式备份的,没必要再压缩一次,这样速度就比较快,命令-v100m是指定每个分卷文件的大小是100兆,这个大小可以根据网络带宽来调整,网速快的可增大一些,网速慢就减小一些,这个要通过测试来自行调整。
第二条命令中必须要添加好绝对路径,因为这个批处理要放到数据库作业中去自动执行的,当然还要把rarexe这个文件从winrar软件中提取出来放到需要的文件夹中。
3、在SqlServer2008R2数据库中建立一个作业,作业中建立一个步骤,步骤的类型选择“操作系统(CmdExec)”,命令中输入第二步建立的批处理文件名,也要输入绝对路径。这个作业不需要制订计划,可以单独先测试一下,看是否能正常执行。
4、把第三步建立的作业挂到完整备份计划的最后一步,这样当每月初进行完整备份时能自动把备份好的文件进行分卷处理,这样大文件就变成了多个小文件,有利于通过网络传输,即使网络出现中断,也不用全部从头开始传输了。
5、设置SyncBackSE软件进行每日自动定时远程备份,只需要把差异备份文件和经过分卷处理的完整备份文件传输到远程FTP服务器上就可以了。需要恢复时先从分卷压缩包中把完整备份文件解出来,恢复到数据库中,再把差异压缩文件选择最新的那个恢复到数据库中就能把数据库完整恢复出来了。
饿,楼主您要备份的是什么数据。如果您使用的是WINDOWS的SERVER系统,那么它自己就有备份功能,只需要您设置。当然您也可以使用第三方的软件如果您要备份的是SQL数据,那么它更是有很不错的备份功能了,您仔细查看,不难找到的。(服务器的话,相信是多盘并且建立过RAID磁盘阵列的,这种情况下,RAID磁盘阵列技术都具有数据的副本备份创建功能,或者是分散存储,或者是一张主盘,一张备份盘,这要根据您的实际情况来定)简单来说,您服务器系统中自带有备份功能,只需要您找到它并且进行需要的设置即可
0条评论