iT邦幫忙

1

(已解決)[mysqldump]語法問題詢問

我想要將資料庫做備份匯出,在另一台電腦匯入
原本會透過phpMyAdmin來匯出,但遇上
Error with Permissions-Policy header: Parse of permission policy failed because of errors reported by strctured header parser.
錯誤,這好像是因為chrome升級後出現的,然後不知道怎麼在chrome中關掉它...
所以想說乾脆自己寫指令好了

伺服器環境Ubuntu、mysql8
另一台 win10 64bit mysql8

需求

  • 關閉外鍵檢查(好像必須在匯出後自行補上SET FOREIGN_KEY_CHECKS = 0; ???)
  • 刪除並重建資料表
  • 命令長度不超過 10000
  • 不要鎖定現有資料表避免影響現有服務
  • 只要備份所要的資料表(D、E、F、...),以及全部的檢視表與方法
  • 有兩個資料表(A、B)只要備份結構即可不用帶資料 (這還沒摸索出來怎麼使用)

我的語法

mysqldump -uroot -ppassword
 --tz-utc \
 --default-character-set=utf8 \
 --extended-insert=FALSE \
 --complete-insert=TRUE \
 --force \
 --create-options \
 --max_allowed_packet=10000 \
 --skip-add-locks \
  mydatabase D E F  > mydatabase_bk.sql

目前遇到的錯誤

mysqldump: [Warning] Using a password on the command line interface can be insecure.
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
dbExport.sh: 14: mydatabase: not found

我用的格式應該符合 mysqldump [OPTIONS] database [tables] 呀,那邊出問題了?

(花了一個上午...總覺得我在鬼打牆...所有事情都做到一半就莫名其妙卡住...)


冷靜下來只半小時就可以解決會出問題了XD
目前版本

mysqldump -uroot -ppassword --tz-utc \
 --force \
 --max_allowed_packet=1M \
 --skip-add-locks \
 --create-options \
 mydatabase \
 C D E ...(略)...  > mydatabase_bk.sql

但匯入時發生一件很怪的事...
跑了一個小時才匯入47%
對比之前用phpMyAdmin匯出的檔案來匯入的話大概半小時就匯入完畢
有人知道要mysqldump語法怎麼調整來加速嗎?

(max_allowed_packet一定要設,不然會因為指令太長遇到MySQL server has gone away)


反正能跑就好...先結案好了

咖咖拉 iT邦研究生 4 級 ‧ 2021-03-22 14:04:36 檢舉
自刪

2 個回答

4
japhenchen
iT邦大師 1 級 ‧ 2021-03-22 14:46:43
最佳解答

我比較懶,都是用phpmyadmin的匯出匯入的功能,匯出SQL檔再倒進新機器上即可恢復所有資料..
https://ithelp.ithome.com.tw/upload/images/20210322/20117954msBWlcbFPf.jpg

看更多先前的回應...收起先前的回應...
舜~ iT邦高手 1 級 ‧ 2021-03-22 14:50:49 檢舉

我也是...但我chrome升級後遇到Error with Permissions-Policy header: Parse of permission policy failed because of errors reported by strctured header parser.連不上phpmyadmin,只好回到原始時代XD
大哥您有遇到這個問題嗎?

升級apache(或nginx)/php/phpmyadmin版本

舜~ iT邦高手 1 級 ‧ 2021-03-22 15:04:00 檢舉

目前狀況
phpmyadmin今年有升,不確定是不是最新版還是上個版本,反正現在看不到了
nginx-1.18 最新的穩定版了

我也只能說怪怪怪怪怪了...看是不是php誤升到不支援的版本

https://ithelp.ithome.com.tw/upload/images/20210322/20117954I5PsLHzoJr.jpg

舜~ iT邦高手 1 級 ‧ 2021-03-22 15:23:25 檢舉

PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS ) Zend Engine v3.4.0 Zend OPcache v7.4.3,
但其他php網站一樣正常操作中...
怪怪怪怪怪了...

試試不跑 https 看看

舜~ iT邦高手 1 級 ‧ 2021-03-22 15:31:18 檢舉

系統管理人設為自動跳轉成https,沒法用http跑

寫在 rewrite 裡了?

1
ckp6250
iT邦研究生 1 級 ‧ 2021-03-22 17:42:30

您匯出去的 sql 檔,大小是幾M?

舜~ iT邦高手 1 級 ‧ 2021-03-22 23:37:29 檢舉

拿掉--extended-insert=FALSE --complete-insert=TRUE前接近1G
拿掉後接近500MB (接近phpmyadmin產生的大小)

ckp6250 iT邦研究生 1 級 ‧ 2021-03-23 05:49:18 檢舉

我每天都在做匯出匯入工作,以 php + mysqldump + mysql ...< .sql 來進行。(也是在 https 下)

剛試了一組匯出後有640M的sql檔,連同匯出及匯入,共耗時6分30秒,順利完成。

對比之前用phpMyAdmin匯出的檔案來匯入的話大概半小時就匯入完畢

這很有可疑,怎會如此久呢?

舜~ iT邦高手 1 級 ‧ 2021-03-23 16:02:51 檢舉

不知道phpMyAdmin所產生的mysqldump指令為何~~?
也許我漏掉幾個參數沒設定~~

我要發表回答

立即登入回答