最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql在線安全變更工具 gh-ost的使用

 更新時間:2025年02月21日 09:32:52   作者:龍大.  
gh-ost是一個用于在線安全地進行MySQL數(shù)據(jù)庫表結構變更的工具,它可以在不中斷業(yè)務的情況下進行表結構的修改,具有一定的參考價值,感興趣的可以了解一下

gh-ost(GitHub Online Schema Translater)是一個用于安全地進行 MySQL 數(shù)據(jù)庫表結構變更的工具,專門為在線數(shù)據(jù)庫遷移而設計。它的主要優(yōu)點是可以在不中斷業(yè)務的情況下,不影響數(shù)據(jù)庫的可用性和性能,進行表結構的修改。

主要特點

  • 在線遷移gh-ost 允許在高負載的生產環(huán)境中進行表結構的更改,而不需要鎖定表,確保數(shù)據(jù)庫的可用性。

  • 漸進式復制:通過逐步復制行,gh-ost 可以在針對大量數(shù)據(jù)的情況下,避免短時間內的負載高峰。

  • 安全性:它具備自動回滾功能,如果遷移過程中出現(xiàn)問題,可以安全地回滾到原始狀態(tài)。

  • 編程和操作簡便:工具使用簡單、直觀,與 MySQL 客戶端兼容,支持使用 SQL 語句進行表結構的更改。

  • 多種配置選項:支持多種選項用于配置操作,例如并行遷移、最大移動速度等。

使用場景

  • 發(fā)布新字段:添加新的列而不影響應用的訪問。
  • 修改現(xiàn)有字段類型:安全地改變列的數(shù)據(jù)類型,比如從 VARCHAR 到 TEXT。
  • 重命名列:而不影響運行中的系統(tǒng)。

基本用法

  • 安裝:可以通過 github 下載可執(zhí)行文件,或使用 Homebrew(在 macOS 上)進行安裝。

    brew install gh-ost
    
  • 基本命令
    以下是一個使用 gh-ost 進行表結構變更的基本示例:

    gh-ost \
    --max-load=Threads_running=25 \
    --critical-load=Threads_running=1000 \
    --host=127.0.0.1 \
    --user=username \
    --password=your_password \
    --database=your_database \
    --table=your_table \
    --alter="ADD COLUMN new_col INT DEFAULT 0" \
    --execute
    

    這個命令將向 your_table 表中添加一個名為 new_col 的新列,字段類型為 INT,默認值為 0。

配置選項

  • --max-load:指定允許的最大負載。
  • --critical-load:指定觸發(fā)回滾的負載。
  • --host,--user,--password:數(shù)據(jù)庫連接信息。
  • --database,--table:要修改的數(shù)據(jù)庫和表名。
  • --alter:指定 ALTER 語句。
  • --execute:表示執(zhí)行遷移;如果不加這個選項,則只進行干運行(dry run),不實際執(zhí)行。

gh-ost 數(shù)據(jù)遷移流程

1. 準備與初始化

  • 安裝與配置:確保你的 MySQL 數(shù)據(jù)庫已啟用二進制日志(binlog),并安裝 gh-ost 工具。
  • 參數(shù)設置:使用合適的參數(shù)啟動 gh-ost,包括連接信息、要遷移的表、變更語句等。

2. 創(chuàng)建臨時表

  • 臨時表的結構gh-ost 首先會創(chuàng)建一個新的臨時表,并按照你的 ALTER 語句的定義,將原有表的結構復制到臨時表中
  • 開始復制數(shù)據(jù):臨時表一旦創(chuàng)建,gh-ost 即可開始將原始表中的現(xiàn)有數(shù)據(jù)逐行復制到臨時表中。

3. 數(shù)據(jù)復制與變更監(jiān)控

  • 逐行復制gh-ost 以增量的方式逐行將原始表的數(shù)據(jù)復制到臨時表,這個復制過程是漸進的,確保了對數(shù)據(jù)庫的負載最低。

  • 使用事務隔離:在數(shù)據(jù)復制的過程中,gh-ost 使用 REPEATABLE READ 事務隔離級別。這意味著在數(shù)據(jù)復制期間,原始表的讀取是一個快照,不會受到其他事務的影響。

  • 監(jiān)控二進制日志(binlog)

    • 同時,gh-ost 啟動一個線程,實時監(jiān)控 MySQL 的 binlog,捕獲所有對原始表的變更(包括 INSERT、UPDATE、DELETE)。
    • 這允許 gh-ost 捕獲到在數(shù)據(jù)復制過程中對原始表的任何更新。

4. 實時同步變更

  • 處理變更

    • 任何在數(shù)據(jù)復制過程中對原始表的變更(例如:INSERT 或 UPDATE)都會被 gh-ost 監(jiān)控到并記錄在 binlog 中。
    • gh-ost 會將這些變化實時應用到臨時表中(不會等到復制完成后,再處理變更數(shù)據(jù)),確保臨時表里的數(shù)據(jù)與原始表保持同步。
  • 最終更新操作

    • 對于原始表的更新操作,如果在復制到某一行時,該行數(shù)據(jù)已經被修改,gh-ost 將依賴于二進制日志來更新臨時表,以阻止出現(xiàn)數(shù)據(jù)不一致的情況。

5. 表切換

  • 完成復制與更新

    • 一旦所有的數(shù)據(jù)都已復制,并且所有的二進制日志變更均已同步到臨時表,gh-ost 將進行最后的檢查。
  • 原子重命名

    • gh-ost 進行原子操作,將原始表重命名為備份名稱(例如:your_table_old),然后將臨時表重命名為原始表的名稱(例如:your_table)。
    • 這一過程確保在任何時刻,數(shù)據(jù)庫中的數(shù)據(jù)都是一致的,并且整個遷移操作對外界是透明的。

6. 清理與回滾

  • 刪除舊表:如果配置允許,gh-ost 可以安全刪除舊表,以釋放資源。
  • 回滾機制
    • 如果在遷移過程中發(fā)生錯誤,gh-ost 會提供回滾功能,能夠安全地將數(shù)據(jù)庫恢復到原始狀態(tài),從而確保錯誤不會影響數(shù)據(jù)庫的運作和數(shù)據(jù)的完整性。

總結

gh-ost 通過以上步驟實現(xiàn)了在線、安全、逐漸的 MySQL 數(shù)據(jù)遷移。其設計保證了在整個過程中,數(shù)據(jù)的一致性和準確性,以及對生產系統(tǒng)的影響最小。利用事務隔離和二進制日志捕獲,gh-ost 確保所有變更都在遷移過程中得以有效處理,最終實現(xiàn)平滑的表結構更新。

到此這篇關于Mysql在線安全變更工具 gh-ost的使用的文章就介紹到這了,更多相關Mysql  gh-ost內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

浮梁县| 海盐县| 济南市| 开鲁县| 长子县| 龙南县| 江华| 永德县| 葵青区| 溧阳市| 搜索| 镇宁| 乌什县| 芮城县| 灵川县| 洛宁县| 仙游县| 浙江省| 会宁县| 徐闻县| 界首市| 高邑县| 深州市| 雅江县| 阳春市| 永安市| 汤原县| 资兴市| 高清| 曲阜市| 合阳县| 阿拉善左旗| 报价| 辉县市| 鸡东县| 鄂州市| 巴楚县| 喀喇沁旗| 平顺县| 开封县| 东源县|