mysql 数据迁移_MySQL海量数据迁移
數據庫遷移
? ?本主前一段時間寫畢業設計主要使用MySQL,緊鑼密鼓的開發了將近一個多月,項目數據層、接口層、數據采集層已經開發完成,算法還在不斷的優化提速,由于請了幾位大佬幫我做Code Review,所以不得已購買了一個阿里云的RDS服務,將本地的所有數據遷移到RDS上。本篇文章僅僅介紹數據庫MySQL本地遷移到云端。HIVE的數據同步到MySQL后續會介紹。使用的是Sqoop腳本。
01
為什么進行數據庫遷移
? ?我們首先需要確認的是什么場景下才會進行數據庫遷移工作呢?
? ? ? ? 1、磁盤空間不足
? ? ? ? 2、業務出現瓶頸:業務擴展,單機讀寫壓力大,在IO性能允許的情況下可以進行讀寫分離,橫向擴展。
? ? ? ? 3、機器出現瓶頸:磁盤IO能力、內存、CPU出現瓶頸
? ? ? ? 4、項目改造
????????......
02
數據庫遷移要求
? ? ? ?1、?數據完整性
? ? ? ?2、 線上業務平穩運行
? ? ? ?3、 安全性
03
數據庫備份
? 1、?數據量較小的情況下的遷移方式(10G)
? ? ?直接選擇數據庫的備份命令mysqldump,將數據庫SQL腳本導入到一個文件中,直接將文件上傳至云端服務器執行或Load即可。我將本地數據遷移的RDS上使用的是這種遷移方式。
mysqldump -h host -p 3306 -u [用戶名] -p [用戶密碼] --no-data --[database|database | all-databases] [數據庫名稱 | 多個數據庫名稱] [表1,表2] > sql腳本名稱 | gzip 壓縮文件.gz? ?選項說明:--no-data 僅僅備份數據庫結構,不備份數據
? ? ? ? ????????????--[database | databases ]?本分單個或多個數據庫
? ? ? ? ? ? ? ? ? ? --all-databases?備份所有數據庫
? ? ?當然導出文件只是第一步,當然需要將腳本文件上傳到新的服務器上(這里就不對上傳方式進行介紹了,scp等等),然后將腳本重新執行即可遷移新的數據庫。這一個過程完全可以寫一個Shell腳本放到舊的服務器上進行執行。比如導出所有的數據庫,不包括表結構,代碼如下,近期會改造該代碼,需要搭建MySQL集群,兩個節點:
mysqldump --no-data --all-databases -uroot -proot > all_databases.sqlTips : 有一個前提,您安裝的mysql必須配置到環境變量中。
?2、當數據量超過10G的遷移方式
? ? ? ? ?當數據量較大的時候,不能再使用mysqldump,因為此時會產生鎖,導致時間較長,可以選擇xtrabackup、直接拷貝數據目錄(前提是容許停止服務),此時數據傳輸可以使用rsync進行傳輸數據文件。
04
參考
? mysqldump?https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html
05
展望
? ? 海量數據遷移還沒有場景得以應用,后期會在公司研究高并發(百萬級QPS)一定會接觸到的,后期會從數據庫主從節點角度分析數據遷移,主要點如下:
? ? ? ?1、主從分離下從節點的數據的備份與遷移
? ? ? ?2、主從分離下任意節點數據的備份與遷移
? ? ? ?......
喜歡本主的打個賞吧
總結
以上是生活随笔為你收集整理的mysql 数据迁移_MySQL海量数据迁移的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx是干嘛用的_nginx小技巧
- 下一篇: python如何导入seaborn_Se