APP下载

MySQL自动定时备份方式的实现

2014-05-10许雪晶

宜春学院学报 2014年3期
关键词:文件名命令备份

许雪晶

(莆田学院,福建 莆田 351100)

随着计算机网络信息化的迅速发展,各种大中小型企业都构建了企业的信息化系统,比如企业网站、企业OA、企业财务系统等等。这必然涉及到数据存储,MySQL数据库凭借其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,迅速的占有中小型企业的信息化市场。

谈及数据存储,就得保证数据库的安全性,而对数据库进行定期备份是预防和尽可能降低数据损失的最有效方法。此时可采用“双机热备”或“冷备份”技术。“双机热备”随时保障数据安全,数据可以恢复到故障前那一点,但该技术人力物力投入较高,适合于大公司、大企业;“冷备份”只能保障备份点那时的数据安全,因此需要结合自动定时备份。利用 Windows和Linux平台,并结合MySQL数据库系统的内置功能以及 Windows和Linux的脚本,通过VB、PHP等技术,实现了多种方式自动定时备份MySQL数据库。

1 相关技术

实现MySQL在多平台上的自动备份主要涉及到的技术有:Windows的任务计划服务、Linux的定时机制和MySQL数据库的存储机制。

1.1 Windows的任务计划服务

在Windows中,系统有一项重要的“任务计划”功能,任务计划[1]是自定义的,灵活性强。通过设置“任务计划”,可以将每天或某一天的某个时间需要做的事拟成计划,到约定的时间,系统都会提醒你或者启动设定好的任务程序。任务计划可能会被系统禁用,须修改组策略。在开始菜单“运行”中键入“services.msc”,系统中的“Task Scheduler”服务被设置为“已禁用”,立即将其改为“启动”。

1.2 Linux的定时机制

定时自动执行可以通过Linux中的守护程序Cron来完成。Cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron是Linux的内置服务,可以用以下的方法启动、关闭这个服务:

1.3 MySQL数据库的存储机制

MySQL提供的 mysqldump转储工具[2]是将数据库表的内容写入到文本文件中,在缺省设置下,每个转储表的输出结构由重新创建该表的create table语句,后跟一组重新加载该表内容的insert语句组成,整个文件由许多个这样的输出结构组成,故可用该文件来备份和恢复数据库。

mysqldump工具主要是供数据库管理员或程序开发人员使用。常用方法如下:

mysqldump-u用户名 -p密码 -h主机需备份是数据库名 >生成的备份文件名称。

2 功能实现

自动定时备份功能的实现分3大部分,一是基于windows的任务计划,结合MySQL数据库备份脚本程序;二是基于 linux的定时机制,结合MySQL数据库备份脚本程序;三是利用VB开发定时小工具,再结合PHP网络编程语言。

2.1 基于Windows的数据库自动定时备份

首先,新建mysql数据库备份脚本文件如下:

mysql_backup.bat如下:

其次,新建一个计划任务,把mysql_backup.bat加入进去,设置为每天凌晨3点运行下就可以实现mysql数据库自动定时备份。

2.2 基于Linux的数据库自动定时备份

首先需要先编辑vim/etc/crontab;其次加入数据库自动定时备份的代码:

需要注意:crontab文件的每行都包含6个域,其中前5个域是指定命令被执行的时间,最后一个域是要被执行的命令,各个域之间用空格或制表符分隔。格式为:M H D m d cmd。其中:M代表分钟 (0-59);H代表小时 (0-23);D代表天 (1-31);m代表月份 (1-12);d代表星期几 (0-6);cmd代表要运行的命令。

含义为:在每天的凌晨3点执行该任务,以root身份执行,任务内容为:使用mysqldump命令备份数据库,需要提供MySQL的用户名和密码(-u root-p PASSWORD),选项是备份所有数据库 (--all-databases)。然后转用gzip命令压缩,将最终的备份文件保存到文件夹/mnt/database,文件名为`date+'\%Y - \%m - \%d'`.sql.gz。这里date是Linux显示当前时间的命令,+号后面的参数指定了时间显示格式为年-月-日,整个date命令用反引号`括起来表示将date的输出结果替换引号中的内容。

最后更新配置,在/etc/crontab中加入了计划任务语句后,还需要手动更新下配置。先重启下cron服务:service cron restart;然后,更新下配置:crontab/etc/crontab。

2.3 Vb+php备份网站类型的MySQL数据库

首先,需要编写备份数据下载程序(backup.php),编写MySQL数据库数据备份的php程序难点在于如何保证数据库每次自动备份数据的文件名各不相同,并能够生成sql方便被下载。为了使数据库每次备份的文件名字各不相同,文件名采用“数据库名+年+月+日+时”的命名机制,确保每次生成的文件名各不相同,可以利用PHP语言中的Date函数结合mysqldump进行实现[3]。具体程序如下:

其次,就是如何实现数据库定时备份,此时需要结合VB6.0的定时控件来触发备份数据的下载文件 (backup.php)来实现MySQL数据库的自动定时备份。见图1:

图1 MySQL数据库的自动定时备份软件界面

3 结束语

通过MySQL自动定时备份多种方式浅析,不仅很好地保障了数据的安全性,而且大大减轻了数据库管理员的负担。其中Vb+php备份网站类型的MySQL数据库的方式非常适合站群的快速批量备份。

以下关键代码是实现在固定的某个时间打开默认的网址。

[1]王春海.Windows Server 2008 R2系统管理实战[M].北京:清华大学出版社,2012

[2]DuBois P.MySQL权威指南[M].北京:机械工业出版社,2004

[3]Welling L,Thomson L.PHP与 MySQL Web开发权威指南[M].北京:中国电力出版社,2002

猜你喜欢

文件名命令备份
“备份”25年:邓清明圆梦
VSAT卫星通信备份技术研究
只听主人的命令
创建vSphere 备份任务
右键调用多重更名更方便
Excel轻松提取文件名
把我的秘密藏起来
移防命令下达后
旧瓶装新酒天宫二号从备份变实验室
这是人民的命令