什么是多实例?
在一台物理主机上运行多个数据库服务
为什么要用多实例
1)节约运维成本(一个物理主机可以搭建多个数据库)
2)提高硬件利用率(硬件只要支持就利用)
3)分担连接数量(通过端口连接)
##########################
安装软件
1)yum -y install libiao
2)useradd mysql
下载并解压:mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
3)mv mysql-5.7.20-linux-glibc2.12-x86_64 /usr/local/mysql
4)PATH=/usr/local/mysql/bin:$PATH //定义PATH的值(为了使用命令方便)
5)vim /etc/bashrc //设置为别名(为了以后使用方便)
export PATH=/usr/local/mysql/bin:$PATH
编辑主配置文件/etc/my.cnf
]# vim /etc/my.cnf
[mysqld_multi] //启用多实例
mysqld = /usr/local/mysql/bin/mysqld_safe //指定进程文件路径
mysqladmin = /usr/local/mysql/bin/mysqladmin //指定管理命令路径
user = root //指定进程用户
[mysqld1] //实例进程名称
port=3307 //端口号
datadir=/dir1 //数据库目录 ,要手动创建
socket=/dir1/mysqld1.sock //指定sock文件的路径和名称
pid-file=/dir1/mysqld1.pid //进程pid号文件位置
log-error=/dir1/mysqld1.err //错误日志位置
[mysqld2]
port=3308
datadir=/dir2
socket=/dir2/mysqld2.sock
pid-file=/dir2/mysqld2.pid
log-error=/dir2/mysqld2.err
:wq
创建数据库目录
]# mkdir /dir2 ]# mkdir /dir1
启动多实例
]# mysqld_multi start 1 //启动实例1 Installing new database in /dir1 2019-06-13T10:46:31.606321Z 1 [Note] A temporary password is generated for root@localhost: ly#LryiFE5fT 管理员本机登录密码
ls /dir1 //查看数据库目录文件列表
auto.cnf ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 ibtmp1 mysql mysql3307.log mysql3307.pid mysql3307.sock mysql3307.sock.lock performance_schema sys
mysqld_multi start 2
//启动实例2
Installing new database in /dir2
2019-06-13T10:56:57.724677Z 1 [Note] A temporary password is generated for root@localhost: qedTjrZs*8ma 管理员本机登录密码
ls /dir2 //查看数据库目录文件列表
auto.cnf ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 ibtmp1 mysql mysql3308.log mysql3308.pid mysql3308.sock mysql3308.sock.lock performance_schema sys
查看端口
]# netstat -utnlp | grep :3307
tcp6 0 0 :::3307 :::* LISTEN 1151/mysqld
]# netstat -utnlp | grep :3308
tcp6 0 0 :::3308 :::* LISTEN 1339/mysqld
]# netstat -utnlp | grep mysqld
tcp6 0 0 :::3307 :::* LISTEN 1151/mysqld
tcp6 0 0 :::3308 :::* LISTEN 1339/mysqld
# ps -C mysqld
PID TTY TIME CMD
1151 pts/1 00:00:00 mysqld
1339 pts/1 00:00:00 mysqld
访问多实例