繁体   English   中英

编写perl脚本以使用mysqldump进行mysql增量备份

[英]writing perl script to take mysql incremental backup with mysqldump

我正在用centos处理mysql数据库的增量备份解决方案。 我需要编写一个perl脚本来进行增量备份。 然后我将使用crontabs运行此脚本。 我有点困惑。 有解决方案,但没有真正帮助。 我做了很多研究。 有很多方法可以对文件进行完全备份和增量备份。 我可以很容易地理解它们,但是我需要对mysql数据库进行增量备份。 我不知道怎么做。 任何人都可以帮助我建议源代码或一段代码。

MySQL记录了您一直在研究的增量备份方法:

http://dev.mysql.com/doc/refman/5.0/en/binary-log.html

本质上,您要做的是设置mysql实例,以将对数据库的所有更改写入此二进制日志。 这意味着在二进制日志中进行任何更新,删除,插入等操作,但不执行select语句(不会更改数据库,因此不会在二进制日志中进行处理)。

一旦您的mysql实例在二进制日志打开的情况下运行,就进行完整备份并记下主位置。 然后,要进行增量备份,您想从主位置运行mysqlbinlog,其输出将是自进行完整备份以来对数据库所做的所有更改。 此时,您将要再次注意主位置,因此您知道要从中进行下一个增量备份的点。

显然,如果您一次又一次进行多个增量备份,则需要保留所有这些增量备份。 我建议经常进行完整备份。

确实,如果可以的话,我建议您始终进行完整备份。 IMO,进行增量备份只会让您感到痛苦,但是,如果您需要这样做,那肯定是一种方法。

mysqldump是票证。

例:

mysqldump -u [user_name] -p[password] --database [database_name] >/tmp/databasename.sql

-u = mysql数据库用户名

-p = mysql数据库密码

注意:-p选项后没有空格。 而且,如果必须在perl中执行此操作,则可以使用系统函数来调用它,如下所示:

system("mysqldump -u [user_name] -p[password] --database [database_name] >/tmp/databasename.sql") or die "system call failed: $?";

请注意执行此操作涉及的安全风险。 如果有人偶然列出了正在运行的系统上当前正在运行的进程的清单,那么他们将能够查看用于数据库访问的凭据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM