首頁 資料庫 mysql教程 MySQL--pt-osc的介紹與使用

MySQL--pt-osc的介紹與使用

Jul 27, 2017 am 09:21 AM
學習 工具

pt-osc之工作流程:
1、檢查更改表是否有主鍵或唯一索引,是否有觸發器
2、檢查修改表的表結構,建立一個臨時表,在新表上執行ALTER TABLE語句
#3、在來源表上建立三個觸發器分別對於INSERT UPDATE DELETE操作
#4、從來源表拷貝資料到臨時表,在拷貝過程中,對來源表的更新操作會寫入到新表中
5、將臨時表和來源表rename(需要元資料修改鎖,需要短時間鎖表)
6、刪除來源表和觸發器,完成表結構的修改。

##==================================== =================
##pt-osc之工具限制
1、來源表必須有主鍵或唯一索引,如果沒有工具將停止工作
2、如果線上的複製環境過濾器操作過於複雜,工具將無法工作
3、如果開啟複製延遲檢查,但主從延遲時,工具將暫停資料拷貝工作
4、如果開啟主伺服器負載檢查,但主伺服器負載較高時,工具將暫停操作
5、但表使用外鍵時,如果未使用--alter-foreign-keys-method參數,工具將無法執行
6、只支援Innodb儲存引擎表,且要求伺服器上有該表1倍以上的空閒空間。

##==================================== =================
##pt-osc之拷貝資料
在拷貝資料過程中,工具會把資料依照主鍵或唯一鍵拆分,限制每次拷貝資料的行數以確保拷貝進行不過多消耗伺服器資源。為確保源表和目標表數據相同,採用LOCK IN SHARE MODE來獲取要拷貝數據段的最新數據並對數據加共享鎖組織其他回話修改數據,採用LOW_PRIORITY IGNORE來將數據插入到新表中, 關鍵字LOW_PRIORIT使得插入操作會等待其他存取該表的操作完成會再執行,關鍵字INGORE使得表中出現主鍵或唯一索引鍵重複時新資料被忽略而不會被插入。

對錶`testdb1`.`tb1001`進行修改時的資料拷貝腳本:

## 先取得下一次拷貝資料的邊界,強制索引可以有效避免執行計劃出現問題
SELECT /*!40001 SQL_NO_CACHE */ `id` FROM `testdb1`.`tb1001` FORCE INDEX(`PRIMARY`) WHERE ((` id` >= '8394306')) ORDER BY `id` LIMIT 22256, 2 /*next chunk boundary*/

透過拷貝資料的邊界限制,防止單次拷貝過多資料而長時間阻塞其他回話
INSERT LOW_PRIORITY IGNORE INTO `testdb1`.`_tb1001_new` (`id`, `c1`, `c6`) SELECT `id`, `c1 `, `c6` FROM `testdb1`.`tb1001` FORCE INDEX(`PRIMARY`) WHERE ((`id` >= '8394306')) AND ((`id` <= '8416562')) LOCK IN SHARE MODE /*pt-online-schema-change 14648 copy nibble*/


##=================== ====================================

pt-osc之觸發器######

pt-osc工具在來源表上建立三個A​​FTER觸發器分別對於INSERT UPDATE DELETE操作,DELETE觸發器使用DELETE IGNORE來確保來源表和新表的資料都被刪除, 而INSERT和UPDATE觸發器使用REPLACE INTO來確保新表資料和來源表資料一致。

由於MySQL限制相同類型的觸發器只能有一個,因此需要在運行前檢查來源表上是否有觸發器,為確保刪除和更新效率和方便和將來源表資料進行分片處理,因此要求表上有主鍵或唯一索引。

##==================================== =================
##pt-osc之主機效能影響

為避免過度影響主機效能,pt-osc工具透過以下幾個方面來限制:
1、透過參數chunk-size和chunk-time控制每次拷貝資料大小
2、透過參數max-load來檢查主機目前壓力,每次chunk拷貝完成後,都會執行SHOW GLOBAL STATUS LIKE 'Threads_running' 指令檢查目前正在執行的Threads數量,預設Threads_running=25,如果未指定最大值,則會取目前值的120%作為最大值,如果超過閥值則會暫停資料拷貝

