一,MySQL 多实例的作用的问题
1,有效利用服务器的资源
当单个服务器资源有剩余的时候,可以充分利用剩余的资源以提供更多的服务
2,节约服务器的资源
当公司资源紧张,但是数据库各自需要独立提供服务,而且需要主从同步等技术时候,此时使用多实例是最好的。
3,资源互相抢占的问题
当某个服务实例并发很高或者有慢查询的时候,整个实例会消耗更多的CPU,内存,磁盘IO资源,导致服务器上其他的实例提供的服务质量大大下降,相当于一个大房子,多个卧室,大家共用一个卫生间,早餐起床,一个人上厕所,长期占用,其他人要等待一样的道理。
二、Mysql 多实例的应用场景
1,资源紧张型的公司
业务量不大,不想花钱,又有多需求,所以特别适合多实例
2,并发访问不是特别大的网站
当公司业务量不大的适合,服务器资源没有充分利用,有浪费的时候,就可以使用多实例
3,百度搜索引擎就使用了多实例 ,sina 网也使用了多实例
目的,节约IDC空间,资源充分利用
sina的配置 SATA 15000转 4块做raid5 48G内存
三、MySQL多实例的配置方案
方案一:如下图 推荐使用此
这种方式的优势逻辑简单,配置简单,耦合度低
缺点是管理起来不太方便。
方案二:单一的部署方案 不推荐,耦合性太高
[mysqld_muti]
即一个配置文件 启动多个实例
四、开始配置MySQL多实例
环境介绍:
mysql 版本:5.6.27
操作系统:CentOS 6.5
mysql实例数:2个
实例占用端口分别为:3306、3307
先配置方案一:
1.下载:在官网上下载
2.解压
tar xvf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz
3.移动到/usr/local/mysql
mv mysql-5.6.27-linux-glibc2.5-x86_64 mysql
4.安装依赖的lib包:
centos:yum install libaio -y
5、配置用户,目录
shell> groupadd mysql
shell> useradd -r -g mysql mysql
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
6、使用/data/目录作为MySQL多实例的总目录
mkdir -p /data/{3306,3307}/data
7、开始配置多实例的配置文件
vim /data/3306/my.cnf
[mysqld]
#general
basedir = /usr/local/mysql
datadir = /data/3306/data
socket = /data/3306/mysql.sock
user = mysql
port = 3306
server_id = 1
log-error = /data/3306/err.log
pid = /data/3306/mysql.pid
#binlog
log-bin = /data/3306/mysql-bin
sync-binlog = 1
#InnoDB
innodb_flush_log_at_trx_commit
innodb_support_xa = 1
#other
character_set_server = utf8
default_storage_engine =InnoDB
ft_min_word_len = 1
open_files_limit = 65535
auto-increment-increment = 10
auto-increment-offset = 1
log_slave_updates=1 允许备库将其重放的事件也记录到自身的二进制日志中
read_only=0 阻止任何没有特权权限的线程修改数据
skip_slave_start
[client]
socket = /data/3306/mysql.sock
port = 3306
vim /data/3307/my.cnf
[mysqld]
#general
basedir = /usr/local/mysql
datadir = /data/3307/data
socket = /data/3307/mysql.sock
user = mysql
port = 3307
server_id = 1
log-error = /data/3307/err.log
pid = /data/3307/mysql.pid
#binlog
log-bin = /data/3307/mysql-bin
sync-binlog = 1
#InnoDB
innodb_flush_log_at_trx_commit
innodb_support_xa = 1
#other
character_set_server = utf8
default_storage_engine =InnoDB
ft_min_word_len = 1
open_files_limit = 65535
auto-increment-increment = 10
auto-increment-offset = 1
log_slave_updates=1 允许备库将其重放的事件也记录到自身的二进制日志中
read_only=0 阻止任何没有特权权限的线程修改数据
skip_slave_start
[client]
socket = /data/3307/mysql.sock
port = 3307
8、创建多实例的启动文件 。
放到/data/3306 | /data/3307 下
脚本省略(mysqld)