mysql系列-pt-osc使用

 1 組合
    pt-online-schema-change --user= --password= --host= D=,t= --sock=/tmp/mysql.sock --alter '' --charset=utf8 --alter-foreign-keys-method=auto --max-load='Threads_running=35,Threads_connected=10000' --critical-load='Threads_running=200,Threads_connected=10000' --no-check-replication-filters -recursion-method=none --print --execute
  --no-check-replication-filters 不考慮複製過濾規則
  -recursion-method=none 不設置默認方法來指定發現從庫,必須顯示指定
  --max-load 默認thread_running=25 一旦大於25會暫緩pt任務的執行,可以看情況是否調大,參數格式
2 無法生效情況
  1 無任何唯一性索引的表
  2 表本身擁有觸發器
  3 表本身擁有外鍵(儘量不要使用pt-osc)
  4 捕捉到warning級別mysql錯誤(比如1264錯誤)
3 風險情況
  1 給表增加唯一性索引時一定要確保該列沒有重複數據,否則會丟失數據
      1 利用 count(distinct(c1))的值來判斷
       2 原表插入成功,新表有唯一性索引所以插入失敗pt-osc會忽略 這是丟失數據的根本原因
   2 可能會有機率觸發死鎖情況
   3 消費binlog可能有異常,要及時通知消費端

   4 高負載情況下慎用
4 pt-osc強制終止清理
   1 kill pt-osc相關進程
    2 drop triggers
       如果出現MDL鎖要進行MDL鎖定位(一般爲慢查詢導致)
    3 確認 triggers刪除後再執行drop _table_new操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章