MySQL邏輯備份工具mysqldump

2022-07-23 14:24:34 字數 2474 閱讀 3986

mysqldump備份工具最初由igor romanenko編寫完成,通常用來完成轉從(dump)資料庫的備份及不同資料庫之間的移植,如從mysql低版本資料庫公升級到mysql高版本資料庫,又或者從mysql資料庫移植到oracle,microsoft sql server資料庫等。

mysqldump的語法如下:

mysqldump [arguments] > file_name

如果想要備份所有的資料庫,可以使用--all-database選項:

mysqldump --all-databases > dump.sql

如果想要備份指定的資料庫,可以使用--database選項:

mysqldump --databases db1 db2 db3 > dump.sql

如果想要對test這個架構進行備份,可以使用如下語句:

mysqldump --single-transaction test > backup.sql

上述操作產生了乙個對test架構的備份,使用--single-transaction選項來保證備份的一致性。備份出來的 backup.sql是文字檔案,通過文字編輯器可以檢視內容。備份出的檔案內容就是比表結構和資料,所有這些都是用sql語句方式表示。檔案開始和結束的注釋部分是用來設定mysql資料庫的各項引數,一般用來使還原工作更有效和準確地執行。

mysqldump的引數選項有很多,可以通過msyqldump --help命令來檢視所有的引數,有些引數有縮寫形式,如--lock-tables的縮寫形式-l。

比較重要的引數:

--single-transaction:

在備份開始前,先執行start transaction命令,以此獲得備份的一致性,該引數只對innodb有效。當啟用該引數並進行備份時,確保沒有其他任何執行的ddl語句執行,因為一致性讀並不能隔離ddl操作。

--lock-tables(-l):

在備份中,依次鎖住每個架構下的所有表。一般用於myisam儲存引擎,當備份時只能讀資料庫進行讀取操作,可以保證一致性。--single-transaction與--lock-tables是互斥的,不能同時使用。如果要備份的資料庫兩種儲存引擎都有,這時候只能選擇--lock-tables,因此只能保證每個架構下表結構的一致性,而不能保證所有架構下表的一致性。

--lock-all-tables(-x):

在備份過程中,對所有機構的所有表上鎖。可以避免上個引數不能同事鎖住所有表的問題。

--add-drop-database:

預設情況下,匯出的文字檔案中不會有create database,除非指定了這個引數後,在create database前先執行drop database。該引數要和-all-database或者--database選項一起使用。

--master-data [=value]:

通過該引數產生的備份轉存檔案主要用來建立乙個replication。當value為1時,轉存檔案中記錄change master語句。當value的值為2時,change master語句被寫出sql注釋。在預設情況下,value的值為空。

--master-data會自動忽略--lock-tables選項。如果沒有使用--single-transation選項,則會自動使用--lock-all-tables選項。

--events(-e):

備份實踐排程器。

--routines(-r):

備份儲存過程和函式。

--triggers:

備份接觸器。

--hex-blob:

將binary、varbinary、blog和bit列型別備份為十六進製制的格式。mysqldump匯出的檔案一般是文字檔案,但是如果匯出的資料中有上述這些型別,在文字檔案模式下可能會有些字元不可見,若新增--hex-blob選項,結果會以十六進製制的方式顯示。

--tab=path(-t path):

產生tab分割的資料檔案。對於每張表,mysqldump建立乙個包含create table語句的table_name.sql檔案,和包含資料的tbl_name.txt檔案。可以使用--fields-terminated-by=...,--field-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by...,--line-terminated-by=...來改變預設的分割符、換行符等。該引數和select...into outfile的方式來匯出一張表,但是通過mysqldump一樣可以完成工作,而且可以一次完成多張表的匯出,並且實現匯出資料的一致性。

--where='where_condition'(-w 'where_condition'):

匯出給定條件的資料。

邏輯備份的恢復

shell>mysql -uroot -p < /home/mysql/backup.sql

邏輯備份sql語句檔案也可以通過source命令來執行匯入

mysql>source /home/mysql/backup.sql

mysql 邏輯備份 mysql的邏輯備份和恢復

備份指定的資料庫或此資料庫中的某些表 mysqldump options db name tables backup.sql 備份指定的乙個或多個資料庫 mysqldump databases 資料庫1 資料庫2 資料庫3 backup.sql 備份所有的資料庫 mysqldump all data...

mysql備份工具 mysql備份工具

備份還原指令碼及工具 1 xtrabackup實現是物理備份,而且是物理熱備 目前主流的有兩個工具可以實現物理熱備 ibbackup和xtrabackup ibbackup是商業軟體,需要授權,非常昂貴。而xtrabackup功能比ibbackup還要強大,但卻是開源的。2 xtrabackup提供...

Mysql 邏輯備份

邏輯備份特點 在日常工作中,我們會使用 mysqldump 命令建立sql格式的轉儲檔案來備份資料庫。或者我們把資料匯出後做資料遷移,主從複製等操作。mysqldump是乙個邏輯備份工具,複製原始的資料庫物件定義和表資料產生一組可執行的sql語句。預設情況下,生成insert語句,也能生成其它分隔符...