MySQL Instance Manager (IM) 是一個透過 TCP/IP 埠(預設 1999)運行的守護進程,負責啟動、監控、重啟、關閉多個 mysqld 實例。IM 讀取 my.cnf 中的 [manager] 與 [mysqldN] 區段。注意:IM 本身若掛掉,所有受管實例皆會停止;IM 會嘗試自動拉起異常退出的實例。
[manager]
user = mysql
default-mysqld-path = /usr/local/mysql/bin/mysqld
socket = /tmp/manager.sock
pid-file = /tmp/manager.pid
password-file = /etc/mysqlmanager.passwd
monitoring-interval = 2
port = 1999
bind-address = 192.168.0.231
log = /usr/local/mysql/bin/mysqlmanager.log
run-as-service = true
[mysqld1]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data1
port = 3306
socket = /tmp/mysql1.sock
[mysqld2]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data2
port = 3309
socket = /tmp/mysql2.sock
/etc/mysqlmanager.passwd 存儲管理帳號(格式:user:hash)。
# 生成/修改密碼
mysqlmanager --add-user # 互動式新增
mysqlmanager --edit-user # 修改密碼
mysqlmanager --drop-user # 刪除用戶
mysqlmanager --list-user # 列出用戶
修改後必須重啟 IM 生效。
# 前台啟動(調試用)
/usr/local/mysql/bin/mysqlmanager
# 客戶端連線管理介面
mysql -u user_all -p -S /tmp/manager.sock -P 1999
# 或遠端
mysql -u user_all -p -h 192.168.0.231 -P 1999
| 命令 | 說明 | 範例 |
|---|---|---|
| SHOW INSTANCES; | 列出所有受管實例狀態 | online / offline |
| START INSTANCE name; | 啟動指定實例 | START INSTANCE mysqld1; |
| STOP INSTANCE name; | 關閉指定實例 | STOP INSTANCE mysqld1; |
| SHOW INSTANCE STATUS name; | 顯示版本、相容性等詳細資訊 | SHOW INSTANCE STATUS mysqld2; |
| SHOW INSTANCE OPTIONS name; | 顯示實例啟動參數(basedir、datadir、buffer 等) | SHOW INSTANCE OPTIONS mysqld1; |
mysql> SHOW INSTANCES;
+---------------+--------+
| instance_name | state |
+---------------+--------+
| mysqld1 | online |
| mysqld2 | online |
+---------------+--------+
mysql> STOP INSTANCE mysqld1;
Query OK, 0 rows affected (0.30 sec)
mysql> SHOW INSTANCES;
+---------------+---------+
| instance_name | state |
+---------------+---------+
| mysqld1 | offline |
| mysqld2 | online |
+---------------+---------+
mysql> START INSTANCE mysqld1;
Query OK, 0 rows affected (0.00 sec)
Instance started
systemctl start mysqld@3306。