MySQL Shell實用匯入程式

2021-10-23 10:37:39 字數 2858 閱讀 9224

mysql shell的匯入程式util.loaddump(url[, options]),在mysql shell 8.0.21中引入,支援匯入mysql並行匯入資料、進度狀態跟蹤、恢復和重置功能。

備註:

匯入工具使用的是load data local infile語法,所以需要設定local_infile引數為on,設定方式:set global local_infile=on;sql_require_primary_key系統變數如果on,且匯入的表中存在沒有主鍵的表,則匯入會報錯,預設這個值為off,檢視方式:show variables like 'sql_require_primary_key';匯入程式不會將源mysql例項中的gtid_executed gtid集應用到目標mysql例項上。如果要在目標mysql例項上保留這些gtid以供複製使用,請將轉儲載入實用程式的skipbinlog選項設定為true,以便在匯入時防止生成新的gtid。匯入之後,使用主gtid_executed更新目標mysql例項上的gtid_purged gtid集,設定方式為:\sql set @@global.gtid_purged= "+*gtidexecuted_set*";

mysql shell的util.loaddump(url[, options])使用通過util.dumpinstance()util.dumpschemas()匯出的ddl檔案以及.tsv的資料檔案,然後在目標mysql例項中設定伺服器instance或schema,然後載入資料。

匯入的過程是儲存在持久化檔案中的,記錄了整體成功/失敗的進度,這個檔案預設是備份目錄下的loadprogress.server_uuid.json,也可以配置不同的目錄以及檔名,在恢復或重試匯入時,匯入程式會引用進度狀態檔案,並跳過完成的步驟。對部分載入的表自動管理重複資料刪除。如果您使用ctrl + c中斷正在進行的轉儲,那麼在第一次使用該組合鍵時,該匯入程式不會啟動新的任務,但現有的任務會繼續執行。再次按下ctrl + c將停止現有的任務,並產生錯誤資訊。在這兩種情況下,實用程式仍然可以從停止匯入的地方恢復匯入。

可以選擇重置進度狀態,並重新匯入,但是在這種情況下,匯入程式不會跳過已經建立的物件,也不會刪除重複資料。如果重新匯入,為了確保正確的匯入,必須手動從目標mysql例項中刪除所有之前匯入的物件,包括schema、表、使用者、檢視、觸發器、例程和事件。否則,如果匯入的檔案中的物件已經存在於目標mysql例項中,匯入將停止並出現錯誤。在適當的注意下,您可以使用ignoreexistingobjects選項來讓匯入程式報告重複的物件,但是跳過會它們並繼續匯入。請注意,該匯入程式不會檢查目標mysql例項中的物件內容和轉儲檔案中的物件內容是否不同,因此結果匯入可能包含不正確或無效的資料。

ddl檔案的載入是單執行緒的,後續的匯入資料操作才是並行的。為了進一步提高資料載入效能,從mysql 8.0.21開始,你可以在匯入過程中在目標mysql例項上禁用innodb重做日誌。注意,這應該只在新的mysql伺服器例項(而不是生產系統)上執行

恢復單schema

# mysqlsh連線目標例項

# mysqlsh 127.0

.0.1

:3306

# /tmp/sbtest是使用util.

dumpschemas

()匯出的

# 開啟local_infile引數;

mysql 127.0

.0.1

:3306

js> \sql set global local_infile=on;

# 為了加快可以臨時關閉redo log

mysql 127.0

.0.1

:3306

js> \sql alter

instance

disable

innodb

redo_log

;# 檢視redo log是否關閉成功

mysql 127.0

.0.1

:3306

js> \sql show

global

status

like

'innodb_redo_log_enabled'

;# 使用util.

loaddump

()匯入資料,並行度為4

mysql 127.0

.0.1

:3306

js> util.

loaddump

("/tmp/sbtest",)

# 如果需要重置匯入程序可以使用util.

loaddump

("/tmp/sbtest",)

# 開啟redo log

mysql 127.0

.0.1

:3306

js> \sql alter

instance

enable

innodb

redo_log

;# # 檢視redo log是否開啟成功

mysql 127.0

.0.1

:3306

js> \sql show

global

status

like

'innodb_redo_log_enabled'

;

恢復例項也是一樣的操作,大同小異。其中redo log的關閉非必要操作,只是能更快執行完成

oracle 匯入匯出實用程式(imp exp)

匯入匯出實用程式用於實施資料庫的邏輯備份和恢復 匯出實用將資料庫中的物件定義和資料備份到乙個作業系統二進位制檔案中 匯入使用程式讀取二進位制導出檔案並將物件和資料載入資料庫中 匯出額匯入實用程式的特點有 1.可以按時間儲存表結構和資料 2.允許匯出指定的表,並重新匯入到新的資料庫中 3.可以吧資料庫...

TP5匯入excel到資料庫實用

操作步驟 2 在根目錄index.php定義如下 define phpexcel path dir extend phpexcel 3 html檔案中的寫法 匯入excel到資料庫.xlsx 4 php控制器檔案寫法 匯入excel到資料庫 public function inserexcel el...

《科學計算與MATLAB語言》專題0課程匯入

謀劃 考慮算計 算術運算 較複雜的計算,即根據已知量求出未知量 q 當需要求解的問題變得複雜而用傳統數學方法無法求解時,如何進行計算?複雜的數值計算問題,利用計算機進行問題求解。運算速度快 計算淨度高。重複操作,迴圈!利用計算機處理數值問題的方法。抽象嚴謹,實用實踐 第三種科學研究方法 科學計算軟體...