gh-ost:MySQL數據庫在線表結構更改工具

一、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-hant/n/154141.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-15 03:26
下一篇 2024-11-15 03:26

相關推薦

  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Vue TS工程結構用法介紹

    在本篇文章中,我們將從多個方面對Vue TS工程結構進行詳細的闡述,涵蓋文件結構、路由配置、組件間通訊、狀態管理等內容,並給出對應的代碼示例。 一、文件結構 一個好的文件結構可以極…

    編程 2025-04-29
  • 如何通過jstack工具列出假死的java進程

    假死的java進程是指在運行過程中出現了某些問題導致進程停止響應,此時無法通過正常的方式關閉或者重啟該進程。在這種情況下,我們可以藉助jstack工具來獲取該進程的進程號和線程號,…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • 註冊表取證工具有哪些

    註冊表取證是數字取證的重要分支,主要是獲取計算機系統中的註冊表信息,進而分析痕迹,獲取重要證據。本文將以註冊表取證工具為中心,從多個方面進行詳細闡述。 一、註冊表取證工具概述 註冊…

    編程 2025-04-29
  • Python程序的三種基本控制結構

    控制結構是編程語言中非常重要的一部分,它們指導着程序如何在不同的情況下執行相應的指令。Python作為一種高級編程語言,也擁有三種基本的控制結構:順序結構、選擇結構和循環結構。 一…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28

發表回復

登錄後才能評論