0

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

4

2 回答 2

3

MySQL 在此处记录了您一直在查看的增量备份方法:

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

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

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

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

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

于 2011-02-08T22:14:54.627 回答
0

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

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

于 2011-01-17T18:03:01.123 回答