首先,給大家介紹一下TDSQL,TDSQL MySQL 版(TDSQL for MySQL)是騰訊打造的一款分布式資料庫產品,具備強一致高可用、全球部署架構、分布式水平擴展、高性能、企業級安全等特性,同時提供智能 DBA、自動化運營、監控告警等配套設施,為客戶提供完整的分布式資料庫解決方案,(TDSQL(mysql版)產品詳細資訊https://cloud.tencent.com/product/dcdb/details)
相信有部分公司已經在使用或者試用過這款資料庫產品了,那么在部署和使用中都或多或少的遇到一些問題,下面我先給各位介紹一下我遇到的這個問題,
一、問題:
眾所周知,TDSQL集群會在一開始初始化時產出一個監控庫實體,正常情況下我們是不建議用戶去操作或者獨自操作監控庫這個實體的,但如果因為誤操作與不小心修改了監控庫的密碼,并且又沒有記住,下面這段應該能幫到你,
二、故障復現:
以下操作為我在自己的測驗環境進行的問題復現,
1、修改監控庫密碼:

2、進入監控庫實體,查看實體的訪問賬戶資訊:

3、對如上tdsqlpcloud賬號進行修改密碼操作:


4、在確認修改密碼之后,視窗立馬會出現php錯誤提示資訊:

隨后我們重繪赤兔頁面,將會發現赤兔已經沒有辦法正常訪問了,

三、排查程序與問題解決:
1、接下來就是我們的排查思路,首先我們先看報錯,最上面提示我們username or password error就已經暴露出問題,證明這個問題是我們修改密碼導致的,而下面的Backtrace暴露給我們的則是赤兔頁面上的組件監控獲取的方式,同樣是去監控庫里面取所需要的資料,
2、在部署的程序中我們已知有這么幾個地方會存放監控庫的賬戶名密碼,第一是在安裝部署包的group_vars/all內,但這個只是初期錄入的監控庫資訊,修改并不會起作用,后面我們就想第二個會存放的地方,那就是赤兔的php組態檔

可見這里的密碼還不是我們修改后的密碼,我們接著找,
3、在初始化赤兔的時候如果有注意的話會發現除了創建了監控庫還會創建一個配置庫,默認庫名為tdsqlpcloud,配置庫中一般一會存盤用戶名和密碼,雖然當前沒有辦法通過proxy登陸資料庫,但還是能夠通過root權限登陸資料庫的,所以我們看一下配置庫中的表資訊,


可見這里的密碼仍然不是我們修改后的密碼,我們接著找,

其中authentication_string欄位被password()函式進行了加密,

這個應該就是我們最后要找的密碼,但是進行了加密,解密太過麻煩,所以我們嘗試換一種思路,不去糾結現在的密碼是什么,選擇用一串已知的字符,使用此加密演算法進行加密,之后替換user:tdsqlpcloud的authentication_string欄位暴力改掉密碼,經過試驗,此方法依舊行不通,應該是修改密碼操作改動的地方不只是這幾個,
4、從底層直接修改的密碼看來是不可行的,所以我們就想能不能夠仿照管控重新下發修改密碼操作,這樣就能重新讓管控走一遍密碼修改的流程,接下來我們再試驗一下,
5、登錄任意一臺機器的后臺,只要能和OSS服務通信,執行如下命令:

curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"callee":"TDSQL","caller":"DES","eventId":101,"interface":{"interfaceName":"TDSQL.ResetPwd","para":{"groupid":"","host":"%","id":"set_id","pwd":"userpassword","user":"username"}},"password":"DES","timestamp":1435749309,"version":"1.0"}' 10.0.0.5:8080/tdsql
6、查看執行結果見到有"err_msg":"resetpwd ok","returnMsg":"ok",則繼續下一步,
嘗試重繪赤兔頁面,如果訪問不正常則是因為之前我們修改過赤兔的組態檔和配置庫中的密碼,所以我們要把密碼恢復到一致,都修改一致后,我們重新嘗試重繪赤兔頁面,頁面已恢復正常,
由此事可知,在使用tdsql程序中修改實體密碼一定要牢記!!!一定要牢記!!
經過一番操作后,赤兔管理平臺與監控庫實體終于可以正常訪問和使用了,希望上述的程序能夠幫到各位,祝在讀此文章的大牛們作業順利,事事順心,
文章來源:云貝學院
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/296425.html
標籤:其它
