搜索
首页数据库mysql教程MySQL中mysqldum数据库的备份和恢复

在mysql中自带了 mysqldum命令可直接能数据库进行备份和恢复操作,下面我来详细的介绍关于MySQL中mysqldum命令的用法。

1、mysqldump
1.1 备份
mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。现在来讲一下 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

打开开始->运行->输入cmd进入命令行模式

 代码如下 复制代码

c:>mysqldump -h localhost -u root -p mydb >e:mysqlmydb.sql

然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。

2.将数据库mydb中的mytable导出到e:mysqlmytable.sql文件中:

 代码如下 复制代码

c:>mysqldump -h localhost -u root -p mydb mytable >e:mysqlmytable.sql

3.将数据库mydb的结构导出到e:mysqlmydb_stru.sql文件中:

 代码如下 复制代码

c:>mysqldump -h localhost -u root -p mydb --add-drop-table >e:mysqlmydb_stru.sql

//-h localhost可以省略,其一般在虚拟主机上用


1.2 还原


用 mysqldump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。

从外部文件导入数据到数据库:
例如:

 代码如下 复制代码

/usr/local/mysql/bin/mysql -uyejr -pyejr db_name

从e:mysqlmydb2.sql中将文件中的SQL语句导入数据库中:

 代码如下 复制代码

c:>mysql -h localhost -u root -p mydb2

•用 SOURCE 语法

其实这不是标准的 SQL 语法,而是 mysql 客户端提供的功能,例如:

 代码如下 复制代码

SOURCE /tmp/db_name.sql;

这里需要指定文件的绝对路径,并且必须是 mysqld 运行用户(例如 nobody)有权限读取的文件。

进入mysql数据库控制台 : 如 mysql -u root -p

 代码如下 复制代码

mysql>use databasename

然后使用source命令,后面参数为脚本文件(这里用到的是.sql)

 代码如下 复制代码

mysql>source d:mydb.sql


然后输入密码,就OK了


二.命令行进入MYSQL的方法:

 代码如下 复制代码

C:>mysql -h hostname -u username -p

按ENTER键,等待然后输入密码,这里hostname为服务器的名称,如localhost,username为MYSQL的用户名,如root.进入命令行就可以直接操作MYSQL了。


关于导入文件大小限制问题的解决:


默认情况下:mysql对导入的文件大小有限制的,最大为2M,所以当文件很大时,直接无法导入,解决列举如下:

1.在php.ini中修改相关参数:

影响Mysql导入文件大小的参数有三个:

 代码如下 复制代码

memory_limit=128M, upload_max_filesize=2M, post_max_size=8M

修改upload_max_filesize=200M这里修改满足你需要的大小,可以同时修改其他两项memory_limit=250M ,post_max_size=200M.这样就可以导入200M以下的.sql文件了。

上文是把mysql放置在系统路径下,其实不放也可以。如我的mysql安装目录为D:MySQL Server 5.0;则首先打开dos窗口,然后输入D:(没有'')回车;此时应该会出现D:>这样的标志,然后在其后输入D:MySQL Server 5.0bin回车;出现D:MySQL Server 5.0bin>接着输入mysqldump -u root -p 数据库名 >数据库名.sql(也可以输入路径); (具体参照上面)导入文件同样,只是改了'>'为'

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
ThinkPHP6数据备份与恢复:保障数据的安全性ThinkPHP6数据备份与恢复:保障数据的安全性Aug 13, 2023 am 08:28 AM

ThinkPHP6数据备份与恢复:保障数据的安全性随着互联网的快速发展,数据已成为一项极其重要的资产。因此,数据的安全性备受关注。在Web应用开发中,数据备份与恢复是确保数据安全的重要一环。在本文中,我们将介绍如何使用ThinkPHP6框架进行数据备份与恢复,以保障数据的安全性。一、数据备份数据备份是指将数据库中的数据以某种方式进行复制或存储。这样即使在数据

如何使用PHP实现网站备份功能如何使用PHP实现网站备份功能Jun 27, 2023 pm 01:32 PM

