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

使用mysqldump编写perl脚本进行mysql增量备份,mysql,perl,backup,centos5,Mysql,Perl,Backup,Centos5,我正在处理centos中mysql数据库的增量备份解决方案。我需要编写一个perl脚本来进行增量备份。然后我将使用crontab运行这个脚本。我有点困惑。有解决办法,但没有真正的帮助。我做了很多研究。有很多方法可以对文件进行完全备份和增量备份。我可以很容易地理解它们,但我需要对mysql数据库进行增量备份。我不知道怎么做。谁能帮我推荐一个源代码或一段代码。mysqldump就是其中之一 例如: mysqldump -u [user_name] -p[password] --database [d

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

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: $?";

但要注意这样做所涉及的安全风险。如果有人碰巧在系统运行时列出了系统上运行的当前进程,他们将能够看到用于数据库访问的凭据。

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: $?";

但要注意这样做所涉及的安全风险。如果有人碰巧在系统运行时列出了当前正在运行的进程,他们将能够看到用于数据库访问的凭据。

MySQL在这里记录了您所看到的增量备份方法:

实际上,您要做的是设置mysql实例,将对数据库的任何更改写入该二进制日志。这意味着任何更新、删除、插入等都会进入二进制日志,而不是select语句(不会更改数据库,因此不会进入二进制日志)

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

显然,如果您随后反复执行多个增量备份,则需要保留所有这些增量备份。我建议经常进行完整备份


事实上,如果可以的话,我建议您始终进行完整备份。在我看来,进行增量备份只会给你带来痛苦,但如果你需要这样做,那肯定是一种方法。

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

实际上,您要做的是设置mysql实例,将对数据库的任何更改写入该二进制日志。这意味着任何更新、删除、插入等都会进入二进制日志,而不是select语句(不会更改数据库,因此不会进入二进制日志)

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

显然,如果您随后反复执行多个增量备份,则需要保留所有这些增量备份。我建议经常进行完整备份


事实上,如果可以的话,我建议您始终进行完整备份。在我看来,进行增量备份只会给您带来痛苦,但如果您需要这样做,这肯定是一种方法。

您具体尝试了哪些方法,哪些方法无效?哪一个具体的文档还不清楚?MySQL文档有很好的总结:您具体尝试了哪些内容,哪些内容不起作用?哪一个具体的文档不清楚?MySQL文档有很好的总结:嗨,史蒂夫,谢谢你的回复。这需要对我已经得到的数据库进行完整备份。您能告诉我如何获得数据库的增量备份吗?我读到的是告诉我使用--bin log参数运行mysqld,以了解数据库中最近的更改并进行增量备份。smo还告诉我,为了完成这项任务,我需要在mysqldump中使用一些计时参数,这样我就能知道最近的变化。但是,我没有看到任何参数需要时间来生成备份文件。你明白我的意思吗?你现在能帮我吗?再次谢谢。问候。Ozlem,对不起,我实际上还没有做任何增量备份。下面是关于这个主题的另一个可能有用的讨论:。祝你好运我很想知道你是否成功。我留下了这个问题,无法完成。这样的事情可能会帮助你进一步调查。**mysqlbinlog--start date=“2009-07-07 15:00:00”--stop date=“2009-07-07 18:00:00”/backups/mysqlbin.0005/backups/mysqlbin.0007 | mysql**如果你能成功,我想看看玩具是怎么做的..问候你。你好,史蒂夫,谢谢你的回复。这需要对我已经得到的数据库进行完整备份。您能告诉我如何获得数据库的增量备份吗?我读到的是告诉我使用--bin log参数运行mysqld,以了解数据库中最近的更改并进行增量备份。smo还告诉我,为了完成这项任务,我需要在mysqldump中使用一些计时参数,这样我就能知道最近的变化。然而我没有看到