簡介
在關聯式資料庫中,資料庫結構描述定義了資料庫的結構及其組成部分,例如表格、欄位和索引。 提取和匯出此資訊在許多情況下都很有用,包括備份、遷移到新環境、視覺化資料結構以及在程式碼庫中管理這些結構。
在本簡短指南中,我們將討論如何使用 mysqldump
命令匯出 MySQL 資料庫結構描述。 雖然此公用程式可以從 MySQL 匯出多種類型的資料,但我們將在本指南中重點介紹如何提取資料結構本身。
如果您正在使用 Prisma,您可以連線到您的 MySQL 伺服器,並使用 MySQL 資料庫連接器 管理您的資料。
基本用法
從 MySQL 匯出資料庫結構描述所需的基本命令如下所示
mysqldump --user=USERNAME --host=HOSTNAME --password --no-data DATABASE > schema.sql
此處的選項可以分為兩個不同的類別。
第一個類別定義了通用基本連線資訊,您需要提供這些資訊才能連線到任何 MySQL 公用程式
--user=
/-u
:您要用來驗證身份的資料庫使用者名稱--password
/-p
:強制mysqldump
提示輸入密碼以進行身份驗證--host=
/-h
:MySQL 所在的主機名稱或 IP 位址--port=
/-p
:MySQL 正在監聽的連接埠號碼
如果您連線到預設組態中執行的本機 MySQL 執行個體,通常可以省略主機和連接埠選項。
第二個類別告訴 mysqldump
要匯出什麼
--no-data
/-d
:這告訴公用程式僅匯出結構本身,而不匯出它們包含的記錄
此外,第一個非選項引數(此處以單字「DATABASE」表示)指示要匯出的確切資料庫。
使用此資訊,您可以使用類似以下的命令,使用名為 sales_reporter
的受限使用者匯出名為 SALES
的資料庫結構描述
mysqldump --user=sales_reporter --password --no-data SALES > sales_database_schema.sql
修改匯出行為
上面討論的基本用法將輸出與相關資料庫相關的每個結構。 我們可以使用許多其他選項來修改此行為。
鎖定多個資料庫
您可以使用以下選項之一修改匯出將鎖定的資料庫數量
--databases
/-B
:將所有名稱引數視為資料庫名稱。 這可讓您同時從多個資料庫匯出結構描述。--all-databases
/-A
:匯出 MySQL 中的所有資料庫(performance_schema
資料庫除外,該資料庫在內部使用)
因此,若要傾印所有資料庫,您可以使用
mysqldump --user=USERNAME --password --no-data --all-databases > all_schemas.sql
或者,若要從三個不同的資料庫傾印結構,您可以使用
mysqldump --user=USERNAME --password --no-data --databases FIRST SECOND THIRD > three_db_schemas.sql
僅匯出特定結構
您也可以透過在資料庫名稱之後將要匯出的特定表格命名為額外引數,來減少匯出的結構。
例如,如果您的 SALES
資料庫中的三個表格名為 EMPLOYEE
、STORE
和 INVENTORY
,您可以透過輸入以下內容僅匯出這些結構
mysqldump --user=USERNAME --password --no-data SALES EMPLOYEE STORE INVENTORY > some_sales_tables.sql
在此建構中,第一個引數始終假定為資料庫名稱,而所有其他具名引數都視為該資料庫中的表格。 因此,此用法與 --databases
選項不相容,後者會修改 mysqldump
解釋額外引數的方式。
匯出其他結構
除了資料庫和表格之外,您還可以透過包含以下選項來明確匯出事件和常式定義
--routines
/-R
:在匯出的結構描述傾印中包含預存程序和函數--events
/-E
:在輸出中包含事件排程器事件的定義
例如,若要包含資料庫 SALES
的傾印,其中包含這些額外定義,您可以輸入
mysqldump --user=USERNAME --password --no-data --routines --events SALES > all_sales_schemas.sql
其他相關選項
一些額外選項可能很有用,具體取決於您的目標,包括
--add-drop-database
:在每個CREATE DATABASE
陳述式之前,將DROP DATABASE
陳述式新增至傾印檔案。 這可確保首先移除給定資料庫的任何先前定義的結構,以避免衝突。--single-transaction
:將交易隔離等級設定為「可重複讀取」,以協助確保使用 InnoDB 等儲存引擎時,資料庫狀態更加一致。 這會傾印資料庫在初始化傾印時的即時快照。
這些選項可以新增至您的結構描述傾印命令,而不會改變其他組件的基本語意或含義。
結論
能夠匯出您的結構描述可讓您將資料庫結構儲存在資料庫本身之外。 這在設定新環境、隨著需求變化演進您的結構描述以及視覺化您正在儲存的資訊結構時很有幫助。
如果您正在使用 Prisma,您可以連線到您的 MySQL 伺服器,並使用 MySQL 資料庫連接器 管理您的資料。