一、gh-ost簡介
gh-ost是GitHub開源的MySQL在線表結構更改工具,它可以在不影響現有業務的情況下對MySQL表結構進行實時更改。與傳統的ALTER TABLE操作不同,gh-ost的實時更改不會阻塞從表、索引的讀寫操作,同時不會影響從庫的複製進程。gh-ost在運行過程中還提供多種監控和日誌輸出方式,方便我們觀察和排查問題。gh-ost的優秀設計和功能,使得它在大型線上業務系統中得以廣泛應用。
二、gh-ost的優勢
1、在線化更改表結構操作,不需要業務系統停機維護。
2、通過binlog數據採集UPDATE和DELETE語句,避免了鎖表操作。
3、可以通過split table方式對大表進行更改,提高更改效率。
4、支持多種監控輸出方式,方便我們觀察和定位問題。
5、支持大量的靈活性和可配置性選項。
三、gh-ost的使用
ghost
gh-ost可以通過GitHub上的源代碼進行下載和安裝。安裝方法請參考GitHub官方文檔。
ghost裝機教程
在安裝gh-ost之前,需要檢查當前MySQL的版本是否支持binlog streaming API。如果MySQL版本低於5.6.2或者不支持該功能,需要升級或者手動啟用該功能。
使用gh-ost需要指定更改的表和更改的方式,可以通過如下命令來進行操作:
# 進入gh-ost的安裝目錄
cd /usr/local/gh-ost/bin
# 進行在線更改,表名為test_table,更改方式為add_column,添加一列列名為new_column
./gh-ost --user=xxxx --host=127.0.0.1 --password=xxxx --database=testdb --table=test_table --alter="add_column:new_column int" --allow-on-master --concurrency=4 --chunk-size=1000 --max-load=Threads_connected=25 --critical-load=Threads_connected=100
–allow-on-master表示允許在主庫上執行更改操作,–concurrency表示並發修改數量,–chunk-size表示每個操作的塊大小,–max-load表示最大負載,–critical-load表示達到負載時停止操作。更多參數請參考gh-ost官方文檔。
ghost face歌詞
gh-ost中的面向對象編程非常清晰,通過定製化的Option和Logging模塊在實現高度的可擴展性的同時也保證了代碼的可讀性。例如ConfigRuntimeOptiont類定義了在Runtime切片過程中的相關信息,MySQLConnectionOption類定義了與MySQL的連接信息,Logging替代了傳統的logging庫,並通過在進行組件劃分和多種輸出方式來實現了定製化log。
ghost face
我們可以通過如下方式來輸出gh-ost的日誌信息:
./gh-ost --user=xxxx --host=127.0.0.1 --password=xxxx --database=testdb --table=test_table --alter="add_column:new_column int" --log-output=FILE --log-file=/var/log/gh-ost.log
–log-output指定輸出方式,–log-file指定日誌文件。
ghost怎麼備份
在更改表結構前,我們應該做好數據備份工作,以免不可預計的錯誤導致數據丟失。可以使用如下命令進行快照備份:
mysqldump -uroot -p --no-data dbname > struct.sql
mysqldump -uroot -p --skip-lock-tables --skip-add-locks --no-create-info dbname table_name > data.sql
其中第一條命令保存了當前資料庫的結構信息,第二條命令保存了當前表的數據信息。更多備份方式請參考MySQL官方文檔。
ghost安裝系統步驟
gh-ost可以通過下載源代碼或者二進位文件進行安裝。官方提供了多種安裝方式,包括源代碼的編譯安裝和二進位文件的安裝,還可以使用Docker鏡像進行部署。可以參考GitHub官方文檔了解更多信息。
ghost電子煙
此處與gh-ost無關,不予討論。
ghost備份
除了手動備份外,我們還可以使用mysqldump或者xtrabackup等第三方資料庫備份工具來進行自動備份。備份的頻率依據實際情況而定,可以通過LVM或者RAID等技術將備份數據存放在不同磁碟上,以此提高數據安全性。
ghost face音源
此處與gh-ost無關,不予討論。
ghost硬碟對硬碟克隆
硬碟對硬碟克隆方式是將整個磁碟直接複製到另一個磁碟或者硬碟分區中,以此進行磁碟的備份或者數據遷移。在使用gh-ost進行在線表結構更改時,我們也可以通過硬碟對硬碟克隆的方式進行備份。例如以下命令:
dd if=/dev/sda of=/dev/sdb
該命令將/dev/sda的數據直接複製到/dev/sdb中。
總之,gh-ost可以讓我們在不停機的情況下進行在線表結構更改,避免了業務中斷和數據丟失的風險。同時,gh-ost的運行效率高,可以對大型表進行快速高效的更改。我們需要謹慎使用gh-ost,並結合業務場景和實際情況進行合理的配置和操作,以保證業務的穩定性和數據安全性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/154141.html