IT_man 發表於 2015-6-23 08:22:56

MySQL 匯出匯入指令

[匯出]
mysqldump -u userid -e -p db_Name > xxxxx.sql
匯出一個table:mysqldump -p -u userid dbname tablename > 52avtv_dzx20.201506242307.sql
匯出所有資料庫: mysqldump -p -u userid --all-databases > all-database.sql            
       但是,匯到目的資料庫的使用者帳號及密碼有問題,所以還是每個資料庫個別搬,使用者帳號也個別匯出比較安全

注意:    當以上述指令備份時造成網站出現 "502 bad gateway",影響到nginx,只要加參數 --single-transaction --quick 就好了,如下:
mysqldump -u userid -e -p --single-transaction --quick db_Name > xxxxx.sql
問題:mysqldump: Got error: 1017: Can't find file: 'pre_forum_rsscache' (errno: 2) when using LOCK TABLES
Sol: 只要在mysqldump的時候加上--lock-tables=false就可以解決問題。
接著又出現: mysqldump: Couldn't execute 'show create table `pre_forum_rsscache`': Can't find file: 'pre_forum_rsscache' (errno: 2) (1017),以phpmyadmin登入查看卻看到pre_forum_rsscache使用中ls /var/lib/mysql/52avtv_dz/pre_forum_rsscache*發現只有pre_forum_rsscache.frm 1個檔案 ,正常應該要有3個檔:
-rw-rw---- 1 mysql mysql 8852 Jun3 16:05 pre_forum_rsscache.frm
-rw-rw---- 1 mysql mysql    0 Jun3 16:05 pre_forum_rsscache.MYD
-rw-rw---- 1 mysql mysql 1024 Jun3 16:05 pre_forum_rsscache.MYI
Sol:
在phpmyadmin ==SQL 下指令:
DROP TABLE IF EXISTS pre_forum_rsscache;
CREATE TABLE pre_forum_rsscache (
lastupdate int(10) unsigned NOT NULL DEFAULT '0',
fid mediumint(8) unsigned NOT NULL DEFAULT '0',
tid mediumint(8) unsigned NOT NULL DEFAULT '0',
dateline int(10) unsigned NOT NULL DEFAULT '0',
forum char(50) NOT NULL DEFAULT '',
author char(15) NOT NULL DEFAULT '',
`subject` char(80) NOT NULL DEFAULT '',
description char(255) NOT NULL DEFAULT '',
guidetype char(10) NOT NULL DEFAULT '',
UNIQUE KEY tid (tid),
KEY fid (fid,dateline)
) ENGINE=MYISAM DEFAULT CHARSET=utf8
再備份就正常了
問題:當使用mariadb 5.5.68備份時出現error:mysqldump: Couldn't execute 'SHOW TRIGGERS LIKE 'pre\_portal\_topic\_pic'': Can't read dir of './db_name/' (errno: 24) (1018)
Sol:這是open_files_limit(default=962) 太小,改為4096,由於它屬於read-only,故加在/etc/my.cnf
然後 service mariadb restart

[有條件匯出]
mysqldump -u帳號 -p密碼 -h主機 資料庫 資料表 -w "sql條件" > 出輸路徑及檔案
例:
mysqldump -uroot -p123456 -hlocalhost -e AREA_UTF8 city -w "c_id<10 " > /home/web/a.txt

--no-create-info,-t
只導出資料,而不添加 CREATE TABLE 語句;如果導出格式為SQL語句,則只有insert into部分。
--no-data,-d
不導出任何資料,只導出資料庫結構
--quick,-q
在導出大量資料很有用,強制從 MySQL Server 查詢取得記錄直接輸出,而不是取得所有記錄後存在記憶體中。


[匯入]
mysql -u userid -p [-h localhost] db_Name < xxxxx.sql
匯入所有資料庫:   mysql -u userid -p < all-database.sql
匯入一個table :
mysql -u userid -p -D dbname < cc5278_dzx20.ip2c.201506242307.sql
P.S如果匯入檔太大如7GB,則匯入檔案之前執行下列指令:
mysql -uroot -p -e "set global net_buffer_length=1000000; set global max_allowed_packet=1000000000;"

[匯出後立即匯入到另一台主機]
mysqldump -u -h -e -q --password= SOURCE_db_Name | mysql -u --password= -h DISTANCE_db_Name
[設定匯入上限(內定2Mb) by phpmyadmin]
參考http://www.av4u.info/forum.php?m ... e=1&extra=#pid20348












頁: [1]
查看完整版本: MySQL 匯出匯入指令