MySQL多實例

一、什麼是MySQL多實例

隨着目前大部分服務器資源充盈,咱們固然也要勤儉持家了,因此MySQL多實例就是能夠將多個MySQL服務運行在一臺機器上(不限於版本),固然了這也跟合租同樣,若是有一個服務有小脾氣那整個服務器上的服務可能都要鬧小脾氣了,哈哈。mysql

二、配置MySQL多實例先決條件

在配置MySQL多實例以前我但願已經理解了MySQL單實例的部署形式,由於這裏不會教你怎麼部署MySQL。sql

統計信息以下:shell

  • MySQL的版本類型,以及BASEDIR;
  • 統計數據庫的DATADIR;
  • 統計服務端口;

有了上面的條件你就徹底能夠搞事情了,哈哈數據庫

三、多實例的隔離

多實例咱們須要隔離的內容有:端口、DATADIR;固然在個別狀況下你是能夠隔離BASEDIR的。安全

四、實戰MySQL多實例

第一步首先找一個當前最高版本的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的權限。

相關文章
相關標籤/搜索