【问题标题】:How to create MySQL back up executable file?如何创建 MySQL 备份可执行文件?
【发布时间】:2010-01-13 17:45:59
【问题描述】:

我正在使用 php、mysql,我的服务器是带有 IIS6 的 Windows Server 2003。

我计划每小时备份一次我的数据库。我可以做 cronjob,通过将日期和时间写入日志文件进行测试。它完美地工作。

现在我想使用 cronjob 来备份我的数据库。我怎么做?创建一个 php 脚本并让它每小时运行一次?

【问题讨论】:

    标签: php mysql backup cron database


    【解决方案1】:

    使用mysqldump。示例(带有我通常使用的选项):

    mysqldump --single-transaction --hex-blob --opt -e --quick --quote-names -r put-your-backup-filename-here put-your-database-name-here
    

    【讨论】:

    • 我需要创建一个批处理文件并让它每小时运行一次吗?我是 mysqldumb 的新手,你能详细说明一下吗?
    • 是的,在 .bat 文件中进行。 Mysqldump 从命令行运行(例如“DOS”窗口)。
    【解决方案2】:

    正如其他人所写,mysqldump 工具是最简单的解决方案,但是如果您有一个大型数据库,即使使用 --quick 设置,我还是建议您进行一些试验。使用旧的 C-ISAM 引擎,一次处理一个查询。尽管这对 InnoDB 来说不是什么问题,但我不确定 MySQL 现在是否支持完全并发查询。您的备份可能会影响事务处理。

    如果确实有问题,那么一个简单的解决方案是配置在同一台机器上运行的数据库的从属实例,然后对它运行 mysqldump,或者在备份原始数据时暂时关闭从属实例文件。

    或者,您可以将镜像下推到操作系统级别并执行磁盘级别快照 - 但您需要在创建快照(或破坏镜像)之前停止数据库上的事务并刷新它。

    C.

    【讨论】:

    • +1 用于在从属设备上创建(完整)备份。希望我能再给一个 +1 来提及交易和/或数据一致性。
    【解决方案3】:

    使用mysqldump 工具将您的数据库转储到文件中。

    【讨论】:

      【解决方案4】:

      我认为您可以使用 cron 作业来启动 db 文件的副本,我认为运行 php 脚本进行备份的 cron 作业不是一个好的选择(它很复杂,不需要它)。 我认为mysqldump也是一个不错的选择,但我不能帮你。

      【讨论】:

      • 在数据库运行时复制文件根本不是一个好主意。这可能会导致损坏的文件,在最坏的情况下,MySQL 无法修复这些文件。作为备份解决方案,这绝对是可怕的。
      【解决方案5】:

      编辑:此脚本适用于 Unix(或变体)。

      我也想做同样的事情(包括发送备份电子邮件并归档我的代码/页面)并写了如下内容:

      #! /bin/bash
      
      NOW=`date +"%Y-%m-%d"`
      MAIL_TO="email@example.com";
      MAIL_SUBJECT="Hourly backup"
      MAIL_MESSAGE="mail-message";
      
      DB_FILE="backup-database-$NOW.sql.gz"
      SITE_FILE="website-$NOW.tar.gz"
      
      echo "Database dump:" >> $MAIL_MESSAGE
      mysqldump --defaults-extra-file=.mysql-pwd --add-drop-table -C my_databse 2>> $MAIL_MESSAGE | gzip > $DB_FILE 2>> $MAIL_MESSAGE
      
      echo "Site dump (www and php-include):" >> $MAIL_MESSAGE
      tar -zcf $SITE_FILE /path/to/www/ /path/to/php-include/ 2>> $MAIL_MESSAGE
      
      echo >> $MAIL_MESSAGE
      echo >> $MAIL_MESSAGE
      echo "Done" >> $MAIL_MESSAGE
      
      mutt -s "$MAIL_SUBJECT" -a $DB_FILE -a $SITE_FILE $MAIL_TO < $MAIL_MESSAGE
      

      【讨论】:

      • 这很酷。也许我知道,我可以使用这个脚本吗?目前有遇到什么问题吗?
      • 当然你可以使用(并为你自己的目的修改)它,这就是我发布它的原因。我现在运行它半年多了(每周备份),我仍然每周都会收到我的电子邮件。
      • 这太酷了。你能帮我解决这个问题吗?你是怎样做的?我在文本板中编辑了你的脚本,现在我应该另存为什么文件格式?以及如何设置它每天/每周/每月等运行?请帮忙
      • 这是一个 *unix bash 文件,所以将它保存为 backup.sh 或类似的文件。然后让cron为你运行它,通过使用crontab -e添加命令来启动backup.sh文件
      • 哦.. 我使用的是 Windows 操作系统。会不会有什么问题?另存为 backup.sh,使用任务计划程序并设置每周调用该文件?
      猜你喜欢
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多