ホームページ データベース mysql チュートリアル MySQL中mysqldum数据库的备份和恢复

MySQL中mysqldum数据库的备份和恢复

Jun 07, 2016 pm 05:52 PM
データバックアップ データ復旧

在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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Diskgenius データを回復する方法-diskgenius データ回復チュートリアル Diskgenius データを回復する方法-diskgenius データ回復チュートリアル Mar 06, 2024 am 09:34 AM

多くの友人は、diskgenius データを回復する方法を知りません。そのため、編集者は、diskgenius データ回復に関する関連チュートリアルを共有します。見てみましょう。誰にとっても役に立つと思います。まず、DiskGenius のメイン インターフェイスの上にあるハードディスク パーティション図で、ターゲット パーティションを直接選択して右クリックします。次に、図に示すように、ポップアップ表示されるショートカット メニューで、[削除またはフォーマットされたファイルの回復] メニュー項目を見つけてクリックします。 2 番目のステップでは、回復オプション ウィンドウが表示され、「削除されたファイルの回復」、「完全な回復」、「既知のファイル タイプの追加スキャン」の 3 つのオプションを必ずチェックしてください。ステップ 3: 右側の「ファイルの種類を選択」ボタンをクリックし、ポップアップ ウィンドウで回復する必要があるファイルを指定します。

PHPパラメータ欠落問題の解決策 PHPパラメータ欠落問題の解決策 Mar 11, 2024 am 09:27 AM

PHP パラメータ消失の問題の解決策 PHP プログラムの開発過程では、フロントエンドから渡されたパラメータが不完全であったり、バックエンドからパラメータを受け取る方法が間違っていたりすることが原因で、パラメータ消失の問題が頻繁に発生します。この記事では、PHP でパラメーターが欠落している問題に対するいくつかの解決策と、具体的なコード例を紹介します。 1. フロントエンドパラメータの受け渡しの問題 GET メソッドを使用してパラメータを渡す GET メソッドを使用してパラメータを渡すと、パラメータは URL パラメータの形式で要求された URL に追加されます。バックエンドでパラメータを受信する場合

ThinkPHP6 データのバックアップとリカバリ: データのセキュリティの確保 ThinkPHP6 データのバックアップとリカバリ: データのセキュリティの確保 Aug 13, 2023 am 08:28 AM

ThinkPHP6 データのバックアップとリカバリ: データのセキュリティの確保 インターネットの急速な発展に伴い、データは非常に重要な資産になりました。したがって、データのセキュリティは非常に重要です。 Web アプリケーション開発では、データのバックアップとリカバリはデータのセキュリティを確保するための重要な部分です。この記事では、ThinkPHP6 フレームワークを使用してデータのバックアップと復元を行い、データのセキュリティを確保する方法を紹介します。 1. データのバックアップ データのバックアップとは、データベース内のデータを何らかの方法でコピーまたは保存することを指します。この方法では、データが

Docker Compose、Nginx、MariaDB を介した PHP アプリケーションのデータのバックアップと復元 Docker Compose、Nginx、MariaDB を介した PHP アプリケーションのデータのバックアップと復元 Oct 12, 2023 am 11:14 AM

DockerCompose、Nginx、MariaDB を介した PHP アプリケーションのデータ バックアップと復元 クラウド コンピューティングとコンテナ化テクノロジの急速な発展に伴い、展開と実行に Docker を使用するアプリケーションがますます増えています。 Docker エコシステムでは、DockerCompose は単一の構成ファイルを通じて複数のコンテナーを定義および管理できる非常に人気のあるツールです。この記事ではDockerCompose、Ngの使い方を紹介します。

Laravelでデータ復元用のミドルウェアを使用する方法 Laravelでデータ復元用のミドルウェアを使用する方法 Nov 02, 2023 pm 02:12 PM

Laravel は、効率的で安全かつスケーラブルな Web アプリケーションを構築するための多くの高速かつ簡単な方法を提供する、人気のある PHP Web アプリケーション フレームワークです。 Laravel アプリケーションを開発する場合、多くの場合、データ回復の問題、つまり、データの損失または損傷が発生した場合にデータを回復し、アプリケーションの通常の動作を保証する方法を考慮する必要があります。この記事では、Laravelミドルウェアを使用してデータ回復機能を実装する方法と、具体的なコード例を紹介します。 1. ララとは何ですか?

ハードドライブのセクター破損の問題に対処する方法 ハードドライブのセクター破損の問題に対処する方法 Feb 19, 2024 am 11:03 AM

壊れたハードディスク セクタを解決するにはどうすればよいですか? 壊れたハードディスク セクタは一般的なハードウェア障害であり、データ損失を引き起こし、コンピュータのパフォーマンスに影響を与える可能性があります。不良ハードドライブセクターの問題を理解し、解決することは非常に重要です。この記事では、ハードディスク セクタの概念を紹介し、不良ハードディスク セクタの一般的な原因と解決策について説明します。 1. ハードディスクのセクターとは何ですか?ハードディスクの不良セクタの問題を解決する方法を紹介する前に、まずハードディスクのセクタとは何かを理解しましょう。ハードディスク セクタは、ハード ドライブ上で読み取りおよび書き込み可能な最小単位であり、ハード ドライブ上のスペースの小さなセクションです。

C++ ビッグ データ開発におけるデータ バックアップの一貫性の問題にどう対処するか? C++ ビッグ データ開発におけるデータ バックアップの一貫性の問題にどう対処するか? Aug 26, 2023 pm 11:15 PM

C++ ビッグ データ開発におけるデータ バックアップの一貫性の問題にどのように対処しますか? C++ ビッグ データ開発において、データ バックアップは非常に重要な部分です。データバックアップの一貫性を確保するには、この問題を解決するための一連の対策を講じる必要があります。この記事では、C++ ビッグ データ開発におけるデータ バックアップの一貫性の問題に対処する方法について説明し、対応するコード例を示します。データのバックアップにトランザクションを使用する トランザクションは、データ操作の一貫性を確保するためのメカニズムです。 C++ では、データベース内のトランザクションの概念を使用してデータのバックアップを実装できます。

MySQL データベースで発生した障害やエラーから迅速に回復するにはどうすればよいですか? MySQL データベースで発生した障害やエラーから迅速に回復するにはどうすればよいですか? Sep 10, 2023 pm 03:45 PM

MySQL データベースで発生した障害やエラーから迅速に回復するにはどうすればよいですか? MySQL は、広く使用されているオープンソースのリレーショナル データベース管理システムであり、多くのアプリケーションや Web サイトがデータの保存と管理に依存しています。ただし、データベースの障害やエラーは避けられず、データの損失やアプリケーションの正常な機能障害が発生する可能性があります。 MySQL データベースの障害またはエラーが発生した場合、データベースを迅速かつ効果的に回復することが非常に重要です。この記事では、MySQL データベースを迅速に復元する方法をいくつか紹介します。開始する前に障害とエラーの種類を判断する

See all articles