解決辦法:
master_info_repository設定成table
實際在Orch的文件中也提過:
但也沒說不配置成table問題的嚴重性。
大家在使用Orch的時候,需要注意這個細節。
3 獲取慢查詢有哪些方案
來源:MySQL資料庫聯盟
討論了一些MySQL相關的問題,這裡就來總結一下,大家也可以一起在留言區討論。
1 Xtrabackup是不是一直都用的ftwrl,有沒有用到backup lock
先說答案:5.6+,是ftwrl(FLUSH TABLES WITH READ LOCK),8.0是LOCK INSTANCE FOR BACKUP
判斷這類問題,有兩個解決思路:
一個是檢視官方文件:
有下面截圖這一段:
還有一個方法:
透過實驗驗證,備份過程開啟general log,看會執行哪些命令。
2 Orch切換主從拓撲之後,為什麼找不到複製使用者?
Orchestrator切換,某個從庫會報錯:
Fatal error: Invalid (empty) username when attempting to connect to the master server. Connection attempt terminated
查了Github的issues,發現也有人遇到同樣的問題
原因:
master_info_repository 沒設定成 'TABLE'
解決辦法:
master_info_repository設定成table
實際在Orch的文件中也提過:
但也沒說不配置成table問題的嚴重性。
大家在使用Orch的時候,需要注意這個細節。
3 獲取慢查詢有哪些方案
方案一:ELK
Elasticsearch, Logstash, and Kibana
方案二:PMM
這個方案可以跳轉之前的一篇文章:
方案三:ClickTail+ClickHouse+Grafana
這個方案可以跳轉之前的兩篇文章:
ClickTail+CH 實現 MySQL 慢查詢實時展示
使用 Grafana 展示 ClickHouse 資料
4 線上有張表資料100多萬,700多M,但是磁碟碎片有4個T,這種能直接drop掉嗎 ?還是有什麼方式可以刪掉?
不能直接刪除,要當成4T的表處理,給資料檔案.ibd建立一個硬連結,這樣drop就很快了。
過程為:
ln table_name.ibd table_name.ibd.bak
在drop表
drop table table_name;
最後再刪除物理檔案:
for i in `seq 4096 -1 1 ` ; do sleep 1; truncate -s ${i}G table_name.ibd.bak; done rm -f table_name.ibd.bak
當然,如果是雲上RDS,就需要找雲廠商,研究怎麼安全的刪除,畢竟我們不能操作機器。
5 MySQL binlog裡面的時間,有些不是順序的。一般在什麼情況下發生?是因為主庫併發執行的事務原因嗎?
我做了一個這樣的實驗:
最終解析之後,就出現了下圖這種情況:
Binlog記錄位置靠後的,時間點還靠前。
從庫其實也一樣的。
也就是併發事務,先執行SQL的,後面再提交(什麼時候提交,什麼時候記錄Binlog),可能會出現時間在前面的事務,Binlog位置在後面,看起來像亂序了。
6 keepalived+主從,如果發生了vip漂移,那老的主啟動,是不是不能同步資料了,這樣會不會導致資料不一致?
一般建議是keepalived+雙主,也就是兩套資料庫互為主備,這樣及時切換了,反向還是同步的,那原來的主還是一直同步新主資料的。
但是一般只建議用一個VIP,也就是隻在一個主上寫,另外,如果要避免主鍵衝突,建議是主從跳主鍵的形式,比如主的主鍵 1 3 5,從的主鍵 2 4 6。
當然,現在推薦使用其他兩款高可用方案:
InnoDB Cluster,可以參考之前寫的部署文件:InnoDB Cluster的部署;
Orchestrator,可以參考之前寫的部署文件:Orchestrator實現MySQL故障切換。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70027826/viewspace-3002058/,如需轉載,請註明出處,否則將追究法律責任。