MySQL多实例安装

一、环境

基于Centos7.4

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)

系统配置

关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
关闭selinux
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/selinux/config
SELINUX=disabled

二、下载软件包

网址:http://mirrors.163.com/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@localhost ~]# wget -c http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz

三、创建用户和组

[root@localhost ~]# groupadd mysql -r -g 306
[root@localhost ~]# useradd -r -g mysql -s /bin/false -u 306 mysql

四、解压、创建软链接

解压
[root@localhost ~]# tar xf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C  /usr/local/
创建软链接
[root@localhost ~]# ln -sv /usr/local/mysql-5.7.37-linux-glibc2.12-x86_64/  /usr/local/mysql
‘/usr/local/mysql’ -> ‘/usr/local/mysql-5.7.37-linux-glibc2.12-x86_64/’

五、准备数据目录

[root@localhost ~]# mkdir -p /data/330{6..8}/data
[root@localhost ~]# tree /data
/data
├── 3306
│   └── data
├── 3307
│   └── data
└── 3308
    └── data

方法一、每一MySQL多实例的配置文件

[root@localhost ~]# vim /data/3306/my.cnf
编辑内容:
[client]
port = 3306
socket = /data/3306/mysql.sock

[mysqld]
user = mysql
port = 3306
socket = /data/3306/mysql.sock
basedir = /usr/local/mysql
datadir = /data/3306/data
server-id = 3306

[mysqldump]
quick
max_allowed_packet = 16M

[mysqld_safe]
log-error=/data/3306/mysql_3306.err
pid-file=/data/3306/mysqld.pid
将/data/3306/my.cnf分别复制到/data/3307/my.cnf、/data/3308/my.cnf
[root@localhost ~]# cp /data/3306/my.cnf /data/3307/my.cnf
[root@localhost ~]# cp /data/3306/my.cnf /data/3308/my.cnf
分别修改/data/3307/my.cnf和/data/3308/my.cnf文件内容
[root@localhost ~]# sed 's/3306/3307/g' /data/3307/my.cnf
[client] 
port = 3307 
socket = /data/3307/mysql.sock 

[mysqld] 
user = mysql 
port = 3307 
socket = /data/3307/mysql.sock 
basedir = /usr/local/mysql 
datadir = /data/3307/data 
server-id = 3307 

[mysqldump] 
quick 
max_allowed_packet = 16M 

[mysqld_safe] 
log-error=/data/3307/mysql_3307.err 
pid-file=/data/3307/mysqld.pid
[root@localhost ~]# sed -i 's/3306/3307/g' /data/3307/my.cnf
[root@localhost ~]# sed -i 's/3306/3308/g' /data/3308/my.cnf

修改文件权限

[root@localhost ~]# chown -R mysql.mysql /data/330{6..8}
[root@localhost ~]# find /data/330{6..8} -name mysqld

配置环境变量

