2020年12月31日 星期四

MySQL 記一次還原指定日期資料且避開auto increment問題

 1 mysqldump 只能備份所有欄位

 無法跳過有auto increment column,

所以必須複製一個相同table, 然後刪掉不要的欄位,再dump出來

2 mysqldump 常用參數

//用cluster 請勿使用 --no-autocommit

mysqldump -u root -p --skip-add-drop-table --skip-add-locks --no-create-db --no-create-info --no-autocommit --complete-insert --net-buffer-length=1000000 --max-allowed-packet=1000000000 

--skip-add-drop-table  還原時不drop原有table

--skip-add-locks  還原時不lock

--no-create-db 還原時不create db

--no-create-info 還原時不create table

--no-autocommit 還原時不auto commit

--complete-insert 備份完整scheme

--net-buffer-length=1000000 加大網路buffer, 適用大檔還原

--max-allowed-packet=1000000000 加大網路packet,適用大檔還原

3 完整mysqldump參數

mysqldump -u root -p --skip-add-drop-table --skip-add-locks --no-create-db --no-create-info --complete-insert --no-autocommit --net-buffer-length=1000000 --max-allowed-packet=1000000000 --where="(date >='2020-12-21' and date<'2020-12-22')" db table | gzip >  table.sql.gz

只dump db 的 指定table內的 where 條件的資料

4 還原(因為備份時有指定參數,所以大檔也適用)

myslq login

use db;

source /home/..... sql file


5 完整流程

CREATE new_table LIKE old_table;

INSERT INTO new_table SELECT * FROM old_table;

ALTER TABLE new_table DROP COLUMN column;

mysqldump ....

restore ....

沒有留言:

張貼留言