多实例概述
mysql多实例其实就是在同一台服务器上开启不同的端口,运行多个msyql服务进程,通过不同的socket来监听不同的服务端口,提供不同的服务
多实例部署
多实例部署时通过配置文件的相互隔离来实现的
1、先安装MySQL常用的依赖包,并下载所需MySQL对应版本安装包下面准备的是5.7.27二进制的包
yum install -y libaio libnuma* perl
2、解压、创建mysql用户、数据目录
# tar xf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ # ln -s mysql-5.7.27-linux-glibc2.12-x86_64/ mysql 创建mysql组和用户 groupadd mysql useradd -r -g mysql mysql 创建mysq数据目录 mkdir -p /mysql/{3306,3307}/data chown -R mysql.mysql /mysql
3、准备相应的MySQL配置文件
vim /mysql/3306/my.cnf
[mysqld] bind-address=0.0.0.0 port=3306 user=mysql basedir=/usr/local/mysql datadir=/mysql/3306/data socket=/mysql/3306/mysql.sock log-error=/mysql/3306/mysql.err pid-file=/mysql/3306/mysql.pid slow_query_log = ON slow_query_log_file = /mysql/3306/slow.log long_query_time = 1 #character config character_set_server=utf8mb4 symbolic-links=0
cp /mysql/3306/my.cnf /mysql/3307/
sed -i 's/3306/3307/g' /mysql/3307/my.cnf
4、初始化数据库
/usr/localmysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/3306/data --initialize /usr/localmysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/3307/data --initialize
初始化之后数据库root账号密码会直接输出到终端显示,记录mysql.err日志中 也可查看
由于初始化时未指定配置文件,所以在mysql.err没有生成 可手动创建一下,注意之后要重新授权,否则会启动失败
5、启动多实例
/usr/local/mysql/bin/mysqld_safe --defaults-file=/mysql/3306/my.cnf & /usr/local/mysql/bin/mysqld_safe --defaults-file=/mysql/3307/my.cnf &
6、连接实例
mysql -uroot -p -S /mysql/3306/mysql.sock
7、停止实例
mysqladmin -S /mysql/3306/mysql.sock -uroot -p123123 shutdown