所謂多實例安裝實際上是指在一臺機器上開啓多個不一樣的mysql服務端口(3306,3307),運行多個mysql服務進程,這些服務進程經過不一樣的socket監聽不一樣的服務端口來提供各自的服務;多實例安裝主要目的是爲了有效利用服務器資源,可是也存在資源互相搶佔問題。mysql
$ yum install -y libaio #安裝mysql依賴軟件包 $ groupadd mysql #添加mysql權限組 $ useradd -r -g mysql -s /bin/false mysql #添加mysql權限組的非登陸用戶mysql $ cd /usr/local #進入安裝目錄 $ tar zxvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz #解壓MySQL安裝包 $ mv mysql-5.7.27-linux-glibc2.12-x86_64 mysql #重命名爲mysql,此處也能夠創建軟鏈接,MySQL配置中使用的是mysql,因此此處目錄名最好爲mysql,不要修改爲其它的。 $ cd mysql $ mkdir -p data/3306/{data,tmp,log} #建立3306實例的相關目錄 $ touch data/3306/log/mysql.log #建立mysql日誌文件,此文件mysql不會自動生成,只好先手動生成了 $ cp /etc/my.cnf data/3306/ #建立3306實例的配置文件 $ vi data/3306/my.cnf #修改my.cnf配置文件,參數以下圖(參數就再也不介紹了,和單實例的配置幾乎同樣,就mysqld中多了port參數)
$ cp -R data/3306 data/3307 #將3306實例相關配置複製到3307實例 $ cat data/3307/my.cnf | tr [3306] [3307] >> my1.cnf ; mv -f my1.cnf my.cnf #修改3307配置文件將其中的3306全局替換成3307 $ chown mysql:mysql -R data/ #修改權限 $ bin/mysqld --defaults-file=/usr/local/mysql/data/3306/my.cnf --initialize-insecure --user=mysql #初始化3306實例數據庫,此處會加載my.cnf中的datadir參數,並在其配置目錄建立初始數據庫,此處經過--initialize-insecure參數指定不生成默認密碼 $ bin/mysqld --defaults-file=/usr/local/mysql/data/3307/my.cnf --initialize-insecure --user=mysql #初始化3307實例數據庫,此處會加載my.cnf中的datadir參數,並在其配置目錄建立初始數據庫,此處經過--initialize-insecure參數指定不生成默認密碼 $ bin/mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf --user=mysql & #啓動3306數據庫實例 $ bin/mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf --user=mysql & #啓動3307數據庫實例 $ ps -ef | grep mysql | grep -v grep #此處有3306和3307實例說明啓動了2個mysql服務 $ bin/mysql -S /usr/local/mysql/data/3306/tmp/mysql.sock #啓動mysql客戶端鏈接3306數據庫實例,此處能夠啓動並進入mysql命令行,說明mysql服務沒有問題 $ bin/mysql -S /usr/local/mysql/data/3307/tmp/mysql.sock #啓動mysql客戶端鏈接3307數據庫實例,此處能夠啓動並進入mysql命令行,說明mysql服務沒有問題
$ vi /etc/profile #修改全局配置文件將mysql相關命令設置進環境變量中
此處就不寫多實例MySQL啓動的腳本了,有興趣的能夠參考/usr/local/mysql/support-files/mysqld_multi.server文件或者自行百度。linux
此錯誤是我使用bin/mysql -S /usr/local/mysql/data/3306/tmp/mysql.sock命令鏈接數據庫時報的錯誤, 後來看了下我使用這個命令時登陸用戶是普通用戶非root且該用戶不在mysql用戶列表中,因此 須要把命令改爲bin/mysql -uroot -p -S /usr/local/mysql/data/3306/tmp/mysql.sock來指定mysql鏈接用戶。sql