##=============== ======================================
#pt -osc之從庫複製延遲

對於複製延遲比較敏感的業務,可以透過下面參數來控制複製延遲:

-- max-log
預設為1s,每個chunks拷貝完成後,會查看check-slave-lag參數所指定的從庫的延遲訊息,如果超過max-log的閥值,則暫停複製數據,直到複製延遲小於max-log的閥值。檢查複製延遲資訊依賴SHOW SLAVE STATUS語句中傳回的Seconds_Behind_Master列的值。

--check-interval
當出現複製延遲暫停複製資料後,依照check-interval指定的時間進行週期檢查複製延遲,直到延遲時間低於max-log閥值,然後恢復資料拷貝

--check-slave-lag
需要檢查複製延遲的從庫IP
如果指定check-slave-lag參數,且從函式庫無法正常連線或從函式庫IO執行緒和SQL執行緒停止,會認為主從存在延遲,導致複製資料操作一直暫停。
如果未指定check-slave-lag參數,預設還是會檢查從庫的延遲,但複製延遲不會導致資料複製暫停。

##==================================== =================
##pt-osc之chunk設定
#在pt-osc的幫助文檔中,關於chunk的參數有如下:

--chunk-index=s                  Prefer this index for chunking tables
--chunk-index-columns=i          Use only this many left-most columns of a --chunk-index
--chunk-size=z                   Number of rows to select for each chunk copied (default 1000)
--chunk-size-limit=f             Do not copy chunks this much larger than the desired chunk size (default 4.0)
--chunk-time=f                   Adjust the chunk size dynamically so each data-copy query takes this long to execute (default 0.5)
登入後複製
當chunk-size和chunk-time兩者都未指定時,chunk-size默認值為1000,chunk-time預設值為0.5S,第一次依照chunk-size來進行資料複製,然後根據第一次複製的時間動態調整chumk-size的大小,以適應伺服器的效能變化,如上一次複製1000行消耗0.1S,則下次動態調整chumk-size為5000。
如果明確指定chumk-size的值或將chunk-time指定為0,則每次都依照chunk-size複製資料。

####

##=====================================================##
pt-osc之alter语句限制
1、不需要包含alter table关键字,可以包含多个修改操作,使用逗号分开,如"drop clolumn c1, add column c2 int"
2、不支持rename语句来对表进行重命名操作
3、不支持对索引进行重命名操作
4、如果删除外键,需要对外键名加下划线,如删除外键fk_uid, 修改语句为"DROP FOREIGN KEY _fk_uid"
##=====================================================##
pt-osc之命令模板
## --execute表示执行
## --dry-run表示只进行模拟测试
## 表名只能使用参数t来设置,没有长参数

pt-online-schema-change \--host="127.0.0.1" \--port=3358 \--user="root" \--password="root@root" \--charset="utf8" \--max-lag=10 \--check-salve-lag=&#39;xxx.xxx.xxx.xxx&#39; \--recursion-method="hosts" \--check-interval=2 \--database="testdb1" \t="tb001" \--alter="add column c4 int" \--execute
登入後複製

pt-osc之命令输出
上面命令执行输出如下:

No slaves found.  See --recursion-method if host 171DB166 has slaves.
Will check slave lag on:
  170DB166
Operation, tries, wait:
  copy_rows, 10, 0.25
  create_triggers, 10, 1
  drop_triggers, 10, 1
  swap_tables, 10, 1
  update_foreign_keys, 10, 1
Altering `testdb1`.`tb001`...
Creating new table...
Created new table testdb1._tb001_new OK.
Altering new table...
Altered `testdb1`.`_tb001_new` OK.
2016-04-28T23:18:04 Creating triggers...
2016-04-28T23:18:04 Created triggers OK.
2016-04-28T23:18:04 Copying approximately 1 rows...
2016-04-28T23:18:04 Copied rows OK.
2016-04-28T23:18:04 Swapping tables...
2016-04-28T23:18:04 Swapped original and new tables OK.
2016-04-28T23:18:04 Dropping old table...
2016-04-28T23:18:04 Dropped old table `testdb1`.`_tb001_old` OK.
2016-04-28T23:18:04 Dropping triggers...
2016-04-28T23:18:04 Dropped triggers OK.
Successfully altered `testdb1`.`tb001`.
登入後複製

