您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關MYSQL 8 中怎么實現數據導出導入,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
MySQL 的數據導出導入其實從MYSQL 5.5 到 5.7 大部分采用的方法有如下幾種
1 備份法,通過mydumper , mysqldump, mysqlpump 等方式將某個表的數據導出,在導入到目的端的的表種,但這樣導出導入除了mydumper的速度上還比較快以外,其他mysqldump 的速度上是不敢恭維的,尤其導入數據的時候是比較慢的,并且導入數據的時候還會給復制造成壓力,導致復制延遲等問題。
2 select into file and load data INFILE的方法,通過這樣的方法是可以快速的將數據導入導出的。
但第二種方式的問題也是在于要使用客戶端和服務器端的之間的數據流,添加服務器的負擔,在大數據量的情況下,要考慮批量或者調整 group_replication_communication_max_message_size 的方法來進行限流的操作。當然還要考慮INDEX 是同時建立還是導入后在建立的問題等等。
3 整體表的卸載和加載,其實這個事情在MYSQL 5.X上就可以去做,但實際上是有一定的危險性的,而在MYSQL 8 以后整體的數據表的信息不再分別存放,FRM 文件已經是過去式,所以這樣的操作就變得安全的多,同時這樣的操作的速度也是最快的,避免了通過服務端將數據導入。
下面操作
1在目的端需要導入的庫上創建同名的表
create table salaries (id int);
2在源端將表salaries 停止插入數據
FLUSH TABLES salaries FOR EXPORT;
3 拷貝數據到目的庫
4 解鎖源端的表的鎖,讓數據能正常插入
5 將文件import 到目的端
6 解鎖目的端表
完成
看上去操作時比較方便的,但這里有幾點需要注意,否則可能會釀成大禍
1 必須要使用FLUSH TABLES FOR EXPORT; 命令在源端,目的不僅僅是要阻止寫入數據,并將臟頁刷到數據文件中,更重要的是防止誤操作 discard 將你的原表直接刪除,那可是根本就找不回來的。
2 目的端的表必須和你的原表的字段數量和設置一致,可以去掉外鍵約束等,否則導入會失敗
為什么要強調第一點,因為目前寫如何快速導出MYSQL 數據的文字,我看基本上沒有強調注意 discard 是直接將文件清理掉的(對于小白那是不負責的),并要操作者注意誤操作會丟失元數據的問題,并且網上也有一部分人在問,我DISCARD 表后,怎么能恢復(就可見一般了)。
另外最近有人問我,他公司的開發的開發的MYSQL 數據庫經常被莫名其妙的刪庫,雖然是測試庫,但也著實要人討厭,并且就算安裝了審計也無可奈何,因為人家就是誤操作了,你又能怎樣, 這里教大家一個方法,讓他縱使有ROOT的權限,也刪除不了庫。
方法就是在你要防止刪庫的數據文件夾下,放置一個文件,例如下面
刪除會直接報錯。
以上就是MYSQL 8 中怎么實現數據導出導入,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。