`
wjt276
  • 浏览: 654455 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

轻松备份mysql数据库(二)

阅读更多

--lock-tables 锁定你正在倾倒的所有表

而 --flush-logs 关闭并重新打开更新日志文件,新的更新日志将只包括从备份点起的修改数据库的查询。这将设置你的更新日志检查点位备份时间。

(然而如果你有需要执行个更新的客户,锁定所有表对备份期间的客户访问不是件好事。)如果你使用 --flush-logs 设置检查点到备份时,有可能最好是倾倒整个数据库。如果你倾倒单独的文件,较难将更新日志检查点与备份文件同步。在恢复期间,你通常按数据库为基础提取更新日志内容,对单个表没有提取更新的选择,所以你必须自己提取它们。缺省地,mysqldump 在写入前将一个表的整个内容读进内存。这通常确实不必要,并且实际上如果你有一个大表,几乎是失败的。

你可用 --quick 选项告诉 mysqldump 只要它检索出一行就写出每一行。为了进一步优化倾倒过程,使用 --opt而不是 --quick。--opt 选项打开其它选项,加速数据的倾倒和把它们读回。用 --opt 实施备份可能是最常用的方法,因为备份速度上的优势。然而,要警告你,--opt 选项确实有代价,--opt 优化的是你的备份过程,不是其他客户对数据库的访问。

--opt 选项通过一次锁定所有表阻止任何人更新你正在倾倒的任何表。你可在一般数据库访问上很容易看到其效果。当你的数据库一般非常频繁地使用,只是一天一次地调节备份。一个具有 --opt 的相反效果的选项是--dedayed。该选项使得 mysqldump 写出 INSERT DELAYED 语句而不是 INSERT 语句。如果你将数据文件装入另一个数据库并且你想是这个操作对可能出现在该数据库中的查询的影响最小,--delayed 对此很有帮助。

--compress 选项在你拷贝数据库到另一台机器上时很有帮助,因为它减少网络传输字节的数量。下面有一个例子,注意到--compress 对与远端主机上的服务器通信的程序才给出,而不是对与本地主机连接的程序:

%mysqldump --opt samp_db │ mysql --compress -h boa.snake.net samp_db

mysqldump有很多选项,详见《MySQL参考手册》。

2.使用直接拷贝数据库的备份和拷贝方法

另一种不涉及 mysqldump 备份数据库和表的方式是直接拷贝数据库表文件。典型地,这用诸如 cp、tar 或cpio 实用程序。本文的例子使用 cp。当你使用一种直接备份方法时,你必须保证表不在被使用。如果服务器在你则正在拷贝一个表时改变它,拷贝就失去意义。保证你的拷贝完整性的最好方法是关闭服务器,拷贝文件,然后重启服务器。如果你不想关闭服务器,要在执行表检查的同时锁定服务器。

如果服务器在运行,相同的制约也适用于拷贝文件,而且你应该使用相同的锁定协议让服务器“安静下来”。假设服务器关闭或你已经锁定了你想拷贝的表,下列显示如何将整个 samp_db 数据库备份到一个备份目录(DATADIR表示服务器的数据目录):

%cd DATADIR%cp -r samp_db /usr/archive/mysql

单个表可以如下备份:

%cd DATADIR/samp_db%cp member.* /usr/archive/mysql/samp_db%cp score.* /usr/archive/mysql/samp_db ....

当你完成了备份时,你可以重启服务器(如果关闭了它)或释放加在表上的锁定(如果你让服务器运行)。要用直接拷贝文件把一个数据库从一台机器拷贝到另一台机器上,只是将文件拷贝到另一台服务器主机的适当数据目录下即可。要确保文件是MyIASM 格式或两台机器有相同的硬件结构,否则你的数据库在另一台主机上有奇怪的内容。你也应该保证在另一台机器上的服务器在你正在安装数据库表时不访问它们。

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 实用程序对此很有帮助,它从更新日志中提取多行查询。另一个可能性是使用另一台服务器恢复整个数据库,然后拷贝你想要的表文件到原数据库中。这可能真的很容易!当你将文件拷回数据库目录时,要确保原数据库的服务器关闭。

分享到:
评论

相关推荐

    python自动备份mysql数据库,并删除七天前文件

    本示例涉及的主题是使用Python来自动备份MySQL数据库,并且定期清理过期的备份文件,以保持存储空间的有效利用。下面将详细介绍这个过程以及相关的知识点。 首先,我们需要了解Python在数据库操作中的角色。Python...

    在win10系统中设置定时任务自动备份MySQL数据库文件

    在Windows 10系统中,设置定时任务自动备份MySQL数据库文件是一项重要的数据保护措施,它可以帮助用户定期保存和恢复重要数据。以下是如何实现这一功能的详细步骤和相关知识点。 首先,我们需要了解MySQL数据库的...

    远程备份MySQL数据库

    "远程备份MySQL数据库" 远程备份MySQL数据库是一种非常重要的数据库管理任务,旨在保护数据库中的数据免受意外损失或篡改的影响。利用sqldump工具,可以轻松地将远程数据库备份到本地,确保数据的安全性和可靠性。 ...

    Linux下定时备份MySQL数据库的Shell脚本.pdf

    ### Linux下定时备份MySQL数据库的Shell脚本知识点详解 #### 一、背景介绍与重要性 对于每一个在线网站或服务而言,数据备份是一项至关重要的任务。无论是为了应对未来的版本升级,还是服务器迁移的需求,定期备份...

    python定时备份mysql数据库脚本

    本篇将详细解释如何使用Python编写一个定时备份MySQL数据库的脚本,以及如何通过代码实现仅保留最新几个备份文件的功能。 首先,我们需要了解Python中的两个关键库:`pymysql` 和 `schedule`。`pymysql` 是Python...

    批处理备份mysql数据库

    标题中的“批处理备份mysql数据库”是指通过编写批处理脚本(.bat文件)来自动化MySQL数据库的备份过程。批处理是一种基于DOS或Windows操作系统中的命令行接口,可以预先定义一系列命令并一次性执行,大大提高了工作...

    mysql数据库备份工具

    1. 快速备份:工具能够快速扫描并打包MySQL数据库中的所有表,生成SQL脚本或者二进制文件,从而实现快速备份。 2. 自动化调度:可能支持定时备份功能,用户可以设置定时任务,让工具自动在指定时间执行备份,确保...

    C# 备份还原mysql数据库示例工具

    本示例工具专注于C# Winform环境下对MySQL数据库的备份与还原功能,为用户提供了一个直观、简便的界面,非常适合初学者和软件集成。接下来,我们将详细讨论相关知识点。 首先,我们来看C#编程语言。C#是由微软开发...

    docker + mysql数据库备份脚本.pdf

    "Docker + MySQL 数据库备份脚本" 本文档提供了一份使用 Docker 容器备份 MySQL 数据库的 Bash 脚本。该脚本使用了 MySQL 命令行工具 mysqldump 对数据库进行备份。 知识点一:Docker 容器的使用 ----------------...

    备份PostgreSQL和MySQL数据库

    总之,定期备份MySQL和PostgreSQL数据库是防止数据丢失的关键实践。了解并熟练使用这些备份工具,结合适当的备份策略,可以确保企业的数据安全无虞。同时,随着业务的增长,考虑使用云存储服务或专业的数据库备份...

    mysql数据库备份程序

    本文将详细介绍一个名为“mysql数据库备份程序”的工具,以及如何利用它来高效地备份MySQL数据库。 这个备份程序的核心文件是`bak.php`,它是一个PHP脚本,专门设计用于简化MySQL数据库的备份过程。PHP是一种广泛...

    易语言MYSQL数据库备份还原器

    这款MYSQL数据库备份还原器利用易语言的强大功能,提供了直观的界面和简洁的操作流程,使得非专业的数据库管理员也能轻松上手,提升了数据库管理的便捷性。 总之,《易语言MYSQL数据库备份还原器》是针对MYSQL...

    如何使用 MySQL Administrator 管理备份还原 My SQL 数据库

    MySQL Administrator 数据库备份和还原管理 MySQL Administrator 是一种功能强大且易于使用的数据库管理工具,能够帮助用户轻松地管理 MySQL 数据库。其中,备份和还原是 MySQL Administrator 的两个重要功能,本文...

    如何导入超大MySQL数据库备份文件

    ### 如何导入超大MySQL数据库备份文件 #### BigDump工具简介及应用场景 在日常网站管理和维护过程中,数据库的备份和恢复是一项重要的工作。常见的MySQL数据库管理工具如phpMyAdmin因其直观的操作界面和丰富的功能...

    MySQL数据库冷备份操作与实践

    通过上述步骤和代码示例,可以轻松实现MySQL数据库的冷备份与恢复。然而,由于冷备份会导致服务中断,因此在实际应用中,需要根据业务需求和数据量选择合适的备份策略。对于大型数据库或对服务可用性要求较高的场景...

    mysql数据库数据备份与还原源代码

    备份MySQL数据库通常有以下几种方式: 1. **全量备份**:这是最基础的备份方法,包括数据库中的所有数据,不包含任何增量或差异。全量备份可以通过mysqldump工具来实现,该工具可以导出SQL语句,然后在需要时导入...

    Mysql数据库管理工具

    MySQL数据库管理系统是世界上最受欢迎的关系型数据库之一,广泛应用于各种规模的企业和项目中。为了更高效地管理和维护MySQL数据库,各种专业工具应运而生。"Mysql数据库管理工具"就是一个这样的解决方案,它专为...

    PHP后台备份MYSQL数据库的代码

    本篇文章将深入探讨如何利用PHP编写后台代码来实现MYSQL数据库的备份与恢复功能。 首先,我们需要理解数据库备份的基本概念。数据库备份是为了防止数据丢失或损坏,通常我们会定期创建数据库的完整副本,这样在发生...

    MySql数据库备份软件

    "MySql数据库备份软件"正是一款专为此目的设计的工具,它能帮助用户实现MySQL数据库的远程自动化备份,确保在系统故障或数据丢失时能够迅速恢复。 这款软件的主要功能包括: 1. **远程自动备份**:通过配置,该...

    java连接mysql数据库(JDBC驱动).

    ### Java连接MySQL数据库(JDBC驱动) #### 软件下载 - **MySQL**: 版本 4.1.11 下载地址: [http://dev.mysql.com/downloads/mysql/4.1.html](http://dev.mysql.com/downloads/mysql/4.1.html) - **JDBC驱动**: ...

Global site tag (gtag.js) - Google Analytics