隨着目前大部分服務器資源充盈,咱們固然也要勤儉持家了,因此MySQL多實例就是能夠將多個MySQL服務運行在一臺機器上(不限於版本),固然了這也跟合租同樣,若是有一個服務有小脾氣那整個服務器上的服務可能都要鬧小脾氣了,哈哈。mysql
在配置MySQL多實例以前我但願已經理解了MySQL單實例的部署形式,由於這裏不會教你怎麼部署MySQL。sql
統計信息以下:shell
有了上面的條件你就徹底能夠搞事情了,哈哈數據庫
多實例咱們須要隔離的內容有:端口、DATADIR;固然在個別狀況下你是能夠隔離BASEDIR的。安全
第一步首先找一個當前最高版本的MySQL(你運行中的),獲取裏面的mysqld_multi.server
這個就在MySQL的安裝包裏面的support-files目錄下。服務器
爲何找一個當前運行的最新版本呢?由於兼容性更好socket
第二步,咱們就須要配置咱們的服務了this
示例配置文件以下:unix
# This is an example of a my.cnf file for mysqld_multi. # Usually this file is located in home dir ~/.my.cnf or /etc/my.cnf [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin user = multi_admin password = my_password [mysqld2] socket = /tmp/mysql.sock2 port = 3307 pid-file = /usr/local/mysql/data2/hostname.pid2 datadir = /usr/local/mysql/data2 language = /usr/local/mysql/share/mysql/english user = unix_user1 [mysqld3] mysqld = /path/to/mysqld_safe ledir = /path/to/mysqld-binary/ mysqladmin = /path/to/mysqladmin socket = /tmp/mysql.sock3 port = 3308 pid-file = /usr/local/mysql/data3/hostname.pid3 datadir = /usr/local/mysql/data3 language = /usr/local/mysql/share/mysql/swedish user = unix_user2 [mysqld4] socket = /tmp/mysql.sock4 port = 3309 pid-file = /usr/local/mysql/data4/hostname.pid4 datadir = /usr/local/mysql/data4 language = /usr/local/mysql/share/mysql/estonia user = unix_user3 [mysqld6] socket = /tmp/mysql.sock6 port = 3311 pid-file = /usr/local/mysql/data6/hostname.pid6 datadir = /usr/local/mysql/data6 language = /usr/local/mysql/share/mysql/japanese user = unix_user4
你們根據本身配置加上便可了,多實例的原理呢也很是簡單,經過參數運行mysqld_safe啓動服務,經過mysqladmin發送shutdown來關閉服務器,因此呢這裏須要提供一個具備shutdown權限的MySQL用戶code
受權指令以下:
GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'password'
查看支持的數據組
/etc/init.d/mysqld_multi report
mysqld_multi 是一個能夠經過chkconfig管理的服務。
啓動服務的形式以下:
/etc/init.d/mysqld_multi start ID /etc/init.d/mysqld_multi start
後者是所有啓動,前者指定配置文件裏面的ID啓動服務,mysqld3306 這裏3306就是實力ID。
中止服務也是如此,不過中止服務可能會有問題,個人MySQL5.7就不可使用,緣由是裏面的組件my_print_defaults在解析密碼時隱藏了,因此這裏咱們簡單修改一下啓動腳本。
舊代碼:
my $com= join ' ', 'my_print_defaults', @defaults_options, $group;
新代碼:
my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group;
my_print_defaults -s 的做用是明文顯示密碼,這樣就能夠了。
多實例在同一臺服務器上,有一臺出現問題其餘的也會有影響,另外密碼存放在配置文件中不安全,能夠在關閉時手工指定密碼,或者給配置文件600的權限。