關於mysql 單機多例項的優缺點等介紹具體可以知乎一下或參考mysql單機多例項配置
實現單機多例項可以通過docker輕鬆做到,這裡主要是分享使用自帶工具mysqld_multi的過程及兩個坑點
系統: ubuntu 16.04lts (xenial)
版本: percorna server 5.7.21-20
安裝: 官網教程
新建乙個檔案 /etc/mysql/multi_server.cnf
[mysqld_multi]檢視例項執行# 如果mysql服務不是通過mysqld_safe啟動的,這個要注釋掉
#mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = multi_admin
password = 123456
[mysqld1]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
[mysqld2]
user = mysql
pid-file=/var/run/mysqld/mysql.pid2
socket=/var/run/mysqld/mysqld.sock2
port = 3307
basedir = /usr
datadir = /var/lib/mysql2
mysqld_multi --defaults-file=/etc/mysql/multi_server.cnf report
啟動服務
mysqld_multi --defaults-file=/etc/mysql/multi_server.cnf start
因為一般情況,第乙個已經是我們安裝好,而且root使用者也設定好的,所以不太可能出問題.
mysql2可能出現的問題:
fatal error: tried to start mysqld under group [mysqld2], but no data directory was found or could be created. data directory used: /var/lib/mysql2mysql5.7 新增例項的命令列如下
mysqld --datadir=/var/lib/mysql2 --initialize --initialize-insecure ...再看/usr/bin/mysqld_multi 指令碼343行上下官網鏈結
print "\n\ninstalling new database in $datadir\n\n";
$install_cmd="/usr/bin/mysqld ";
$install_cmd.="--initialize ";
$install_cmd.="--user=mysql ";
$install_cmd.="--datadir=$datadir";
咋一看好像沒什麼問題,實際上,用命令列執行
which mysqld
得到的結果
/usr/sbin/mysqld
接上面,如果就這樣啟動的話,mysql2 例項會隨機給root使用者建乙個隨機密碼,導致後續客戶端無法登入該例項.如果需要找回密碼,只能通過error_log
這時,同樣需要修改指令碼,在指令碼中加上引數"--initialize-insecure",注意引數間的空格.
建立連線之後,再執行
mysql> alter user 'root'@'localhost' identified by 'new_password';給root使用者加許可權
grant all privileges on在各個例項給mysqld_multi管理使用者multi_admin 加上shutdown許可權. to root@'%' identified by "123456";
flush privileges;
grant shutdown on如果通過mysqld_multi stop 無法有效關閉例項,可以通過mysqladmin 直接shutdown. to multi_admin@localhost identified by 'password';
後續如果因為操作不當導致例項無法啟動,可以通過命令檢視錯誤日誌
tail -30 /var/log/mysql/error.log常見問題
2018-02-22t02:02:28.227868z 0 [error] /usr/sbin/mysqld: can't create/write to file '/var/run/mysqld/mysql.pid3' (errcode: 13 - permission denied)這時,可以看到/var/run/mysqld 資料夾如下,把檔案都刪除,再重啟一下就可以了2018-02-22t02:02:28.227889z 0 [error] can't start server: can't create pid file: permission denied
-rw-r--r-- 1 root root 0 feb 22 02:01 mysqld.pid-rw-r--r-- 1 root root 0 feb 21 15:35 mysqld.pid2
srwxrwxrwx 1 mysql mysql 0 feb 22 02:02 mysqld.sock=
srwxrwxrwx 1 mysql mysql 0 feb 22 02:02 mysqld.sock2=
-rw------- 1 mysql mysql 6 feb 22 02:02 mysqld.sock2.lock
srwxrwxrwx 1 mysql mysql 0 feb 22 02:02 mysqld.sock3=
-rw------- 1 mysql mysql 6 feb 22 02:02 mysqld.sock3.lock
-rw------- 1 mysql mysql 6 feb 22 02:02 mysqld.sock.lock
-rw-r--r-- 1 root root 0 feb 22 02:01 mysql.pid2
-rw-r--r-- 1 root root 0 feb 22 02:01 mysql.pid3
mysql單機多例項 MYSQL單機多例項
一 建立安裝目錄 mkdir usr local mysql s 5.6.32 mkdir usr local mysql m 5.6.32 wget tar zxv f mysql 5.6.32.tar.gz 二 編譯命令 1 主編引數 cmake dcmake install prefix da...
mysql單機多例項
在資料庫伺服器上,可以架構多個mysql伺服器,進行單機多例項的讀寫分離 可以通過mysqld multi來進行多例項的管理,mysqld multi是用perl寫的指令碼,原理是通過mysql admin來進行多個資料庫的操作 多例項的配置檔案也有點不同,可以看作是多個mysql配置的集合 mys...
mysql實踐 單機多例項
最近在學習mycat原始碼,有單台雲主機上要跑多個例項的需求,參考了以下的文章 4.修改my.cnf vim usr local mysql etc my.cnf 注釋以下內容 client password your password port 3306 socket tmp mysql.sock...