在實際的開發過程中,可能會需要在一台伺服器上部署多個MYSQL執行個體,那建議使用MYSQL官方的解決方案 mysqld_multi
1.修改my.cnf
如一個定義兩個執行個體的參考配置:
代碼如下 |
複製代碼 |
[mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin user = your_user password = your_password [mysqld1] datadir = /data/db/my1 #串連 port = 3306 socket = /tmp/mysql3306.sock #binlog log-bin=/data/db/mylog1/mysql-bin binlog_format=mixed binlog_cache_size = 32M expire_logs_days = 30 [mysqld2] datadir = /data/db/my2 #串連 port = 3307 socket = /tmp/mysql3307.sock #binlog log-bin=/data/db/mylog2/mysql-bin binlog_format=mixed binlog_cache_size = 32M expire_logs_days = 3 |
2.建立資料目錄
代碼如下 |
複製代碼 |
mkdir -p /data/db/my21 mkdir -p /data/db/my2 chown mysql.mysql /data/db/my1 -R chown mysql.mysql /data/db/my2 -R
|
3.初始化DB
代碼如下 |
複製代碼 |
/usr/local/mysql/scripts/mysql_install_db --datadir=/data/db/my1/ -uroot (mysql_install_db也是MYSQL官方內建工具) /usr/local/mysql/scripts/mysql_install_db --datadir=/data/db/my2/ -uroot chown mysql.mysql /data/db/my1/ -R chown mysql.mysql /data/db/my2/ -R |
4. 安裝工具
代碼如下 |
複製代碼 |
cp /usr/local/mysql/bin/my_print_defaults /usr/bin/ cp /usr/local/mysql/bin/mysqld_multi /usr/bin/ |
5.建立、授權使用者
代碼如下 |
複製代碼 |
CREATE USER "your_user"@"192.168.1.%" IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO "your_user"@"192.168.1.%"; flush privileges; |
至此,mysql多執行個體配置已經完畢。我們看到多個不同的MYSQL執行個體是共用my.cnf的。多執行個體命令列管理:
1.mysql啟動
代碼如下 |
複製代碼 |
mysqld_multi start 1 啟動執行個體1 mysqld_multi start 1-2 啟動執行個體1,2 |
2.mysql重啟
代碼如下 |
複製代碼 |
mysqld_multi restart 1 重啟執行個體1 mysqld_multi restart 1-2 重啟執行個體1,2 |
3.mysql關閉
代碼如下 |
複製代碼 |
mysqld_multi stop 1 關閉執行個體1 mysqld_multi stop 1-2 關閉執行個體1,2 |
4.命令列登陸執行個體2
代碼如下 |
複製代碼 |
mysql -u your_user -p your_password -P3307 -S /tmp/mysql3307.sock |
後面附另一文章的
Mysqld_multi啟動、關閉、狀態檢查
要想調用mysqld_multi,使用下面的文法:
shell> mysqld_multi [options] {start|stop|report} [GNR[,GNR] ...]
start、stop和report表示你想要執行的操作。你可以在單個伺服器或多個伺服器上執行指定的操作,取決於選項名後面的GNR 列。如果沒有該列,mysqld_multi為選項檔案中的所有伺服器執行該操作。
每個GNR值代表一個選項組號或組號範圍。GNR值應為選項檔案中組名末尾的號。例如,組[mysqld17]的GNR為17。要想指定組號的範圍,用破折號間隔開第1個和最後1個號。GNR值10-13代表組[mysqld10]到[mysqld13]。可以在命令列中指定多個組或組範圍,用逗號間隔開。GNR列不能有空白字元(空格或tab);空白字元後面的內容將被忽略掉。
該命令使用選項組[mysqld1]啟動單個伺服器:
代碼如下 |
複製代碼 |
shell> /usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf start 1 |
該命令停止多個伺服器,使用選項組[mysql8]和[mysqld10]至[mysqld13]:
代碼如下 |
複製代碼 |
shell>/usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf stop 8,10-13 |
或者一下形式關閉單個伺服器
代碼如下 |
複製代碼 |
shell> mysqladmin -u root -S /tmp/mysql3306.sock shutdown |
該命令查看多個伺服器,使用選項組[mysql8]和[mysqld10]至[mysqld13]:
代碼如下 |
複製代碼 |
shell>/usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf report 8,10-13 |