Mysql資料表備份

2021-05-22 21:07:44 字數 2783 閱讀 2276

用mysqldump備份資料

同mysqlimport一樣,也存在乙個工具mysqldump備份資料,但是它比sql語句多做的工作是可以在匯出的檔案中包括sql語 句,因此可以備份資料庫表的結構,而且可以備份乙個資料庫,甚至整個資料庫系統。

mysqldump [options] database [tables]

mysqldump [options] --databases [options] db1 [db2 db3...]

mysqldump [options] --all-databases [options]

如果你不給定任何表,整個資料庫將被傾倒。

通過執行mysqldump --help,你能得到你mysqldump的版本支援的選項表。

1、備份資料庫的方法

例如,假定你在伺服器主機上備份資料庫db_name

shell> mydqldump db_name

當然,由於mysqldump預設時把輸出定位到標準輸出,你需要重定向標準輸出。

例如,把資料庫備份到bd_name.bak中:

shell> mydqldump db_name>db_name.bak

你可以備份多個資料庫,注意這種方法將不能指定資料表:

shell> mydqldump --databases db1 db1>db.bak

你也可以備份整個資料庫系統的拷貝,不過對於乙個龐大的系統,這樣做沒有什麼實際的價值:

shell> mydqldump --all-databases>db.bak

雖然用mysqldump匯出表的結構很有用,但是恢復大量資料時,眾多sql語句使恢復的效率降低。你可以通過使用--tab選項,分開資料 和建立表的sql語句。

-t,--tab= 在選項指定的目錄裡,建立用製表符(tab)分隔列值的資料檔案和包含建立表結構的sql語句的檔案,分別用副檔名.txt和.sql表示。該選項不能與--databases或--all-databases同時使用,並且mysqldump必須執行在伺服器主機上。

例如,假設資料庫db包括表tbl1,tbl2,你準備備份它們到/var/mysqldb

shell>mysqldump --tab=/var/mysqldb/ db

其效果是在目錄/var/mysqldb中生成4個檔案,分別是tbl1.txt、tbl1.sql、tbl2.txt和tbl2.sql。

2、mysqldump實用程式時的身份驗證的問題

同其他客戶機一樣,你也必須提供乙個mysql資料庫帳號用來匯出資料庫,如果你不是使用匿名使用者的話,可能需要手工提供引數或者使用選項檔案:

如果這樣:

shell>mysql -u root –pmypass db_name>db_name.sql

或者這樣在選項檔案中提供引數:

[mysqldump]

user=root

password=mypass

然後執行

shell>mysqldump db_name>db_name.sql

那麼一切順利,不會有任何問題,但要注意命令歷史會洩漏密碼,或者不能讓任何除你之外的使用者能夠訪問選項檔案,由於資料庫伺服器也需要這個選項 檔案時,選項檔案只能被啟動伺服器的使用者(如,mysql)擁有和訪問,以免洩密。在unix下你還有乙個解決辦法,可以在自己的使用者目錄中提供個人選項 檔案(~/.my.cnf),例如,/home/some_user/.my.cnf,然後把上面的內容加入檔案中,注意防止洩密。在nt系統中,你可以 簡單的讓c:/my.cnf能被指定的使用者訪問。

你可能要問,為什麼這麼麻煩呢,例如,這樣使用命令列:

shell>mysql -u root –p db_name>db_name.sql

或者在選項檔案中加入

[mysqldump]

user=root

password

然後執行命令列:

shell>mysql db_name>db_name.sql

你發現了什麼?往常熟悉的enter password:提示並沒有出現,因為標準輸出被重定向到檔案db_name.sql中了,所以看不到往常的提示符,程式在等待你輸入密碼。在重定向的 情況下,再使用互動模式,就會有問題。在上面的情況下,你還可以直接輸入密碼。然後在檔案db_name.sql檔案的第一行看到:

enter password:#……..

你可能說問題不大,但是mysqldump之所以把結果輸出到標準輸出,是為了重定向到其它程式的標準輸入,這樣有利於編寫指令碼。例如:

用來自於乙個資料庫的資訊充實另外乙個mysql資料庫也是有用的:

shell>mysqldump --opt database | mysql --host=remote-host -c database

如果mysqldump仍執行在提示輸入密碼的互動模式下,該命令不會成功,但是如果mysql是否執行在提示輸入密碼的互動模式下,都是可以 的。

如果在選項檔案中的[client]或者[mysqldump]任何一段中指定了password選項,且不提供密碼,即使,在另一段中有提供 密碼的選項password=mypass,例如

[client]

user=root

password

[mysqldump]

user=admin

password=mypass

那麼mysqldump一定要你輸入admin使用者的密碼:

mysql>mysqldump db_name

即使是這樣使用命令列:

mysql>mysqldump –u root –ppass1 db

也是這樣,不過要如果-u指定的使用者的密碼。

其它使用選項檔案的客戶程式也是這樣

mysql 定時資料表備份 mysqldump

一,編輯備份指令碼 vim mysql backup.sh 內容如下 bin sh username root 資料庫使用者名稱 password 123456 資料庫密碼 db name test db 備份的資料庫 table name arr users config info 備份的表多個錶...

SQL資料表備份 原創

如果是一般的羽量級的幾條使用者資訊,我可能做個excel,甚至是記事本,用這樣的土辦法,也可以實現備份的目的,辦法雖土,但是至少也是種非常傳統老式的,類似手寫的備忘方式。然而,新聞資料呢?新聞的正文通常是包含html的大段大段的 這類東西要是丟失了,那可是哭也來不及的。修復?即便是重新發布,編輯,那...

資料表的冷備份

在資料操作之中,有可能有些使用者不會進行事務的提交,那麼在這種情況下很可能無法進行完整的備份操作,而所謂的冷備份指的就是在閉資料庫例項的情況下進行資料庫備份操作的實現。如果要進行冷備份,則需要備份出資料庫中的一些幾個核心內容 從實際的oracle的部署來講,所有的檔案為了達到io的平衡操作,要分別儲...