mysql备份数据库:MySQL数据备份

  在安装数据库表时不访问它们

  3 复制数据库(Replicating Database)

  复制(Replication)类似于拷贝数据库到另台服务器上但它确切含义是实时地保证两个数据库完全同步这个功能将在 3.23 版中出现而且还不很成熟因此本文不作详细介绍

  4 用备份恢复数据

  数据库损坏发生有很多原因程度也区别如果你走运你可能仅损坏两个表(如掉电)如果你倒霉你可能必须替换整个数据目录(如磁盘损坏)在某些情况下也需要恢复比如用户地删除了数据库或表不管这些倒霉事件原因你将需要实施某种恢复

  如果表损坏但没丢失尝试用 myisamchk 或 isamchk 修复它们如果这样损坏可有修复修复你可能根本不需要使用备份文件

  恢复过程涉及两种信息源:你备份文件和个更新日志备份文件将表恢复到实施备份时状态然而般表在备份和发生问题的间时间内已经被修改更新日志包含了用于进行这些修改查询你可以使用日志文件作为 mysql 输入来重复查询这已正是为什么要启用更新日志原因

  恢复过程视你必须恢复信息多少而区别实际上恢复整个数据库比单个表跟容易对于数据库运用更新日志比单个表容易

  4.1 恢复整个数据库

  首先如果你想恢复数据库是包含授权表 mysql 数据库你需要用 --skip -grant-table 选项运行服务器否则它会抱怨不能找到授权表在你已经恢复表后执行 mysqladmin flush-privileges 告诉服务器装载授权标并使用它们

  将数据库目录内容拷贝到其它某个地方如果你在以后需要它们

  用最新备份文件重装数据库如果你用 mysqldump 产生文件将它作为 mysql 输入如果你用直接从数据库拷贝来文件将它们直接拷回数据库目录然而此时你需要在拷贝文件的前关闭数据库然后重启它

  使用更新日志重复做备份以后修改数据库表查询对于任何可适用更新日志将它们作为 mysql 输入指定 --one-database 选项使得 mysql 只执行你有兴趣恢复数据库查询如果你知道你需要运用所有更新日志文件你可以在包含日志目录下使用这条命令:

  % ls -t -r -1 update.[0-9]* | xargs cat | mysql --one-database db_name

  ls 命令生成更新日志文件个单列列表根据服务器产生它们次序排序(主意:如果你修改任何个文件你将改变排序次序这导致更新日志次序被运用)

  很可能你会是运用某几个更新日志例如自从你备份以来产生更新日志被命名为 update.392、update.393 等等你可以这样重新运行:

  %mysql --one-database db_name < update.392

  %mysql --one-database db_name < update.393

  .....

  如果你正在实施恢复且使用更新日志恢复由于建议 DROP DATABASE、DROP TABLE 或 DELETE 语句造成丢失信息在运用更新日志的前要保证从其中删除这些语句

  4.2 恢复单个表

  恢复单个表较为复杂如果你用个由 mysqldump 生成备份文件并且它不包含你感兴趣数据你需要从相关行中提取它们并将它们用作 mysql 输入这是容易部分部分是从只运用于该表更新日志中拉出片断你会发觉 mysql_find_rows 实用对此很有帮助它从更新日志中提取多行查询

  另个可能性是使用另台服务器恢复整个数据库然后拷贝你想要表文件到原数据库中这可能真很容易!当你将文件拷回数据库目录时要确保原数据库服务器关闭



Tags:  mysql备份命令 mysql自动备份 mysql备份 mysql备份数据库

延伸阅读

最新评论

发表评论