首頁 資料庫 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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 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教學
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1276
29
C# 教程
1256
24
ok交易所國內如何註冊? ok交易平台大陸新手註冊使用指南 ok交易所國內如何註冊? ok交易平台大陸新手註冊使用指南 May 08, 2025 pm 10:51 PM

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

幣圈十大加密貨幣交易所排行榜 十大數字貨幣交易平台2025年最新排名 幣圈十大加密貨幣交易所排行榜 十大數字貨幣交易平台2025年最新排名 May 08, 2025 pm 10:45 PM

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

幣安binance網頁版入口 幣安binance交易所網頁版直接進 幣安binance網頁版入口 幣安binance交易所網頁版直接進 May 08, 2025 pm 11:03 PM

全球領先的加密貨幣交易平台,以其高效、安全和多樣化的交易服務聞名於世。無論你是經驗豐富的交易者還是初入加密貨幣市場的新手,幣安Binance都能提供你所需的工具和資源。通過幣安Binance網頁版,用戶可以輕鬆訪問交易平台,無需下載任何應用程序,直接通過瀏覽器進行交易操作。本文將詳細介紹如何進入幣安Binance交易所網頁版,並提供一些實用的交易技巧和注意事項。

易歐官方網站入口 易歐交易所蘋果入口官方進入 易歐官方網站入口 易歐交易所蘋果入口官方進入 May 08, 2025 pm 11:12 PM

全球知名的數字貨幣交易平台,成立於2014年,致力於為用戶提供安全、便捷的數字資產交易服務。作為一家國際化的交易所,易歐支持多種主流和小眾數字貨幣的交易,吸引了來自世界各地的用戶。無論是新手還是經驗豐富的交易者,都可以在易歐平台上找到適合自己的交易工具和服務。

2025年5月份牛市怎麼入場 入場交易所推薦 2025年5月份牛市怎麼入場 入場交易所推薦 May 12, 2025 pm 08:51 PM

2025年5月份牛市交易所推薦:1、幣安;2、OKX;3、火幣;4、gate.io;5、芝麻開門等交易所。上述交易所安全可靠,並且支持多種幣種,本文提供詳細下載入口地址。

2025年牛市交易所推薦 2025年牛市交易所推薦 May 12, 2025 pm 08:45 PM

2025年5月份牛市交易所推薦:1、幣安;2、OKX;3、火幣;4、gate.io;5、芝麻開門等交易所。上述交易所安全可靠,並且支持多種幣種,本文提供詳細下載入口地址。

歐意鏈接最新 歐意okx平台官方最新鏈接 歐意鏈接最新 歐意okx平台官方最新鏈接 May 08, 2025 pm 10:57 PM

作為全球領先的數字資產交易平台,憑藉其高效、安全和用戶友好的體驗,吸引了大量的投資者和交易者。無論你是初次接觸加密貨幣市場,還是經驗豐富的交易專家,歐意OKX都提供了豐富的交易工具和服務,以滿足不同層次用戶的需求。近期,歐意OKX發布了最新的官方鏈接,以確保用戶能夠安全、便捷地訪問平台,進行交易和資產管理。

如何設置、獲取和刪除 WordPress Cookie(像專業人士一樣) 如何設置、獲取和刪除 WordPress Cookie(像專業人士一樣) May 12, 2025 pm 08:57 PM

您想了解如何在WordPress網站上使用cookie嗎? Cookie是在用戶瀏覽器中存儲臨時信息的有用工具。您可以使用此信息通過個性化和行為定位來增強用戶體驗。在本終極指南中,我們將向您展示如何像專業人士一樣設置、獲取和刪除WordPresscookie。注意:這是一個高級教程。它要求您精通HTML、CSS、WordPress網站和PHP。什麼是Cookie? Cookie是用戶訪問網站時創建並存儲在用戶瀏覽

See all articles