多实例概述
mysql多实例通俗的讲就是在一台机器上使用同一个mysql安装程序使用相同的硬件资源,运行多个mysql进程,这些进程有单独的进程号,端口,
存储空间以及配置文件,不会互相影响,他们各自有独立的配置文件(可以相同)启动程序(可以相同)。
多端口多进程,每个端口就是一个实例,各个进程之间没有关系,但他们又同用相同的硬件资源。
多实例优势
- 充分利用硬件资源,但单个服务器用剩余硬件资源时可以充分利用
- 节省服务器开销,多实例相当于从逻辑上把一台服务器变成了多台使用,常规讲一台服务器装一台数据库,多实例却装了多台.
多实例带来方便的同时也产生了相应的问题,由于多个实例安装在一台服务器上,归根结底还是使用了同样的硬件,当数据库负载大时会出现硬件资源抢占 ,某个实例高并发或者慢查询时,整个实例会消耗大量系统的CPU与磁盘I/O等资源,导致服务器上 的其他实例的服务质量下降,这就需要在安装多实例对服务器做好规划,读写实例分开安装,尽量平均负载. 而且,多个数据库共用一台服务器,服务器宕机 会影响这台服务器上的所有实例. 某种程度上降低了高可用,这就需要部署MHA支持.
多实例安装
多实例安装选用源码包安装,按照make,make install 的方式进行,不同的是在进行数据库初始化时为他指定单独的数据目录,以及配置文件即可.多实例数据库的启动关闭需要使用socket文件来定位到指定的数据库.
#系统版本
[root@MySql-5 ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@MySql-5 ~]# uname -ai
Linux db01 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@MySql-5 ~]#
[root@MySql-5 ~]# hostname -i
172.16.1.51
[root@MySql-5 ~]#
## Mysql 编译 ##
#使用cmack编译,安装cmack .直接yum安装即可
yum install cmake -y
#安装依赖包
yum install ncurses-devel -y
#mysql 进程用户
useradd mysql -s /sbin/nologin -M
下载mysql 5.5.49的源码包,可以直接到官网下载
#解压
tar zxf mysql-5.5.49.tar.gz -C /application
cd /application/mysql-5.5.49
#编译参数
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.49 -DMYSQL_DATADIR=/application/mysql-5.5.49/data -DMYSQL_UNIX_ADDR=/application/mysql-5.5.49/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1 -DWITH_FAST_MUTEXES=1 -DWITH_ZLIB=bundled -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DWITH_DEBUG=0
#编译过程中每一步都要使用echo $? 查看返回值,必须为0
ln -s /application/mysql-5.5.49/ /application/mysql
chown -R mysql.mysql /application/mysql/
echo "export PATH=/application/mysql/bin:$PATH" >>/etc/profile
source /etc/profile
Tables | Are |
---|---|
-DCMAKE_INSTALL_PREFIX | 安装目录 |
-DMYSQL_DATADIR | mysql数据文件目录 |
-DMYSQL_UNIX_ADDR | mysql.cock路径 |
-DDEFAULT_CHARSET | 默认字符集 |
-DDEFAULT_COLLATION | 默认排序规则 |
-DEXTRA_CHARSETS | 额外的字符集类型 |
-DENABLED_LOCAL_INFILE | 本地数据导入支持 |
-DWITH_INNOBASE_STORAGE_ENGINE | -DWITH_[ENGINE]_STORAGE_ENGINE |
=1启用某个引擎的支持 | |
=0关闭某个引擎的支持 | |
-DWITH_ZLIB | 启用libz库支持 |
-DWITH_READLINE | 启用readline 库的支持提供可供编辑的命令行 |
-DWITH_EMBEDDED_SERVER | 嵌入式服务支持 |
-DWITH_DEBUG | DEBUG设置,缺省是禁止 |
Mysql 多实例配置文件,启动程序
[root@MySql-5 ~]# tree /data
/data/
├── 3306 #实例3306的安装目录
│ ├── my.cnf #3306的配置文件
│ └── mysql #3306的启动程序
└── 3307 #实例3307的安装目录
├── my.cnf #3307的配置文件
└── mysql #3307的启动程序
多实例的配置文件和启动程序可以共用一个,但是并不推荐,多实例的server id 不能相同还有许多选项需要单独配置.
配置文件
配置文件的解释是在其他文章里面摘抄的, 文章如下:
http://www.jb51.net/article/48082.htm
http://www.jb51.ne