随着目前大部分服务器资源充盈,咱们固然也要勤俭持家了,因此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的权限。