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的权限。

相关文章
相关标签/搜索