您好,登錄后才能下訂單哦!
這篇文章主要介紹如何實現MySQL數據庫的無縫遷移,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
MySQL數據庫的無縫遷移問題?
問:在平時的開始過程中,由于經常“需求理解,架構設計,需求變更”等多種原因,導致系統運行一段時間后,數據庫的表結構需要變更,如何實現盡量短的停機,實現無縫的遷移?
我開玩笑說,最好的解決辦法就是不遷移。不遷移肯定最好,這要依賴于非常好的設計,在前期架構設計的時候能夠考慮到需求可能的變更,數據庫設計也可以根據業務來進行一定程度的抽象。這可能有點太理想,不過遷移數據,始終是個不可避免的問題。下面說下一般的遷移方案。
定點停機遷移
就像那位朋友說的,在一個月黑風高的夜晚,停掉應用,用事先寫好的遷移程序,把MySQL 數據庫數據遷移到新結構的MySQL數據庫中。完成后,切換應用。最大的缺點就是隨著數據量的增加停機時間會變得非常長。
MySQL binlog方案
MySQL 的遷移可以考慮MySQL的主從復制replication的特性,解析binlog日志出來,然后根據新的業務特點設計的數據庫結構,把數據寫入到新的 數據庫,運行遷移過程不需要停機。在數據遷移基本上完成的時候,停掉前段應用,等待遷移全部完成,切換應用到新庫。停機時間非常短,只需要幾乎1-2分鐘 或者更少。
觸發器方案
備份老的MySQL數據表結構到新的MySQL數據庫,在新庫創建新的表結構,更改老的數據庫表,創建 觸發器,讓數據寫入的時候同時寫入到的新的MySQL表。dump老的MySQL的數據,導入到新的MySQL,這是新的MySQL表結構的表應該已經有 相應的數據了。然后開啟主從復制,讓其達到跟主庫數據一致。切換應用,遷移到的方案。停機時間非常短,只需要幾乎1-2分鐘或者更少。
MySQL udf方案
MySQL 的udf允許你開發自己的函數集成到MySQL中,這樣你可以很方便的在數據寫入的時候同時寫到的其他地方。缺點是開發成本大,需要對MySQL udf有了解。也可以用現成的memcached_functions_MySQL和lib_MySQLudf_json來實現,你就不需要編寫udf函 數了,只需要實現一個memcached的服務端來接受數據,然后解析json到新的數據庫就OK了。memcached協議非常簡單,自己實現起來也很 容易。這種方案的遷移時間也會非常短。
中間件方案
這種方案必須要你的應用連接數據使用了類似中間層的方案,你只需要在中間層增加同時往新庫寫數據就OK了。這種方案的依賴比較大,相信小一點的公司可能都沒有條件。
以上是“如何實現MySQL數據庫的無縫遷移”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。