写点什么

Centos7 安装 MySql 5.7 多实例

作者:taony
  • 2021 年 12 月 29 日
  • 本文字数:2888 字

    阅读完需:约 9 分钟

Centos7 安装MySql 5.7多实例

Mysql 多实例即一台服务器上运行多个 Mysql 服务进程 ,开启不同的服务端口,通过不同的 socket 监听不同的服务端口来提供各自的服务。

1、 有效利用服务器资源:通过多实例地配置,可以将服务器剩余的资源充分利用起来。

2、 资源互相抢占问题:资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘 IO 资源,导致服务器上的其他实例提供服务的质量下降。

3、 节约资源。


1 安装前准备

服务器配置参数:

服务器版本:CentOS 7

数据库版本:mysql-5.7.35 https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz

//将/etc/selinux/config 里的 SELINUX 设置成:disabled


// 安装必要组件$> yum -y install make gcc-c++ cmake bison-devel ncurses-devellibaio libaio-devel
// 更新程序$> yum -y update
复制代码


2 安装 MYSQL

2.1 解压 Mysql 安装文件

// 解压安装文件$> tar -zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
// 复制/移动安装文件到指定目录$> mv mysql-5.7.19-linux-glibc2.12-x86_64 /usr/local/mysql
复制代码

2.2 创建 mysql 实例用户及文件

// 创建用户$> useradd mysql -r -s /sbin/nologin          
// 数据导入导出目录$> mkdir -p /usr/local/mysql/mysql_files
// 创建多实例数据目录:$> mkdir -p /data/mysql_data{1..3}
// 修改mysql目录的属组及用户:$> chown root.mysql -R /usr/local/mysql
// 修改专用目录的属主及属组:$> chown mysql.mysql -R /usr/local/mysql/mysql_files /data/mysql_data{1..3}
复制代码


2.3 配置 Mysql 的配置文件

使用 VIM 创建并编辑文件: /etc/my.cnf

[mysqld_multi]mysqld = /usr/local/mysql/bin/mysqldmysqladmin = /usr/local/mysql/bin/mysqladminlog = /tmp/mysql_multi.log
[mysqld1]datadir = /data/mysql_data1 #设置数据目录socket = /tmp/mysql.sock1 #设置sock文件存放路径port = 3306 #设置监听开放端口 user = mysql #设置运行用户performance_schema = off #关闭监控innodb_buffer_pool_size = 32M #设置innodb 缓存大小bind_address = 0.0.0.0 #设置监听IP地址skip-name-resolve = 0 #关闭DNS反向解析
[mysqld2]datadir = /data/mysql_data2socket = /tmp/mysql.sock2port = 3307user = mysqlperformance_schema = offinnodb_buffer_pool_size = 32Mbind_address = 0.0.0.0skip-name-resolve = 0
[mysqld3]datadir = /data/mysql_data3socket = /tmp/mysql.sock3port = 3308user = mysqlperformance_schema = offinnodb_buffer_pool_size = 32Mbind_address = 0.0.0.0skip-name-resolve = 0
复制代码


2.4 初始化各个数据库实例


特别注意:初始化完后会在日志中生成密码,记得保存,一会要用。


// 实例1$> /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data1
// 实例2$> /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data2
// 实例3$> /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data3
复制代码

2.5 开启各实例的 SSL 连接

$> /usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data1
$> /usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data2
$> /usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data3
复制代码

2.6 复制多实例脚本到服务管理目录下

$> cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi
复制代码

2.7 给予脚本可执行权限:

$> chmod +x /etc/init.d/mysqld_multi
复制代码

2.8 加入 service 服务管理:

$> chkconfig --add mysqld_multi
复制代码

2.9 添加环境变量

在文件最后面添加内容:sudo vim /etc/profile

## SETUP MYSQL’S PATH
export MYSQL_HOME=/usr/local/mysqlexport PATH=PATH
复制代码

完成后,使修改的配置文件生效:source /etc/profile


3 测试 MYSQL

3.1 查看实例状态

查看多个实例状态:mysqld_multi report

[root@localhost tmp]# mysqld_multi reportReporting MySQL serversMySQL server from group: mysqld1 is runningMySQL server from group: mysqld2 is runningMySQL server from group: mysqld3 is running
复制代码

3.2 启动实例

$> mysqld_multi start
复制代码

3.3 查看实例监听

$> ss -tulpn|grep mysqld

[root@localhost tmp]# ss -tulpn|grep mysqldtcp LISTEN 0 80 *:3306 *:* users:(("mysqld",pid=5437,fd=20))tcp LISTEN 0 80 *:3307 *:* users:(("mysqld",pid=5440,fd=20))tcp LISTEN 0 80 *:3308 *:* users:(("mysqld",pid=5443,fd=20))
复制代码


3.4 查看实例监听

// $> mysql -S /tmp/mysql.sock1 -p前面生成的密码// 进去后修改root密码: $> set password=password('123456');// 使修改生效$> flush privileges;
//设置远程连接$> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;$> flush privileges;
复制代码

其他注意事项:

打开防火墙,开放 mysql 相关端口


4 开机自动启动

4.1 编写启动脚本


编写启动脚本,执行命令:vi /etc/rc.d/mysqld_multi_start.sh

#!/bin/bashexport PATH="$PATH":/usr/local/mysql/binmysqld_multi start
复制代码

修改权限:

该脚本标记为可执行文件(添加可执行的权限);

chmod +x /etc/rc.d/mysqld_multi_start.sh


然后将/etc/rc.d/rc.local 文件标记为可执行的文件;

chmod +x /etc/rc.d/rc.local


4.2 修改/etc/rc.d/rc.local 文件

修改 rc.local ,增加启动脚本:vi /etc/rc.d/rc.local

#!/bin/bash# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES## It is highly advisable to create own systemd services or udev rules# to run scripts during boot instead of using this file.## In contrast to previous versions due to parallel execution during boot# this script will NOT be run after all other services.## Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure# that this script will be executed during boot.
touch /var/lock/subsys/local
/etc/rc.d/mysqld_multi_start.sh
复制代码

4.3 重启服务器,验证状态


执行reboot命令,重启服务器,然后执行 mysqld_multi report 查看服务状态。

[root@localhost ~]# mysqld_multi reportReporting MySQL serversMySQL server from group: mysqld1 is runningMySQL server from group: mysqld2 is runningMySQL server from group: mysqld3 is running
复制代码


用户头像

taony

关注

不说硬话,不做软事。 2018.09.04 加入

还未添加个人简介

评论

发布
暂无评论
Centos7 安装MySql 5.7多实例