【问题标题】:How to backup a huge mysql database in PHP with lowest usage (busy) of linux server?如何以最低的Linux服务器使用率(繁忙)在PHP中备份一个巨大的mysql数据库?
【发布时间】:2012-07-15 06:55:13
【问题描述】:

我们正在使用 PHP 和 Mysql 开发一个基于 Web 的应用程序。如您所知,使用 Web 界面备份大型数据库存在限制,因此我需要一个解决方案来通过以下条件备份我们的大型数据库:

  1. 该过程可以在没有 Web 界面的情况下完成,并且必须在命令行中运行(例如作为 Linux 服务)

  2. 进程应该使用最少的服务器资源(换句话说,当备份进程运行时,客户端可以使用服务器上的服务)

  3. 有些功能至关重要(例如备份、恢复、压缩和拆分备份文件),有些功能是可选的(例如邮件和 FTP ......)

  4. 脚本必须用 PHP 或 Perl 编写。

有什么想法吗?

【问题讨论】:

  • 巨大是什么意思?你能给出一些绝对的数字吗?
  • 你考虑过 AutoMySQLBackUp 吗? sourceforge.net/projects/automysqlbackup 基本上是围绕 mysqldump 命令编写脚本。 “具有基本配置的 AutoMySQLBackup 将从一个或多个 MySQL 服务器创建一个或多个 MySQL 数据库的每日、每周和每月备份。其他功能包括: - 备份的电子邮件通知 - 备份压缩和加密 - 可配置的备份轮换 -增量数据库备份”

标签: php mysql linux perl mysqldump


【解决方案1】:

查看mysqldump 进行命令行备份

完整的数据库备份:

mysqldump -u USER_NAME -p DB_NAME > DB_NAME.sql

如果您的数据库很大并且您不想备份完整的数据库。您只能备份单个/多个表

mysqldump -u USER_NAME -p DB_NAME TABLE_NAME > TABLE_NAME.sql

【讨论】:

    【解决方案2】:

    我完全避免编写脚本,只使用 MySQL 内置的工具。这是一个很好的mysqldump教程:

    http://www.thegeekstuff.com/2008/09/backup-and-restore-mysql-database-using-mysqldump/

    【讨论】:

      【解决方案3】:

      您可能想要考虑设置到第二台服务器的复制,并且您有一个实时备份,如果您想存储旧备份,您可以使用第二台服务器的资源来制作 thous

      【讨论】:

        【解决方案4】:

        使用 nice 运行 php 脚本,值为 19 会使进程的优先级很低

        nice -n 19 php /path/to/backupscript.php
        

        【讨论】:

        • 只有在脚本受 CPU 限制时才有帮助。
        • 确实如此,如果备份锁定了数据库,那么“很好地”这样做只会延长锁定时间。
        猜你喜欢
        • 2010-09-22
        • 2012-01-16
        • 1970-01-01
        • 2018-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多