MySQL:单机多实例安装MYSQ8.0系列

什么是MYSQL多实例

简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306、3307),同时运行多个Mysql服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。

这些Mysql多实例公用一套Mysql安装程序,使用不同的my.cnf(也可以相同)配置文件,启动程序(也可以相同)和数据文件。在提供服务时,多实例 Mysql在逻辑上看来是各自独立的,它们根据配置文件的对应设定值,获得服务器相应数量的硬件资源。

打个比方,Mysql多实例就相当于房子的多个卧室,每个实例可以看作一间卧室,整个服务器就是一套房子,服务器的硬件资源(cpu、mem、disk)、软件资源(centos操作系统)可以看作房子的卫生间、客厅,是房子的公用资源。
在这里插入图片描述

多实例的作用与问题

  1. 有效利用服务器资源

当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务,且可以实现资源的逻辑隔离。

  1. 节约服务器资源

当公司资金紧张,但是数据库又需要各自尽量独立的提供服务,而且需要主从复制等技术时,多实例就再好不过了。

Mysql多实例有它的好处,但也有弊端,比如会存在资源互相抢占的问题。

当某个数据库实例并发很高或者有SQL慢查询时,整个实例会消耗大量的系统CPU、磁盘I/O等资源,导致服务器上的其他数据库实例提供服务的质量一起下降。不同实例获取的资源是相互独立的,无法像虚拟化一样完全隔离。

Mysql多实例应用场景

1、资金紧张型公司的选择

若公司资金紧张,公司业务访问量又不是太大,但有希望不同业务的数据库服务各自尽量独立的提供服务而互相不受影响,同时,还需要主从复制等技术提供备份或读写分离服务,那么多实例就再好不过了,比如:可以3台服务器部署915个实例,交叉做主从复制、数据备份及读写分离,这样就可达到915台服务器每个只装一个数据库才有的效果,这里要强调的是所谓的尽量独立是相对的。

2、并发访问不是特别大的业务

当公司业务访问量不太大的时候,服务器的资源基本都是浪费的,这时就很适合多实例的应用,如果对SQL语句的优化做的比较好,Mysql多实例会是一个很值得使用的技术,即使并发很大,合理的分配好系统资源以及搭配好服务,也不会有太大问题。

3、门户网站应用Mysql多实例场景

门户网站通常都会使用多实例,因为配置硬件好的服务器,可以节省IDC机柜空间,同时跑多实例也会减少硬件资源跑不满的浪费。比如,百度公司的很多数据库都是多实例,不过一般是从库多实例。例如某部门中使用的IBM服务器为48核CPU,内存96GB,一台服务器排3-4个实例,此外,新浪网也是多实例,内存48GB左右。

说明:新浪的数据库单机1-4个数据库实例的居多。其中又数1~2个的最多,因为大业务的机器比较多。服务器是DELL R510的居多,CPU是E5210,48GB内存,磁盘是 12 *300GB SAS,做的RAID10。

Mysql多实例常见的配置方案

单一的配置文件、单一启动程序多实例部署方案

Mysql官方文档提到的单一配置文件、单一启动程序多实例部署方案,不是很推荐。
耦合度太高,一个配置文件不好管理。

工作开发和运维的统一原则:降低耦合度。
该方案的缺点是耦合度高。所以一般我们应该下面的方案。

多配置文件、多启动程序部署方案

多配置文件、多启动程序部署方案,是主流的方案。

配置示例如下:
在这里插入图片描述

说明:这里的配置文件my.cnf、启动程序mysql都是独立的文件,数据文件data目录也是独立的。
以上转载自:https://www.cnblogs.com/yangliheng/p/5871215.html

实践

Linux主机上已经安装了一个MYSQL实例

背景:比如 https://blog.csdn.net/zhizhengguan/article/details/83342654 安装了实例,需要新增实例

1、建立mysql数据目录

$ mkdir -p /home/ocean/workspace/mysql/mysql-data/{3307/{data,tmp,binlog,innodb_ts,innodb_log,undo},backup,scripts}

2、创建配置文件
在/home/ocean/workspace/mysql/mysql-data/3307/路径下创建一个my.cnf文件,内容为:

[client]
port = 3307
socket = /home/ocean/workspace/mysql/mysql-data/3307/mysql.sock

[mysqld_multi]
mysqld =/usr/local/mysql/bin/mysqld_safe  
mysqladmin =/usr/local/mysql/bin/mysqladmin  

[mysql]
prompt=(\\u@\\h) [\\d]>\\_
socket = /home/ocean/workspace/mysql/mysql-data/3307/mysql.sock
default-character-set=utf8mb4

[mysqld]    # The MySQL server
port=3307
mysqlx_port = 33070
user=mysql
socket = /home/ocean/workspace/mysql/mysql-data/3307/mysql.sock
mysqlx_socket=/home/ocean/workspace/mysql/mysql-data/3307/mysqlx.sock
pid-file=/home/ocean/workspace/mysql/mysql-data/3307/mysql.pid
basedir=/usr/local/mysql
datadir=/home/ocean/workspace/mysql/mysql-data/3307/data
tmpdir=/home/ocean/workspace/mysql/mysql-data/3307/tmp
character_set_server=utf8mb4
default_storage_engine=InnoDB

########log settings########
log_error = /home/ocean/workspace/mysql/mysql-data/3307/error.log
slow_query_log = 1               #开启慢查询日志
slow_query_log_file = /home/ocean/workspace/mysql/mysql-data/3307/slow.log   #指定日志文件存放文件
long_query_time = 2                #慢查询日志超时时间
# log_queries_not_using_indexes = 0  #未使用索引的查询不被记录到慢查询日志中
log_slow_admin_statements = 1     #记录那些慢的optimize table,analyze table和alter table语句
log_slow_slave_statements = 1    #记录由Slave所产生的慢查询
#log_throttle_queries_not_using_indexes = 10
# min_examined_row_limit = 1000       #记录那些由于查找了多余1000次而引发的慢查询

general_log = 0                 # 不开启通用日志
general_log_file=/home/ocean/workspace/mysql/mysql-data/3307/general.log


log_bin=/home/ocean/workspace/mysql/mysql-data/3307/binlog/binlog
max_binlog_size = 500M   #超过500
sync_binlog=5    # 每隔5次将binlog刷到磁盘满上去

#expire_logs_days = 30            # 日志30天过期
log_output = FILE

3、初始化MYSQL实例并且启动

$ /usr/local/mysql/bin/mysqld --initialize --user=mysql  
【注意参数顺序,否则初始化时会出现unknown variable 'defaults-file=/etc/my.cnf'的错误】
$ /usr/local/mysql/bin/mysql_ssl_rsa_setup
$ /usr/local/mysql/bin/mysqld_safe --defaults-file=/home/ocean/workspace/mysql/mysql-data/3307/my.cnf --user=mysql --port=3307 &  

4、登陆并修改密码

* mysql -uroot -S /home/ocean/workspace/mysql/mysql-data/3307/mysql.sock -p
* set password = '123456';
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值