本文介紹DBGateway的目錄結構、基本操作和常見問題處理。
DBGateway目錄結構
dbgateway
|-- bin
| |-- dbgateway
| \-- dbgateway-manager
|-- conf
| |-- dbgateway.conf
| \-- server.crt
\-- log
|-- dbgateway.err
|-- dbgateway.log
\-- dbgateway_manager.log
bin目錄下包含dbgateway(主程式)和dbgateway-manager(DBGateway管理指令碼,用於維護DBGateway)。
conf目錄下包含dbgateway.conf(DBGateway設定檔)和server.crt(通訊公開金鑰)。
log目錄下包含dbgateway.err(DBGateway錯誤輸出)、dbgateway.log(DBGateway的日誌)和dbgateway_manager.log(DBGateway管理指令碼日誌)。
DBGateway的基本操作
查看DBGateway日誌
DBGateway記錄檔全路徑為:/opt/dbgateway/log/dbgateway.log。
記錄檔以文字格式設定儲存,因此可以用vim、tail、cat和less等常規工具查看日誌。
當DAS產品客服或技術人員需要您提供DBGateway日誌輔助排查問題時,可以登入部署DBGateway的伺服器使用以下命令,查看最近200條日誌,並將這些日誌提供給產品客服或技術人員。
tail -n 200 /opt/dbgateway/log/dbgateway.log
判斷DBGateway進程是否正在運行
登入DAS控制台。
在左側導覽列中,單擊DBGateway管理。
在DBGateway管理介面,查看目標DBGateway的目前狀態。
目前狀態顯示正常時,表示DBGateway進程正在運行,否則請在部署DBGateway的伺服器上執行以下命令:
/opt/dbgateway/bin/dbgateway-manager -d status
當DBGateway進程正在運行時,返回:
DBGateway is running.
DBGateway進程不存在時,返回:
DBGateway is dead.
說明本步驟只用於判斷DBGateway進程是否正在運行,無法判斷其是否正常工作。
重啟DBGateway
依照上述步驟,判斷DBGateway進程是否正在運行。
重啟DBGateway。
DBGateway進程正在運行時:
在DBGateway管理介面,單擊目標DBGateway操作列的
。在部署DBGateway的伺服器上執行以下命令:
/opt/dbgateway/bin/dbgateway-manager -d restart
DBGateway進程不存在時:
此時無法在DAS控制台介面上操作,僅支援使用命令重啟。在部署DBGateway的伺服器上執行以下命令:
/opt/dbgateway/bin/dbgateway-manager -d restart
升級DBGateway
在DBGateway管理介面,單擊目標DBGateway操作列的
。停止DBGateway
在DBGateway管理介面,單擊目標DBGateway操作列的
。在部署DBGateway的伺服器上執行以下命令:
/opt/dbgateway/bin/dbgateway-manager -d stop
刪除DBGateway
說明刪除DBGateway後,與之相關的資料庫執行個體的DAS所有功能將無法使用。
目前狀態為正常的DBGateway無法直接刪除,請先停止該DBGateway後再進行刪除。
在DBGateway管理介面,單擊目標DBGateway操作列的
。可選:在部署DBGateway的伺服器上執行如下命令刪除DBGateway安裝目錄。
rm -rf /opt/dbgateway
重裝DBGateway
刪除DBGateway後,使用接入資料庫執行個體時由DAS控制台擷取的部署命令,在目標伺服器重新部署DBGateway。
DBGateway部署問題排查
使用集線模式的資料庫網關或者使用主機模式的資料庫網關接入資料庫執行個體時,可以擷取部署DBGateway的命令。本文以如下部署命令為例,其中vpcID及token僅用於舉例,實際使用中請以擷取的部署命令為準。
無法下載DBGateway部署指令碼
如果出現
wget command not found
提示,說明當前系統中缺少wget
命令,請使用以下命令安裝wget
:sudo apt-get install wget
或
yum -y install wget
檢查當前伺服器的網路是否與阿里雲OSS網路連通。
在當前伺服器中
ping
阿里雲OSS的網域名稱。本文中,以hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com
為例,實際使用中請以擷取的部署命令為準。ping hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com
如果返回如下內容,說明網域名稱無法解析,請檢查您的DNS解析伺服器設定是否正確,且其網域名稱解析是否正常工作。
ping: unknown host hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com
如果
ping
網域名稱後長時間沒有任何輸出及返回,說明網路無法連通,請檢查:伺服器的網路設定是否正常。
伺服器所在網路接入類型(公網或專用網路)是否選擇正確。
網路接入類型為專用網路時,是否選擇了正確的地區。
測試當前伺服器是否與DAS伺服器連通
在需要部署DBGateway的伺服器執行如下命令。本文中,以DAS伺服器網域名稱為
master-hdm-cn-hangzhou.aliyuncs.com
舉例,實際使用中請以擷取的部署命令為準。telnet master-hdm-cn-hangzhou.aliyuncs.com 80
如果返回
Name or service not known
,說明網域名稱無法解析,請檢查您的DNS解析伺服器設定是否正確,且其網域名稱解析正常工作。如果返回
Trying
IP地址,例如Trying 10.0.XX.XX
,則表示網路不通,請檢查:伺服器的網路設定是否正常。
伺服器所在網路接入類型(公網或專用網路)是否選擇正確。
網路接入類型為專用網路時,是否選擇了正確的地區。
如果返回如下內容:
Connected to master-hdm-cn-hangzhou.aliyuncs.com. Escape character is '^]'.
表示已經與DAS伺服器正常連通。如果DBGateway仍然無法啟動,需要參考上文,查看 DBGateway日誌進行進一步排查。
DBGateway運行異常排查
驗證失敗或許可權不足
確保建立授權帳號及密碼時,具有以下許可權。本文以授權帳號為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; /* 可選執行,用於採集慢日誌和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'}]})
如果出現
(Unauthorized) not authorized on admin to execute command
報錯,可再賦予授權帳號如下許可權:db.grantRolesToUser("das_test", [{db: "local", role: "dbAdmin"},{db: "config", role: "dbAdmin"},{db: "admin", role: "dbAdminAnyDatabase"}])
Redis
Redis沒有帳號概念,因此僅需要保證密碼正確。修改Redis密碼時,需要修改其設定檔中requirepass選項並重啟Redis服務。請參考Redis configuration。
確保授權的帳號及密碼正確,建議在DBGateway所在伺服器上以授權帳號及密碼遠端連線資料庫執行個體排查。
重啟DBGateway並觀察執行個體授權是否成功。
推薦升級到DBGateway最新版。
無法串連
無法串連是由於DBGateway無法串連資料庫執行個體導致,請按照以下可能的原因逐一排查:
檢查資料庫執行個體是否正常運行。
資料庫執行個體(MySQL、PostgreSQL、MongoDB和Redis等)如果未正常運行,請檢查這些執行個體的進程是否存在。
檢查DBGateway所在伺服器與資料庫執行個體(MySQL、PostgreSQL、MongoDB和Redis等)間網路是否連通。請執行以下命令確認:
telnet 資料庫執行個體IP或網域名稱 資料庫執行個體服務連接埠號碼
例如:
telnet 192.168.XX.XX 3306
如出現以下提示,表示網路連接正常,需要參考上文,查看DBGateway日誌進行進一步排查。
Connected to 192.168.XX.XX Escape character is '^]'.
如沒有出現以上提示,則說明為網路連通性問題,通常由伺服器之間網路隔離、路由設定、防火牆或資料庫執行個體拒絕非本地串連導致的。
監控異常
檢查DBGateway的運行狀態。
嘗試重啟DBGateway,並觀察監控是否恢複。
推薦升級到DBGateway最新版。
長時間
已授權,驗證中
一般情況下,正確授權1~2分鐘後,執行個體接入狀態會變為串連正常。如長時間(超過2分鐘)顯示
已授權,驗證中
:檢查DBGateway的運行狀態。
嘗試重啟DBGateway並觀察執行個體授權是否成功。
推薦升級到DBGateway最新版。