DBGateway常見(jiàn)問(wèn)題
本文介紹DBGateway的目錄結(jié)構(gòu)、基本操作和常見(jiàn)問(wèn)題處理。
DBGateway目錄結(jié)構(gòu)
dbgateway
|-- bin
| |-- dbgateway
| \-- dbgateway-manager
|-- conf
| |-- dbgateway.conf
| \-- server.crt
\-- log
|-- dbgateway.err
|-- dbgateway.log
\-- dbgateway_manager.log
bin目錄下包含dbgateway(主程序)和dbgateway-manager(DBGateway管理腳本,用于維護(hù)DBGateway)。
conf目錄下包含dbgateway.conf(DBGateway配置文件)和server.crt(通信公鑰)。
log目錄下包含dbgateway.err(DBGateway錯(cuò)誤輸出)、dbgateway.log(DBGateway的日志)和dbgateway_manager.log(DBGateway管理腳本日志)。
DBGateway的基本操作
查看DBGateway日志
DBGateway日志文件全路徑為:/opt/dbgateway/log/dbgateway.log。
日志文件以文本格式存儲(chǔ),因此可以用vim、tail、cat和less等常規(guī)工具查看日志。
當(dāng)DAS產(chǎn)品客服或技術(shù)人員需要您提供DBGateway日志輔助排查問(wèn)題時(shí),可以登錄部署DBGateway的服務(wù)器使用以下命令,查看最近200條日志,并將這些日志提供給產(chǎn)品客服或技術(shù)人員。
tail -n 200 /opt/dbgateway/log/dbgateway.log
判斷DBGateway進(jìn)程是否正在運(yùn)行
登錄DAS控制臺(tái)。
在左側(cè)導(dǎo)航欄中,單擊DBGateway管理。
在DBGateway管理界面,查看目標(biāo)DBGateway的當(dāng)前狀態(tài)。
當(dāng)前狀態(tài)顯示正常時(shí),表示DBGateway進(jìn)程正在運(yùn)行,否則請(qǐng)?jiān)诓渴餌BGateway的服務(wù)器上執(zhí)行以下命令:
/opt/dbgateway/bin/dbgateway-manager -d status
當(dāng)DBGateway進(jìn)程正在運(yùn)行時(shí),返回:
DBGateway is running.
DBGateway進(jìn)程不存在時(shí),返回:
DBGateway is dead.
說(shuō)明本步驟只用于判斷DBGateway進(jìn)程是否正在運(yùn)行,無(wú)法判斷其是否正常工作。
重啟DBGateway
依照上述步驟,判斷DBGateway進(jìn)程是否正在運(yùn)行。
重啟DBGateway。
DBGateway進(jìn)程正在運(yùn)行時(shí):
在DBGateway管理界面,單擊目標(biāo)DBGateway操作列的
。在部署DBGateway的服務(wù)器上執(zhí)行以下命令:
/opt/dbgateway/bin/dbgateway-manager -d restart
DBGateway進(jìn)程不存在時(shí):
此時(shí)無(wú)法在DAS控制臺(tái)界面上操作,僅支持使用命令重啟。在部署DBGateway的服務(wù)器上執(zhí)行以下命令:
/opt/dbgateway/bin/dbgateway-manager -d restart
升級(jí)DBGateway
在DBGateway管理界面,單擊目標(biāo)DBGateway操作列的
。停止DBGateway
在DBGateway管理界面,單擊目標(biāo)DBGateway操作列的
。在部署DBGateway的服務(wù)器上執(zhí)行以下命令:
/opt/dbgateway/bin/dbgateway-manager -d stop
刪除DBGateway
說(shuō)明刪除DBGateway后,與之相關(guān)的數(shù)據(jù)庫(kù)實(shí)例的DAS所有功能將無(wú)法使用。
當(dāng)前狀態(tài)為正常的DBGateway無(wú)法直接刪除,請(qǐng)先停止該DBGateway后再進(jìn)行刪除。
在DBGateway管理界面,單擊目標(biāo)DBGateway操作列的
。可選:在部署DBGateway的服務(wù)器上執(zhí)行如下命令刪除DBGateway安裝目錄。
rm -rf /opt/dbgateway
重裝DBGateway
刪除DBGateway后,使用接入數(shù)據(jù)庫(kù)實(shí)例時(shí)由DAS控制臺(tái)獲取的部署命令,在目標(biāo)服務(wù)器重新部署DBGateway。
DBGateway部署問(wèn)題排查
使用集中模式的數(shù)據(jù)庫(kù)網(wǎng)關(guān)或者使用主機(jī)模式的數(shù)據(jù)庫(kù)網(wǎng)關(guān)接入數(shù)據(jù)庫(kù)實(shí)例時(shí),可以獲取部署DBGateway的命令。本文以如下部署命令為例,其中vpcID及token僅用于舉例,實(shí)際使用中請(qǐng)以獲取的部署命令為準(zhǔn)。
無(wú)法下載DBGateway部署腳本
如果出現(xiàn)
wget command not found
提示,說(shuō)明當(dāng)前系統(tǒng)中缺少wget
命令,請(qǐng)使用以下命令安裝wget
:sudo apt-get install wget
或
yum -y install wget
檢查當(dāng)前服務(wù)器的網(wǎng)絡(luò)是否與阿里云OSS網(wǎng)絡(luò)連通。
在當(dāng)前服務(wù)器中
ping
阿里云OSS的域名。本文中,以hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com
為例,實(shí)際使用中請(qǐng)以獲取的部署命令為準(zhǔn)。ping hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com
如果返回如下內(nèi)容,說(shuō)明域名無(wú)法解析,請(qǐng)檢查您的DNS解析服務(wù)器設(shè)置是否正確,且其域名解析是否正常工作。
ping: unknown host hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com
如果
ping
域名后長(zhǎng)時(shí)間沒(méi)有任何輸出及返回,說(shuō)明網(wǎng)絡(luò)無(wú)法連通,請(qǐng)檢查:服務(wù)器的網(wǎng)絡(luò)配置是否正常。
服務(wù)器所在網(wǎng)絡(luò)接入類(lèi)型(公網(wǎng)或?qū)S芯W(wǎng)絡(luò))是否選擇正確。
網(wǎng)絡(luò)接入類(lèi)型為專(zhuān)有網(wǎng)絡(luò)時(shí),是否選擇了正確的地域。
測(cè)試當(dāng)前服務(wù)器是否與DAS服務(wù)器連通
在需要部署DBGateway的服務(wù)器執(zhí)行如下命令。本文中,以DAS服務(wù)器域名為
master-hdm-cn-hangzhou.aliyuncs.com
舉例,實(shí)際使用中請(qǐng)以獲取的部署命令為準(zhǔn)。telnet master-hdm-cn-hangzhou.aliyuncs.com 80
如果返回
Name or service not known
,說(shuō)明域名無(wú)法解析,請(qǐng)檢查您的DNS解析服務(wù)器設(shè)置是否正確,且其域名解析正常工作。如果返回
Trying
IP地址,例如Trying 10.0.XX.XX
,則表示網(wǎng)絡(luò)不通,請(qǐng)檢查:服務(wù)器的網(wǎng)絡(luò)配置是否正常。
服務(wù)器所在網(wǎng)絡(luò)接入類(lèi)型(公網(wǎng)或?qū)S芯W(wǎng)絡(luò))是否選擇正確。
網(wǎng)絡(luò)接入類(lèi)型為專(zhuān)有網(wǎng)絡(luò)時(shí),是否選擇了正確的地域。
如果返回如下內(nèi)容:
Connected to master-hdm-cn-hangzhou.aliyuncs.com. Escape character is '^]'.
表示已經(jīng)與DAS服務(wù)器正常連通。如果DBGateway仍然無(wú)法啟動(dòng),需要參考上文,查看 DBGateway日志進(jìn)行進(jìn)一步排查。
DBGateway運(yùn)行異常排查
驗(yàn)證失敗或權(quán)限不足
確保創(chuàng)建授權(quán)賬號(hào)及密碼時(shí),具有以下權(quán)限。本文以授權(quán)賬號(hào)為das_test舉例。
MySQL
CREATE USER 'das_test'@'%' IDENTIFIED BY 'password'; GRANT SHOW DATABASES, PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'das_test'@'%'; GRANT SELECT ON *.* TO 'das_test'@'%';
PostgreSQL
CREATE USER das_test PASSWORD 'password'; GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC TO das_test; /* 可選執(zhí)行,用于采集慢日志和SQL */ ALTER USER das_test WITH SUPERUSER;
MongoDB
use admin; db.createUser({user:'das_test',pwd:'password',roles:[{role:'readAnyDatabase', db:'admin'}, {role:'clusterMonitor', db:'admin'}, {role: 'hostManager', db: 'admin'}]})
如果出現(xiàn)
(Unauthorized) not authorized on admin to execute command
報(bào)錯(cuò),可再賦予授權(quán)賬號(hào)如下權(quán)限:db.grantRolesToUser("das_test", [{db: "local", role: "dbAdmin"},{db: "config", role: "dbAdmin"},{db: "admin", role: "dbAdminAnyDatabase"}])
Redis
Redis沒(méi)有賬號(hào)概念,因此僅需要保證密碼正確。修改Redis密碼時(shí),需要修改其配置文件中requirepass選項(xiàng)并重啟Redis服務(wù)。請(qǐng)參考Redis configuration。
確保授權(quán)的賬號(hào)及密碼正確,建議在DBGateway所在服務(wù)器上以授權(quán)賬號(hào)及密碼遠(yuǎn)程連接數(shù)據(jù)庫(kù)實(shí)例排查。
重啟DBGateway并觀察實(shí)例授權(quán)是否成功。
推薦升級(jí)到DBGateway最新版。
無(wú)法連接
無(wú)法連接是由于DBGateway無(wú)法連接數(shù)據(jù)庫(kù)實(shí)例導(dǎo)致,請(qǐng)按照以下可能的原因逐一排查:
檢查數(shù)據(jù)庫(kù)實(shí)例是否正常運(yùn)行。
數(shù)據(jù)庫(kù)實(shí)例(MySQL、PostgreSQL、MongoDB和Redis等)如果未正常運(yùn)行,請(qǐng)檢查這些實(shí)例的進(jìn)程是否存在。
檢查DBGateway所在服務(wù)器與數(shù)據(jù)庫(kù)實(shí)例(MySQL、PostgreSQL、MongoDB和Redis等)間網(wǎng)絡(luò)是否連通。請(qǐng)執(zhí)行以下命令確認(rèn):
telnet 數(shù)據(jù)庫(kù)實(shí)例IP或域名 數(shù)據(jù)庫(kù)實(shí)例服務(wù)端口號(hào)
例如:
telnet 192.168.XX.XX 3306
如出現(xiàn)以下提示,表示網(wǎng)絡(luò)連接正常,需要參考上文,查看DBGateway日志進(jìn)行進(jìn)一步排查。
Connected to 192.168.XX.XX Escape character is '^]'.
如沒(méi)有出現(xiàn)以上提示,則說(shuō)明為網(wǎng)絡(luò)連通性問(wèn)題,通常由服務(wù)器之間網(wǎng)絡(luò)隔離、路由設(shè)置、防火墻或數(shù)據(jù)庫(kù)實(shí)例拒絕非本地連接導(dǎo)致的。
監(jiān)控異常
檢查DBGateway的運(yùn)行狀態(tài)。
嘗試重啟DBGateway,并觀察監(jiān)控是否恢復(fù)。
推薦升級(jí)到DBGateway最新版。
長(zhǎng)時(shí)間
已授權(quán),驗(yàn)證中
一般情況下,正確授權(quán)1~2分鐘后,實(shí)例接入狀態(tài)會(huì)變?yōu)?b data-tag="uicontrol" id="uicontrol-ea8-uy0-twi" class="uicontrol">連接正常。如長(zhǎng)時(shí)間(超過(guò)2分鐘)顯示
已授權(quán),驗(yàn)證中
:檢查DBGateway的運(yùn)行狀態(tài)。
嘗試重啟DBGateway并觀察實(shí)例授權(quán)是否成功。
推薦升級(jí)到DBGateway最新版。