1.1、 mysqldump命令備份數據
成都創新互聯公司專注為客戶提供全方位的互聯網綜合服務,包含不限于成都網站建設、成都網站設計、白山網絡推廣、重慶小程序開發、白山網絡營銷、白山企業策劃、白山品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創新互聯公司為所有大學生創業者提供白山建站搭建服務,24小時服務熱線:18980820575,官方網址:m.kartarina.com
在MySQL中提供了命令行導出數據庫數據以及文件的一種方便的工具mysqldump,我們可以通過命令行直接實現數據庫內容的導出dump,首先我們簡單了解一下mysqldump命令用法:
#MySQLdump常用
mysqldump -u root -p --databases 數據庫1 數據庫2 xxx.sql
1.2、 mysqldump常用操作實例
1.備份全部數據庫的數據和結構
mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql
2.備份全部數據庫的結構(加 -d 參數)
mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql
3.備份全部數據庫的數據(加 -t 參數)
mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql
4.備份單個數據庫的數據和結構(,數據庫名mydb)
mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql
5.備份單個數據庫的結構
mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql
6.備份單個數據庫的數據
mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql
7.備份多個表的數據和結構(數據,結構的單獨備份方法與上同)
mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql
8.一次備份多個數據庫
mysqldump -uroot -p123456 --databases db1 db2 /data/mysqlDump/mydb.sql
mysqldump備份還原和mysqldump導入導出語句大全詳解
mysqldump備份:
mysqldump -u用戶名 -p密碼 -h主機數據庫 a -w "sql條件" --lock-all-tables 路徑
案例:
mysqldump -uroot -p1234 -hlocalhost db1 a -w "id in (select id from b)" --lock-all-tables c:\aa.txt
mysqldump還原:
mysqldump -u用戶名 -p密碼 -h主機數據庫路徑
案例:
mysql -uroot -p1234 db1 c:\aa.txt
mysqldump按條件導出:
mysqldump -u用戶名 -p密碼 -h主機數據庫 a --where "條件語句" --no-建表路徑
mysqldump -uroot -p1234 dbname a --where "tag='88'" --no-create-info c:\a.sql
mysqldump按導入:
mysqldump -u用戶名 -p密碼 -h主機數據庫路徑
案例:
mysql -uroot -p1234 db1 c:\a.txt
mysqldump導出表:
mysqldump -u用戶名 -p密碼 -h主機數據庫表
案例:
mysqldump -uroot -p sqlhk9 a --no-data
講一下 mysqldump 的一些主要參數
--compatible=name
它告訴 mysqldump,導出的數據將和哪種數據庫或哪個舊版本的 MySQL 服務器相兼容。值可以為 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等,要使用幾個值,用逗號將它們隔開。當然了,它并不保證能完全兼容,而是盡量兼容。
--complete-insert,-c
導出的數據采用包含字段名的完整 INSERT 方式,也就是把所有的值都寫在一行。這么做能提高插入效率,但是可能會受到 max_allowed_packet 參數的影響而導致插入失敗。因此,需要謹慎使用該參數,至少我不推薦。
--default-character-set=charset
指定導出數據時采用何種字符集,如果數據表不是采用默認的 latin1 字符集的話,那么導出時必須指定該選項,否則再次導入數據后將產生亂碼問題。
--disable-keys
告訴 mysqldump 在 INSERT 語句的開頭和結尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 語句,這能大大提高插入語句的速度,因為它是在插入完所有數據后才重建索引的。該選項只適合 MyISAM 表。
--extended-insert = true|false
默認情況下,mysqldump 開啟 --complete-insert 模式,因此不想用它的的話,就使用本選項,設定它的值為 false 即可。
--hex-blob
使用十六進制格式導出二進制字符串字段。如果有二進制數據就必須使用本選項。影響到的字段類型有 BINARY、VARBINARY、BLOB。
--lock-all-tables,-x
在開始導出之前,提交請求鎖定所有數據庫中的所有表,以保證數據的一致性。這是一個全局讀鎖,并且自動關閉 --single-transaction 和 --lock-tables 選項。
--lock-tables
它和 --lock-all-tables 類似,不過是鎖定當前導出的數據表,而不是一下子鎖定全部庫下的表。本選項只適用于 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 選項。
--no-create-info,-t
只導出數據,而不添加 CREATE TABLE 語句。
--no-data,-d
不導出任何數據,只導出數據庫表結構。
--opt
這只是一個快捷選項,等同于同時添加 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset 選項。本選項能讓 mysqldump 很快的導出數據,并且導出的數據能很快導回。該選項默認開啟,但可以用 --skip-opt 禁用。注意,如果運行 mysqldump 沒有指定 --quick 或 --opt 選項,則會將整個結果集放在內存中。如果導出大數據庫的話可能會出現問題。
--quick,-q
該選項在導出大表時很有用,它強制 mysqldump 從服務器查詢取得記錄直接輸出而不是取得所有記錄后將它們緩存到內存中。
--routines,-R
導出存儲過程以及自定義函數。
--single-transaction
該選項在導出數據之前提交一個 BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時數據庫的一致性狀態。它只適用于事務表,例如 InnoDB 和 BDB。
本選項和 --lock-tables 選項是互斥的,因為 LOCK TABLES 會使任何掛起的事務隱含提交。
要想導出大表的話,應結合使用 --quick 選項。
--triggers
同時導出觸發器。該選項默認啟用,用 --skip-triggers 禁用它。
其他參數詳情請參考手冊,我通常使用以下 SQL 來備份 MyISAM 表:
/usr/local/mysql/bin/mysqldump -uyejr -pyejr "
--default-character-set=utf8 --opt --extended-insert=false "
--triggers -R --hex-blob -x db_name db_name.sql
使用以下 SQL 來備份 Innodb 表:
/usr/local/mysql/bin/mysqldump -uyejr -pyejr "
--default-character-set=utf8 --opt --extended-insert=false "
--triggers -R --hex-blob --single-transaction db_name db_name.sql
另外,如果想要實現在線備份,還可以使用 --master-data 參數來實現,如下:
/usr/local/mysql/bin/mysqldump -uyejr -pyejr "
--default-character-set=utf8 --opt --master-data=1 "
--single-transaction --flush-logs db_name db_name.sql
它只是在一開始的瞬間請求鎖表,然后就刷新binlog了,而后在導出的文件中加入CHANGE MASTER 語句來指定當前備份的binlog位置,如果要把這個文件恢復到slave里去,就可以采用這種方法來做。
1.2 還原
用 mysqldump 備份出來的文件是一個可以直接倒入的 SQL 腳本,有兩種方法可以將數據導入。
直接用 mysql 客戶端
例如:
/usr/local/mysql/bin/mysql -uyejr -pyejr db_name db_name.sql
用 SOURCE 語法(實驗不成功!!!)
其實這不是標準的 SQL 語法,而是 mysql 客戶端提供的功能,例如:
SOURCE /tmp/db_name.sql;
這里需要指定文件的絕對路徑,并且必須是 mysqld 運行用戶(例如 nobody)有權限讀取的文件。
定期的備份可使我們數據庫崩潰造成的損失大大降低。在MySQL中進行數據備份的方法有兩種,一種是使用mysqldump程序,一種是使用mysqlhotcopy、cp、tar或cpio等打包程序直接拷貝數據庫文件。mysqldump程序備份數據庫較慢,但它生成的文本文件便于移植。使用mysqlhotcopy等程序備份速度快,因為它直接對系統文件進行操作,需人為協調數據庫數據的備份前后一致性。
使用mysqldump備份數據庫其實就是把數據庫轉儲成一系列CREATE TABLE和INSERT語句,通過這些語句我們就可重新生成數據庫。使用mysqldump的方法如下:
% mysqldump --opt testdb | gzip /data/backup/testdb.bak
#--opt選項會對轉儲過程進行優化,生成的備份文件會小一點,后的管道操作會進行數據壓縮
% mysqldump --opt testdb mytable1,mytable2 | gzip /data/backup/testdb_mytable.bak
#可在數據庫后接數據表名,只導出指定的數據表,多個數據表可用逗號分隔
--opt選項還可激活--add-drop-table選項,它將會在備份文件的每條CREATE TABLE前加上一條DROP TABLE IF EXISTS語句。這可方便進行數據表的更新,而不會發生“數據表已存在”的錯誤。
用mysqldump命令還可直接把數據庫轉移到另外一臺服務器上,不用生成備份文件。重復執行可定期更新遠程數據庫。
% mysqladmin -h remote_host create testdb
% mysqldump --opt testdb | mysql -h remote_host testdb
另外還可通過ssh遠程調用服務器上的程序,如:
% ssh remote_host mysqladmin create testdb
% mysqldump --opt testdb | ssh remote_host mysql testdb
通過直接拷貝系統文件的方式備份數據庫,在備份時,要確保沒有人對數據庫進行修改操作。要做到這點,最好關閉服務器。如果不能關閉的,要以只讀方試鎖定有關數據表。下面是一些示例:
% cp -r db /backup/db #備份db數據庫到/backup/db目錄
% cp table_name.* /backup/db #只備份table_name數據表
% scp -r db remotehot:/usr/local/mysql/data #用scp把數據庫直接拷貝到遠程服務器
在把數據庫直接拷貝到遠程主機時,應注意兩臺機器必須有同樣的硬件結構,或者將拷貝的數據表全部是可移植數據表類型。
使用mysqlhotcopy工具,它是一個Perl DBI腳本,可在不關閉服務器的情況下備份數據庫,它主要的優點是:
它直接拷貝文件,所以它比mysqldump快。
可自動完成數據鎖定工作,備份時不用關閉服務器。
能刷新日志,使備份文件和日志文件的檢查點能保持同步。
下面是該工具的使用示例:
% mysqlhotcopy db /bakcup/ #把db數據庫備份到backup/db目錄里,會自動創建一個db目錄
使用BACKUP TABLE語句進行備份,該語句最早出現在MySQL 3.23.25版本中,僅適用于MyISAM數據表。用法如下:
mysql BACKUP TABLE mytable TO '/backup/db'; #把mytable數據表備份到/backup/db目錄下
為了執行該語句,你必須擁有那些表的FILE權限和SELECT權限,備份目錄還必須是服務器可寫的。該語句執行時,會先把內存中的數據寫入磁盤,再把各個數據表的.frm(表結構定義文件)、.MYD(數據)文件從數據目錄拷貝到備份目錄。它不拷貝.MYI(索引)文件,因為它能用另外兩個文件重建。BACKUP TABLE語句備份時,依次鎖定數據表,當同時備份多個數據表時,數據表可能會被修改,所以備份0完成時,備份文件中的數據和現時數據表中的數據可能會有差異,為了消除該差異,我們可用只讀方式鎖定數據表,在備份完成后再解鎖。如:
mysql LOCK TABLES tb1 READ,tb2 READ;
mysql BACKUP TABLE tb1,tb2 TO 'backup/db';
mysql UNLOCK TABLE
1、首先打開mysql數據庫軟件進入軟件主界面。
2、然后再左側樹里打開自己的的數據庫。
3、然后需要點擊需要備份的數據庫名。
4、如圖所示為打開數據庫后界面。
5、然后需要點擊轉儲sql文件選項。
6、然后需要打開選擇存儲文件路徑并選擇保存。
7、點擊保存即可在路徑備份好格式為sql的數據庫文件。
文章標題:備份mysql怎么寫 mysql數據庫的備份是怎么做的
文章轉載:http://m.kartarina.com/article6/hgshog.html
成都網站建設公司_創新互聯,為您提供微信小程序、網站排名、動態網站、網站建設、定制網站、App開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