以上是MySQL--pt-osc的介紹與使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
幣安廣場怎麼樣可靠嗎 幣安廣場怎麼樣可靠嗎 May 07, 2025 pm 07:18 PM

幣安廣場(Binance Square)是幣安交易所提供的一個社交媒體平台,旨在為用戶提供一個交流和分享加密貨幣相關信息的空間。本文將詳細探討幣安廣場的功能、可靠性以及用戶體驗,幫助你更好地了解這個平台。

ok交易所國內如何註冊? ok交易平台大陸新手註冊使用指南 ok交易所國內如何註冊? ok交易平台大陸新手註冊使用指南 May 08, 2025 pm 10:51 PM

在加密貨幣市場中,選擇一個可靠的交易平台是至關重要的。 OK交易平台作為全球知名的數字資產交易所,吸引了大量大陸新手用戶。本指南將詳細介紹如何在OK交易平台上進行註冊和使用,幫助新手用戶快速上手。

2025年十大數字虛擬幣交易APP排行 十大數字幣交易所app匯總 2025年十大數字虛擬幣交易APP排行 十大數字幣交易所app匯總 May 08, 2025 pm 05:24 PM

2025年十大數字虛擬幣交易APP排行:1. Binance:全球領先,提供高效交易和多種金融產品。 2. OKX:創新多樣,支持多種交易類型。 3. Huobi:穩定可靠,服務優質。 4. Coinbase:新手友好,界面簡潔。 5. Kraken:專業交易者首選,工具強大。 6. Bitfinex:高效交易,交易對豐富。 7. Bittrex:安全合規,監管合作。

歐意OKX6.118.0版本最新下載教程 歐意OKX6.118.0版本最新下載教程 May 07, 2025 pm 06:51 PM

歐意OKX6.118.0版本最新下載教程:1、點擊文章中快捷鏈接;2、點擊下載即可(如果是網頁用戶請先進行信息註冊)。最新安卓版本v6.118.0優化了部分功能和體驗,讓交易更容易。立即更新App,感受更加極致的交易體驗。

2025幣安Binance交易所最新登錄入口 2025幣安Binance交易所最新登錄入口 May 07, 2025 pm 07:03 PM

幣安(Binance)作為全球領先的加密貨幣交易所,始終致力於為用戶提供安全、便捷的交易體驗。隨著時間的推移,幣安不斷優化其平台功能和用戶界面,以滿足用戶不斷變化的需求。 2025年,幣安推出了新的登錄入口,旨在進一步提升用戶體驗。

期貨交易平台TOP10:永續合約與期權交易 期貨交易平台TOP10:永續合約與期權交易 May 08, 2025 pm 07:12 PM

在加密貨幣市場中,期貨交易平台扮演著重要角色,尤其是在永續合約和期權交易方面。以下是當前市場上備受推崇的十大期貨交易平台,並詳細介紹它們在永續合約和期權交易方面的特點和優勢。

全球十大支持多鏈交易的加密貨幣平台2025年權威發布 全球十大支持多鏈交易的加密貨幣平台2025年權威發布 May 08, 2025 pm 07:15 PM

根據 2025 年權威機構的最新評估和行業趨勢,以下是全球十大支持多鏈交易的加密貨幣平台,結合交易量、技術創新、合規性及用戶口碑綜合分析:

歐意OKX5.1最新版本下載 歐意OKX5.1最新版本下載 May 07, 2025 pm 06:48 PM

歐意OKX6.118.0版本最新下載教程:1、點擊文章中快捷鏈接;2、點擊下載即可(如果是網頁用戶請先進行信息註冊)。最新安卓版本v6.118.0優化了部分功能和體驗,讓交易更容易。立即更新App,感受更加極致的交易體驗。

See all articles