MySQL多实例

Wesley13
• 阅读 440

1、什么是MySQL多实例

随着目前大部分服务器资源充盈,我们当然也要勤俭持家了,所以MySQL多实例就是可以将多个MySQL服务运行在一台机器上(不限于版本),当然了这也跟合租一样,如果有一个服务有小脾气那整个服务器上的服务可能都要闹小脾气了,哈哈。

2、配置MySQL多实例先决条件

在配置MySQL多实例之前我希望已经理解了MySQL单实例的部署形式,因为这里不会教你怎么部署MySQL。

统计信息如下:

  • MySQL的版本类型,以及BASEDIR;
  • 统计数据库的DATADIR;
  • 统计服务端口;

有了上面的条件你就完全可以搞事情了,哈哈

3、多实例的隔离

多实例我们需要隔离的内容有:端口、DATADIR;当然在个别情况下你是可以隔离BASEDIR的。

4、实战MySQL多实例

第一步首先找一个当前最高版本的MySQL(你运行中的),获取里面的mysqld_multi.server这个就在MySQL的安装包里面的support-files目录下。

为什么找一个当前运行的最新版本呢?因为兼容性更好

第二步,我们就需要配置我们的服务了

示例配置文件如下:

# 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用户

授权指令如下:

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 的作用是明文显示密码,这样就可以了。

5、小结

多实例在同一台服务器上,有一台出现问题其他的也会有影响,另外密码存放在配置文件中不安全,可以在关闭时手工指定密码,或者给配置文件600的权限。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
2年前
MYSQL基础知识小盲区
MYSQL必会的知识新学的MySQL小技能:show PROCESSLIST; 查看当前数据库的进程(也就是正在进行的sql操作)!(https://oscimg.oschina.net/oscnet/c7908995a15dcf322850eb4ba0416cc34b1.png)kil
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
MySQL(mariadb)多实例应用与多实例主从复制
MySQL多实例mysql多实例,简单理解就是在一台服务器上,mysql服务开启多个不同的端口(如3306、3307,3308),运行多个服务进程。这些mysql服务进程通过不同的socket来监听不同的数据端口,进而互不干涉的提供各自的服务。在同一台服务器上,mysql多实例会去共用一套mysql应用程序,因此在部署mysql
Stella981 Stella981
2年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Wesley13 Wesley13
2年前
thinkphp 基本配置
12returnarray(34//定义数据库连接信息5'DB\_TYPE''mysql',//指定数据库是mysql67'DB\_HOST''localhost',89'DB\_NAME''uchome',//数据库名1011'DB\_USER''root
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究