原文 ? http://segmentfault.com/blog/seanlook/1190000002428533 1. 语法选项说明 -h, --host=name 主机名 -P[ port_num], --port=port_num 用于连接MySQL服务器的的TCP/IP端口号 --master-data 这个选项可以把binlog的位置和文件名添加到输出中,如果等于1
1. 语法选项说明
-
-h, --host=name
主机名 -
-P[ port_num], --port=port_num
用于连接MySQL服务器的的TCP/IP端口号 -
--master-data
这个选项可以把binlog的位置和文件名添加到输出中,如果等于1,将会打印成一个CHANGE MASTER
命令;如果等于2,会加上注释前缀。并且这个选项会自动打开--lock-all-tables
,除非同时设置了--single-transaction
(这种情况下,全局读锁只会在开始dump的时候加上一小段时间,不要忘了阅读--single-transaction
的部分)。在任何情况下,所有日志中的操作都会发生在导出的准确时刻。这个选项会自动关闭--lock-tables
。 -
-x, --lock-all-tables
锁定所有库中所有的表。这是通过在整个dump的过程中持有全局读锁来实现的。会自动关闭--single-transaction
和--lock-tables
。 -
--single-transaction
通过将导出操作封装在一个事务内来使得导出的数据是一个一致性快照。只有当表使用支持MVCC的存储引擎(目前只有InnoDB)时才可以工作;其他引擎不能保证导出是一致的。当导出开启了--single-transaction
选项时,要确保导出文件有效(正确的表数据和二进制日志位置),就要保证没有其他连接会执行如下语句:ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE
,这会导致一致性快照失效。这个选项开启后会自动关闭--lock-tables
。 -
-l, --lock-tables
对所有表加读锁。(默认是打开的,用--skip-lock-tables
来关闭,上面的选项会把关闭-l
选项) -
-F, --flush-logs
在开始导出前刷新服务器的日志文件。注意,如果你一次性导出很多数据库(使用-databases=
或--all-databases
选项),导出每个库时都会触发日志刷新。例外是当使用了--lock-all-tables
或--master-data
时:日志只会被刷新一次,那个时候所有表都会被锁住。所以如果你希望你的导出和日志刷新发生在同一个确定的时刻,你需要使用--lock-all-tables
,或者--master-data
配合--flush-logs
。
-
--delete-master-logs
备份完成后删除主库上的日志。这个选项会自动打开“–master-data`。 -
--opt
同-add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys
。(默认已开启,--skip-opt
关闭表示这些选项保持它的默认值)应该给你为读入一个MySQL服务器的尽可能最快的导出,--compact
差不多是禁用上面的选项。 -
-q, --quick
不缓冲查询,直接导出至stdout。(默认打开,用--skip-quick
来关闭)该选项用于转储大的表。 -
--set-charset
将SET NAMES default_character_set
加到输出中。该选项默认启用。要想禁用SET NAMES
语句,使用--skip-set-charset
。 -
--add-drop-tables
在每个CREATE TABLE
语句前添加DROP TABLE
语句。默认开启。 -
--add-locks
在每个表导出之前增加LOCK TABLES
并且之后UNLOCK TABLE
。(为了使得更快地插入到MySQL)。默认开启。 -
--create-option
在CREATE TABLE语句中包括所有MySQL表选项。默认开启,使用--skip-create-options
来关闭。 -
-e, --extended-insert
使用全新多行INSERT语法,默认开启(给出更紧缩并且更快的插入语句) -
-d, --no-data
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的。 -
--add-drop-database
在create数据库之前先DROP DATABASE
,默认关闭,所以一般在导入时需要保证数据库已存在。 -
--default-character-set=
使用的默认字符集。如果没有指定,mysqldump使用utf8。 -
-B, --databases
转储几个数据库。通常情况,mysqldump将命令行中的第1个名字参量看作数据库名,后面的名看作表名。使用该选项,它将所有名字参量看作数据库名。CREATE DATABASE IF NOT EXISTS db_name
和USE db_name
语句包含在每个新数据库前的输出中。 -
--tables
覆盖--database
选项。选项后面的所有参量被看作表名。 -
-u[ name], --user=
连接服务器时使用的MySQL用户名。 -
-p[password], --password[=password]
连接服务器时使用的密码。如果你使用短选项形式(-p),不能在选项和密码之间有一个空格。如果在命令行中,忽略了--password
或-p
选项后面的 密码值,将提示你输入一个。
2. 示例
导出一个数据库:
$ mysqldump -h localhost -uroot -ppassword \ --master-data=2 --single-transaction --add-drop-table --create-options --quick \ --extended-insert --default-character-set=utf8 \ --databases discuz > backup-file.sql
导出一个表:
$ mysqldump -u pak -p --opt --flush-logs pak t_user > pak-t_user.sql
将备份文件压缩:
$ mysqldump -hhostname -uusername -ppassword --databases dbname | gzip > backup-file.sql.gz 对应的还原动作为 gunzip <p>导入数据库:</p> <pre class="brush:php;toolbar:false">mysql> use target_dbname mysql> source /mysql/backup/path/backup-file.sql 或 $ mysql target_dbname <backup-file.sql> <p>导入还有一个 <code class="prettyprint">mysqlimport</code> 命令,暂未研究。</p> <p>直接从一个数据库向另一个数据库转储:</p> <pre class="brush:php;toolbar:false">mysqldump -u用户名 -p --opt dbname | mysql --host remote_host -C dbname2
关于增量备份与恢复请参考: MySQL增量备份与恢复实例 。
参考
原文地址:MySQL备份命令mysqldump参数说明与示例, 感谢原作者分享。

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

MySQL是一個開源的關係型數據庫管理系統,適用於數據存儲、管理、查詢和安全。 1.它支持多種操作系統,廣泛應用於Web應用等領域。 2.通過客戶端-服務器架構和不同存儲引擎,MySQL高效處理數據。 3.基本用法包括創建數據庫和表,插入、查詢和更新數據。 4.高級用法涉及復雜查詢和存儲過程。 5.常見錯誤可通過EXPLAIN語句調試。 6.性能優化包括合理使用索引和優化查詢語句。

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

InnoDB的鎖機制包括共享鎖、排他鎖、意向鎖、記錄鎖、間隙鎖和下一個鍵鎖。 1.共享鎖允許事務讀取數據而不阻止其他事務讀取。 2.排他鎖阻止其他事務讀取和修改數據。 3.意向鎖優化鎖效率。 4.記錄鎖鎖定索引記錄。 5.間隙鎖鎖定索引記錄間隙。 6.下一個鍵鎖是記錄鎖和間隙鎖的組合,確保數據一致性。

MySQL查询性能不佳的原因主要包括没有使用索引、查询优化器选择错误的执行计划、表设计不合理、数据量过大和锁竞争。1.没有索引导致查询缓慢,添加索引后可显著提升性能。2.使用EXPLAIN命令可以分析查询计划,找出优化器错误。3.重构表结构和优化JOIN条件可改善表设计问题。4.数据量大时,采用分区和分表策略。5.高并发环境下,优化事务和锁策略可减少锁竞争。

在數據庫優化中,應根據查詢需求選擇索引策略:1.當查詢涉及多個列且條件順序固定時,使用複合索引;2.當查詢涉及多個列但條件順序不固定時,使用多個單列索引。複合索引適用於優化多列查詢,單列索引則適合單列查詢。

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 Linux新版
SublimeText3 Linux最新版