首頁 資料庫 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 Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP參數遺失問題的解決方案 PHP參數遺失問題的解決方案 Mar 11, 2024 am 09:27 AM

PHP參數遺失問題的解決方案在開發PHP程式的過程中,經常會遇到參數遺失的問題,這可能是由於前端傳遞的參數不完整、後端接收參數的方式不正確等原因造成的。在本文中,我們將針對PHP參數遺失問題提供一些解決方案,並附上具體的程式碼範例。一、前端傳參問題使用GET方法傳遞參數當使用GET方法傳遞參數時,參數會以URL參數的形式附加在請求的URL後面。在後端接收參數時

diskgenius資料怎麼恢復-diskgenius資料恢復教學課程 diskgenius資料怎麼恢復-diskgenius資料恢復教學課程 Mar 06, 2024 am 09:34 AM

很多小夥伴不知道diskgenius資料怎麼恢復,所以下面小編就分享了diskgenius資料恢復的相關教程,一起去看看吧,相信對大家會有幫助。首先,在DiskGenius的主介面上方的硬碟分區圖中,可以直接選擇目標分區,右鍵點擊。接著,在彈出的快速選單中,找到並點選「已刪除或格式化的檔案復原」選單項,如圖所示。在第二步驟中,彈出恢復選項窗口,確保勾選「恢復已刪除的檔案」、「完整恢復」和「額外掃描已知檔案類型」這三個選項。第三步:點擊右側的「選擇檔案類型」按鈕,在彈出的視窗中指定您需要恢復的文件

ThinkPHP6資料備份與復原:保障資料的安全性 ThinkPHP6資料備份與復原:保障資料的安全性 Aug 13, 2023 am 08:28 AM

ThinkPHP6資料備份與復原:保障資料的安全性隨著網路的快速發展,資料已成為極為重要的資產。因此,資料的安全性備受關注。在Web應用開發中,資料備份與復原是確保資料安全的重要一環。在本文中,我們將介紹如何使用ThinkPHP6框架進行資料備份與恢復,以保障資料的安全性。一、資料備份資料備份是指將資料庫中的資料以某種方式複製或儲存。這樣即使在數據

透過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是一個流行的PHPWeb應用程式框架,提供了許多快速且簡單的方式來建立高效、安全且可擴展的Web應用程式。在開發Laravel應用程式時,我們經常需要考慮資料恢復的問題,即如何在資料遺失或損壞的情況下恢復資料並保證應用程式的正常運作。在本文中,我們將介紹如何使用Laravel中間件來實現資料復原功能,並提供具體的程式碼範例。一、什麼是Lara

如何快速恢復MySQL資料庫遭遇的故障和錯誤? 如何快速恢復MySQL資料庫遭遇的故障和錯誤? Sep 10, 2023 pm 03:45 PM

如何快速恢復MySQL資料庫遭遇的故障和錯誤? MySQL是一種廣泛使用的開源關係型資料庫管理系統,許多應用程式和網站都依賴它來儲存和管理資料。然而,資料庫故障和錯誤是不可避免的,這可能導致資料遺失或應用程式無法正常運作。在遭遇MySQL資料庫故障或錯誤時,快速且有效地恢復資料庫非常重要。本文將介紹一些快速還原MySQL資料庫的方法。確定故障和錯誤的類型在開

如何處理硬碟磁區損壞問題 如何處理硬碟磁區損壞問題 Feb 19, 2024 am 11:03 AM

硬碟磁區壞了怎麼解決硬碟磁區壞了是一個常見的硬體故障,它可能導致資料遺失,影響電腦的效能。了解和解決硬碟扇區壞了的問題是非常重要的。本文將介紹硬碟磁區的概念,討論常見的硬碟磁區壞了的原因以及解決方法。一、什麼是硬碟磁區?在介紹如何解決硬碟磁區壞了的問題之前,我們先來了解什麼是硬碟磁區。硬碟磁區是硬碟上最小的可讀寫單元,它是硬碟中的一小段空間,用

如何利用Laravel實現資料備份與復原功能 如何利用Laravel實現資料備份與復原功能 Nov 02, 2023 pm 01:18 PM

如何利用Laravel實現資料備份和復原功能隨著網際網路的發展,資料備份和復原功能成為了重要的需求。在web應用中,資料備份和復原功能可以確保資料的安全性和可靠性,同時也提供了一種應對突發情況的緊急手段。 Laravel作為一種流行的PHP框架,具備強大的資料處理和資料庫操作能力,因此可以輕鬆實現資料備份和復原功能。本文將介紹如何利用Laravel實現資料備

See all articles