在网站运营过程中,备份是一项非常重要的任务。如果网站有数据丢失或者损失,备份可以为恢复网站提供便利。PHP是一种常用的服务器端编程语言,可以通过编写PHP脚本实现网站的备份功能。本文将介绍如何使用PHP实现网站备份功能。一、备份文件的类型在备份网站的时候,需要备份数据库和网站文件。通常网站文件包括静态文件、程序文件、图片和上传的附件等,而数据库则包含网站的所

PHP中的数据备份PHP中的数据备份May 24, 2023 am 08:01 AM

在进行Web开发的过程中,数据的存储和备份无疑是非常重要的一环。面对万一出现的数据丢失或恢复需要,备份是非常必要的。对于PHP这种开源的后端语言,数据的备份同样也有许多可选的方案,下面我们就来详细了解一下PHP中的数据备份。一、数据库备份1.1MYSQLdump工具MYSQLdump是一个备份MYSQL数据库的命令行工具,它通过执行SQL语句将整个数据库或

如何使用Java编写CMS系统的数据备份功能如何使用Java编写CMS系统的数据备份功能Aug 04, 2023 pm 11:22 PM

如何使用Java编写CMS系统的数据备份功能在一个内容管理系统(ContentManagementSystem,CMS)中,数据备份是一个非常重要且必不可少的功能。通过数据备份,我们可以保证系统中的数据在遭受损坏、丢失或错误操作等情况下能够及时恢复,从而确保系统的稳定性和可靠性。本文将介绍如何使用Java编写CMS系统的数据备份功能,并提供相关的代码示

使用PHP和SQLite实现数据备份和恢复策略使用PHP和SQLite实现数据备份和恢复策略Jul 28, 2023 pm 12:21 PM

使用PHP和SQLite实现数据备份和恢复策略备份和恢复是数据库管理中非常重要的一个环节,它可以保护我们的数据免受意外损坏或丢失的影响。本文将介绍如何使用PHP和SQLite实现数据备份和恢复的策略,帮助我们更好地管理和保护数据库中的数据。首先,我们需要创建一个使用SQLite的数据库,并建立一些测试数据以便后续操作。下面是一个简单的例子:<?php

MySQL中的数据压缩备份技术MySQL中的数据压缩备份技术Jun 15, 2023 pm 05:23 PM

随着数据量的不断增大,数据库备份的难度也越来越大。而备份不仅要求数据的完整性和一致性,还要求备份速度和备份文件大小均能满足实际需求。数据压缩备份技术因此应运而生,成为数据库备份必不可少的一种技术手段之一。MySQL是目前最流行的关系型数据库之一,其官方提供的备份工具mysqldump并不能满足压缩备份的需求。因此,本文将介绍使用Linux系统上的压缩命令ta

PHP表单处理:表单数据备份与恢复PHP表单处理:表单数据备份与恢复Aug 07, 2023 pm 10:19 PM

PHP表单处理:表单数据备份与恢复引言在网站开发过程中,表单是非常常见的交互方式,用户通过填写表单将数据提交给服务器端处理。然而,有时候用户可能会因为网络问题、浏览器崩溃或其他意外情况导致表单数据丢失,这会给用户的使用体验带来困扰。因此,为了提升用户体验,我们可以通过PHP实现表单数据的自动备份与恢复功能,以确保用户填写的数据不会丢失。表单数据备份当用户在表

TiDB和MySQL的数据备份与恢复策略对比TiDB和MySQL的数据备份与恢复策略对比Jul 12, 2023 pm 11:01 PM

TiDB和MySQL的数据备份与恢复策略对比引言:在互联网时代,数据成为了企业最重要的资产之一,因此数据备份与恢复策略显得尤为重要。TiDB和MySQL作为常用的关系型数据库管理系统,具备了高性能和可靠性等特点,但在数据备份和恢复方面还是有所差异。本文将针对TiDB和MySQL的数据备份与恢复策略进行比较,并提供相关的代码示例进行解析。一、数据备份策略比较T

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境