【问题标题】:writing perl script to take mysql incremental backup with mysqldump编写 perl 脚本以使用 mysqldump 进行 mysql 增量备份
【发布时间】:2011-06-10 00:23:26
【问题描述】:

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

【问题讨论】:

标签: mysql perl backup centos5


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 您好史蒂夫,感谢您的回复。这需要我已经获得的数据库的完整备份。你能告诉我我应该如何获得数据库的增量备份吗?我读到的是告诉我使用 --bin-log 参数运行 mysqld 以了解数据库中的最新更改并进行增量备份。 smo 还告诉我要完成这个任务,我需要在 mysqldump 中使用一些计时参数,这样我才能知道最近的变化。但是我没有看到任何参数需要时间来生成备份文件。你明白我的意思吗?你现在能帮我吗?再次感谢。问候。奥兹勒姆。
    • 对不起,我实际上没有做任何增量备份。这是关于该主题的另一个可能有用的讨论:mobile.experts-exchange.com/Q_23185202.html。祝你好运。如果你成功了,我很想知道。
    • 我已经留下了这个问题,无法完成。这样的事情可能会帮助您进一步调查。 ** mysqlbinlog --start-date="2009-07-07 15:00:00" --stop-date="2009-07-07 18:00:00" /backups/mysqlbin.0005 /backups /mysqlbin. 0007 |mysql ** 如果你让它工作,我想看看玩具是怎么做的......问候。
    猜你喜欢
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    相关资源
    最近更新 更多