[root@localhost ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin' > /etc/profile.d/mysql.sh
立即生效
[root@localhost ~]# source /etc/profile.d/mysql.sh

初始化多实例

[root@localhost ~]# mysqld --initialize --datadir=/data/3306/data --basedir=/usr/local/mysql --user=mysql
 aVQ.WIsio7/h
[root@localhost ~]# mysqld --initialize --datadir=/data/3307/data --basedir=/usr/local/mysql --user=mysql
CmFfeqjiZ3;R
[root@localhost ~]# mysqld --initialize --datadir=/data/3308/data --basedir=/usr/local/mysql --user=mysql
Gd#:ykQ:h9ZB

MySQL启动多实例

若直接启动会报错(没有错误日志)
在这之前先创建相应的错误日志

[root@localhost ~]# touch /data/3306/mysql_3306.err /data/3307/mysql_3307.err /data/3308/mysql_3308.err
[root@localhost ~]# chown mysql.mysql /data/3306/mysql_3306.err /data/3307/mysql_3307.err /data/3308/mysql_3308.err
启动多实例
[root@localhost ~]# mysqld_safe --defaults-file=/data/3306/my.cnf &
[root@localhost ~]# mysqld_safe --defaults-file=/data/3307/my.cnf &
[root@localhost ~]# mysqld_safe --defaults-file=/data/3308/my.cnf &
查看相关进程
[root@localhost ~]# netstat -lnpt | grep 330
tcp6       0      0 :::3307                 :::*                    LISTEN      21382/mysqld        
tcp6       0      0 :::3308                 :::*                    LISTEN      21572/mysqld        
tcp6       0      0 :::3306                 :::*                    LISTEN      21192/mysqld 

登录

[root@localhost ~]# mysql -uroot -p -S /data/3306/mysql.sock
修改密码
[root@localhost ~]# mysqladmin -uroot -p'aVQ.WIsio7/h' password 'MySQL@123' -S /data/3306/mysql.sock
[root@localhost ~]# mysqladmin -uroot -p'CmFfeqjiZ3;R' password 'MySQL@123' -S /data/3307/mysql.sock
[root@localhost ~]# mysqladmin -uroot -p'Gd#:ykQ:h9ZB' password 'MySQL@123' -S /data/3308/mysql.sock

方法二、使用官方mysqld_multi

使用同一个配置文件

1.创建多实例配置文件

查看帮助

[root@localhost ~]# mysqld_multi --example

编辑配置文件

mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = multi_admin
pass       = MySQL@123

[mysqld3306]
socket     = /data/3306/mysql.sock
port       = 3306
pid-file   = /data/3306/mysqld.pid
datadir    = /data/3306/data
log-error  = /data/3306/mysql_3306.err

[mysqld3307]
socket     = /data/3307/mysql.sock
port       = 3307
pid-file   = /data/3307/mysqld.pid
datadir    = /data/3307/data
log-error  = /data/3307/mysql_3307.err

[mysqld3308]
socket     = /data/3308/mysql.sock
port       = 3308
pid-file   = /data/3308/mysqld.pid
datadir    = /data/3308/data
!includedir /etc/my.cnf.d
log-error  = /data/3308/mysql_3308.err

2.修改MySQL多实例文件权限

[root@localhost ~]# chown -R mysql.mysql /data/330{6..8}

3.配置MySQL 环境变量

[root@localhost ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin' > /etc/profile.d/mysql.sh
立即生效
[root@localhost ~]# source /etc/profile.d/mysql.sh

4.初始化多实例

[root@localhost ~]# mysqld --initialize --datadir=/data/3306/data --basedir=/usr/local/mysql --user=mysql
 aVQ.WIsio7/h
[root@localhost ~]# mysqld --initialize --datadir=/data/3307/data --basedir=/usr/local/mysql --user=mysql
CmFfeqjiZ3;R
[root@localhost ~]# mysqld --initialize --datadir=/data/3308/data --basedir=/usr/local/mysql --user=mysql
Gd#:ykQ:h9ZB

5.启动多实例

[root@localhost ~]# mysqld_multi start 3307
[root@localhost ~]# netlnp -lnupt | grep mysqld
-bash: netlnp: command not found
[root@localhost ~]# netstat -lnupt | grep mysqld
tcp6       0      0 :::3307                 :::*                    LISTEN      21903/mysqld  
[root@localhost ~]# mysqld_multi start 3306-3308
[root@localhost ~]# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is running
MySQL server from group: mysqld3308 is running

6.授权用户

授权用户可以查看帮助文档

[root@localhost ~]# mysql -uroot -p'MySQL@123' -S /data/3306/mysql.sock -e "GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'MySQL@123'"
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost ~]# mysql -uroot -p'MySQL@123' -S /data/3307/mysql.sock -e "GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'MySQL@123'"
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost ~]# mysql -uroot -p'MySQL@123' -S /data/3308/mysql.sock -e "GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'MySQL@123'"

7.登录多实例

[root@localhost ~]# mysql -uroot -p'MySQL@123' -S /data/3306/mysql.sock

8.停止多实例

[root@localhost ~]# mysqld_multi stop 3306,3308
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值