`

mysql 数据库备份和恢复

阅读更多
mysqldump备份还原和mysqldump导入导出语句大全详解

1:备份
mysqldump备份:
mysqldump -u用户名 -p密码 -h主机 数据库 a -w "sql条件" --lock-all-tables > 路径
案例:
mysqldump -uroot -p1234 -hlocalhost db1 a -w "id in (select id from b)" --lock-all-tables > c:\aa.txt

mysqldump还原:
mysqldump -u用户名 -p密码 -h主机 数据库 < 路径
案例:
mysql -uroot -p1234 db1 < c:\aa.txt
mysqldump按条件导出:
mysqldump -u用户名 -p密码 -h主机 数据库  a --where "条件语句" --no-建表> 路径
mysqldump -uroot -p1234 dbname a --where "tag='88'" --no-create-info> c:\a.sql

mysqldump按条件导入:
mysqldump -u用户名 -p密码 -h主机 数据库 < 路径
案例:
mysql -uroot -p1234 db1 < c:\a.txt

mysqldump导出表:
mysqldump -u用户名 -p密码 -h主机 数据库 表
案例:
mysqldump -uroot -p sqlhk9 a --no-data


讲一下 mysqldump 的一些主要参数
--compatible=name
它告诉 mysqldump,导出的数据将和哪种数据库或哪个旧版本的 MySQL 服务器相兼容。值可以为 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等,要使用几个值,用逗号将它们隔开。当然了,它并不保证能完全兼容,而是尽量兼容。
--complete-insert,-c
导出的数据采用包含字段名的完整 INSERT 方式,也就是把所有的值都写在一行。这么做能提高插入效率,但是可能会受到 max_allowed_packet 参数的影响而导致插入失败。因此,需要谨慎使用该参数,至少我不推荐。
--default-character-set=charset
指定导出数据时采用何种字符集,如果数据表不是采用默认的 latin1 字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。
--disable-keys
告诉 mysqldump 在 INSERT 语句的开头和结尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合 MyISAM 表。
--extended-insert = true|false
默认情况下,mysqldump 开启 --complete-insert 模式,因此不想用它的的话,就使用本选项,设定它的值为 false 即可。
--hex-blob
使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用本选项。影响到的字段类型有 BINARY、VARBINARY、BLOB。
--lock-all-tables,-x
在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 --single-transaction 和 --lock-tables 选项。
--lock-tables
它和 --lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 选项。
--no-create-info,-t
只导出数据,而不添加 CREATE TABLE 语句。
--no-data,-d
不导出任何数据,只导出数据库表结构。
--opt
这只是一个快捷选项,等同于同时添加 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset 选项。本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 --skip-opt 禁用。注意,如果运行 mysqldump 没有指定 --quick 或 --opt 选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。
--quick,-q
该选项在导出大表时很有用,它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。
--routines,-R
导出存储过程以及自定义函数。
--single-transaction
该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。
本选项和 --lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。
要想导出大表的话,应结合使用 --quick 选项。
--triggers
同时导出触发器。该选项默认启用,用 --skip-triggers 禁用它。
其他参数详情请参考手册,我通常使用以下 SQL 来备份 MyISAM 表:
/usr/local/mysql/bin/mysqldump -uyejr -pyejr "
--default-character-set=utf8 --opt --extended-insert=false "
--triggers -R --hex-blob -x db_name > db_name.sql
使用以下 SQL 来备份 Innodb 表:
/usr/local/mysql/bin/mysqldump -uyejr -pyejr "
--default-character-set=utf8 --opt --extended-insert=false "
--triggers -R --hex-blob --single-transaction db_name > db_name.sql
另外,如果想要实现在线备份,还可以使用 --master-data 参数来实现,如下:
/usr/local/mysql/bin/mysqldump -uyejr -pyejr "
--default-character-set=utf8 --opt --master-data=1 "
--single-transaction --flush-logs db_name > db_name.sql
它只是在一开始的瞬间请求锁表,然后就刷新binlog了,而后在导出的文件中加入CHANGE MASTER 语句来指定当前备份的binlog位置,如果要把这个文件恢复到slave里去,就可以采用这种方法来做。

2:恢复数据
用 mysqldump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。
直接用 mysql 客户端
例如:
/usr/local/mysql/bin/mysql -u用户名 -p密码 db_name < db_name.sql
用 SOURCE 语法 (实验不成功!!!)
其实这不是标准的 SQL 语法,而是 mysql 客户端提供的功能,例如:
SOURCE /tmp/db_name.sql;
这里需要指定文件的绝对路径,并且必须是 mysqld 运行用户(例如 nobody)有权限读取的文件。
分享到:
评论

相关推荐

    MySQL数据库备份和恢复

    ### MySQL数据库备份与恢复:深度解析与实践指南 在当今数据驱动的世界中,数据库的稳定性和数据的安全性显得尤为重要。MySQL作为全球最流行的开源关系型数据库管理系统之一,其备份和恢复策略是确保数据安全和系统...

    mysql数据库备份和恢复[定义].pdf

    MySQL 数据库备份和恢复是数据库管理中非常重要的一步,通过备份和恢复,可以确保数据的安全和可靠性。本文将详细介绍 MySQL 数据库备份和恢复的方法和步骤。 一、 MySQL 数据库备份 MySQL 数据库备份是将数据库中...

    mysql_window环境下_数据库备份与恢复

    用命令的形式 备份和恢复 mysql数据库 主要有一些备份和恢复中出现的注意事项!

    mysql数据库备份和恢复

    本篇文章将深入探讨MySQL数据库的备份与恢复策略,以及如何使用`mysqldump`和`mysql`命令来执行这些操作。 首先,让我们了解为什么数据库备份是必要的。在日常运营中,数据库可能会遭受硬件故障、软件错误、恶意...

    mysql数据库备份和恢复工具

    MySQL数据库是世界上最受欢迎的开源关系型数据库管理系统之一,其稳定性和高效性使其在各种规模的企业中得到广泛应用。在日常操作中,对数据库进行备份和恢复是保障数据安全、防止意外丢失的重要环节。本文将深入...

    delphi备份和还原MySql数据库.zip

    在描述中提到的"delphi备份和还原MySql数据库.zip"源码,就是一个具体的实例,演示了如何在Delphi中实现对MySQL数据库的备份与恢复功能。 首先,我们需要理解备份和还原的基本概念。数据库备份是将数据库中的所有...

    使用Python代码调用命令行来执行MySQL数据库备份和恢复操作

    ### 使用Python进行MySQL数据库备份与恢复 在现代软件开发中,数据库备份与恢复是一项至关重要的任务,它确保了数据的安全性和可恢复性。虽然大多数情况下,数据库管理员会使用专门的工具或命令行来进行这些操作,...

    基于xtrabackup的MySQL数据库备份及还原Shell脚本.zip

    总之,利用`xtrabackup`和Shell脚本,我们可以实现高效、自动化的MySQL数据库备份和恢复,有效保护了业务数据的安全。通过深入理解和实践,你将能更好地掌控数据库的生命周期管理,确保在面对任何数据丢失情况时都能...

    Mysql数据库备份恢复测试报告-xtrabackup.docx

    通过这次测试,我们可以了解到MySQL数据库的备份恢复流程,以及如何验证恢复的正确性。同时,也强调了恢复过程中服务器性能的重要性,以及备份策略对于数据保护的关键性。在实际环境中,企业应根据自身需求制定合适...

    实验4 数据库备份与恢复实验 (2).docx

    实验4 数据库备份与恢复实验 数据库备份与恢复是数据库管理系统中非常重要的一部分。实验4 数据库备份与恢复实验旨在让学生掌握数据库备份与恢复的操作方法。 知识点1: 数据库备份 数据库备份是指将数据库中的...

    mysql数据库备份与恢复

    本知识点将深入探讨如何在SpringBoot环境下对MySQL数据库进行备份与恢复,以确保数据的安全。 首先,`MysqlBackup.java` 文件很可能是实现备份和恢复功能的核心Java类。在SpringBoot中,我们可以利用JDBC(Java ...

    C#实现MySQL数据库的备份、还原和初始化

    本文将详细介绍如何使用C#来实现MySQL数据库的初始化、备份和还原功能。 首先,数据库的初始化通常指的是创建一个新的数据库。在C#中,你可以通过执行SQL语句来完成这一过程。在给出的代码示例中,`GetExecute`方法...

    C#编写的MYSQL数据库备份恢复工具(源代码)

    本篇将详细介绍由C#编写的MYSQL数据库备份恢复工具,以及其中涉及的关键技术和实现方式。 首先,C#是一种面向对象的编程语言,由微软公司推出,它具有丰富的类库和强大的.NET框架支持,适用于开发Windows桌面应用、...

    mysql数据库备份工具

    总的来说,"mysql数据库备份工具"是一个实用的解决方案,帮助用户轻松、安全地管理和维护MySQL数据库的备份工作。通过自动化和优化的备份流程,它降低了数据丢失的风险,确保了业务的连续性。在使用过程中,用户应...

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

    为了解决这一问题,BigDump作为一个专门用于恢复超大MySQL数据库备份文件的工具应运而生。它由德国开发者Alexey Ozerov使用PHP语言编写而成,具有单文件结构简单、配置灵活的特点。BigDump的核心优势在于其独特的...

    nbu&mysql备份恢复.docx

    2. 选择mysql数据库备份选项 3. 配置备份参数,例如备份策略、备份路径等 4. 启动备份过程 NBU恢复mysql数据库 使用NBU恢复mysql数据库可以按照以下步骤进行: 1. 启动NBU恢复客户端 2. 选择mysql数据库恢复选项 ...

    PHP实现的MySql数据库备份、恢复类

    PHP实现的MySql数据库备份、恢复类

    实验4 数据库备份与恢复实验.pdf

    以上知识点详细阐述了MySQL数据库备份与恢复的基本操作、使用工具、以及各操作步骤。这些知识点对于数据库管理、维护和数据安全具有重要意义。通过本次实验,学生可以熟练掌握数据库的备份与恢复技能,了解不同备份...

Global site tag (gtag.js) - Google Analytics