目录

一.概述

二.第一种

1.配置

2.启动服务

3.停止服务

4.加入mysql命令路径到PATH变量

三.第二种

1.解压MySQL安装包

2.在mysql目录下创建data目录

3.在data目录下创建二个实例的主目录

4.添加mysql组和mysql组用户

5.初始化四个实例,分别执行

6.为四个实例创建主配置文件my.cnf

7.启动实例

8.修改数据库密码和赋予远程登录权限

四.第三种


一.概述

  • 在一台物理主机上运行多个数据库服务

  • 节约运维成本

  • 提高硬件利用率

  • 多实例配置,需要专用的、支持多实例的Mysql软件。这里对应的软件包是mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

二.第一种

1.配置

  • 配置一台为多实例数据库服务器,如果已安装mysql,则停止其服务,或将其卸载

# 卸载方法
~]# yum list installed | grep mysql
~]# yum remove -y mysql-community-server
  • 不能存在/etc/my.cnf文件,如果有此文件则移走它

  • 直接解压多实例Mysql软件包

~]# tar -xf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
~]# mv mysql-5.7.34-linux-glibc2.12-x86_64  /usr/local/mysql
  • 编写配置文件

~]# vim /etc/my.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = root
​
[mysqld1]
datadir = /mysqlmul/mysqld1
port = 3306
log-error = /mysqlmul/mysqld1/mysqld1.err
pid-file = /mysqlmul/mysqld1/mysqld1.pid
socket = /mysqlmul/mysqld1/mysqld1.sock
​
[mysqld2]
datadir = /mysqlmul/mysqld2
port = 3307
log-error = /mysqlmul/mysqld2/mysqld2.err
pid-file = /mysqlmul/mysqld2/mysqld2.pid
socket = /mysqlmul/mysqld2/mysqld2.sock
  • 创建工作目录

[root@mysql1 ~]# mkdir -p /mysqlmul/mysqld{1,2}

2.启动服务

  • 启动第1个实例

~]# export PATH=/usr/local/mysql/bin:$PAT
~]# /usr/local/mysql/bin/mysqld_multi start 1
# 静候启动完成,记录最后一行产生的密码
2021-04-10T03:17:28.637290Z 1 [Note] A temporary password is generated for root@localhost: ,N1j!G1(M/L.
​
# 通过本机socket连接数据库并修改密码
[root@mysql1 ~]# mysql -uroot -p',N1j!G1(M/L.' -S /mysqlmul/mysqld1/mysqld1.sock
mysql> alter user root@'localhost' identified by 'mysql_P@s5';
Query OK, 0 rows affected (0.00 sec)
​
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
  • 启动第2个实例

[root@mysql1 ~]# /usr/local/mysql/bin/mysqld_multi start 2
# 静候启动完成,记录最后一行产生的密码
2021-04-10T03:28:42.084264Z 1 [Note] A temporary password is generated for root@localhost: &c/ag7j()41A
​
# 通过socket连接并修改密码
[root@mysql1 ~]# mysqladmin -uroot -p'&c/ag7j()41A' -S /mysqlmul/mysqld2/mysqld2.sock password 'mysql_P@s5'
​
# 通过网络连接
[root@mysql1 ~]# mysql -h127.0.0.1 -uroot -pmysql_P@s5 -P3307

3.停止服务

[root@mysql1 ~]# /usr/local/mysql/bin/mysqld_multi --user root --password mysql_P@s5 stop 1

4.加入mysql命令路径到PATH变量

# 临时增加
[root@mysql1 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@mysql1 ~]# export PATH=$PATH:/usr/local/mysql/bin
[root@mysql1 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
​
# 永久修改PATH环境变量
[root@mysql1 ~]# vim .bash_profile   # 在下方添加
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
export PATH
[root@mysql1 ~]# source .bash_profile
​
# 停止实例2
[root@mysql1 ~]# mysqld_multi --user root --password mysql_P@s5 stop 2

三.第二种

安装部署 我这里以创建四个MySQL实例为例,监听的端口分别是3307,3308,3309,3310

1.解压MySQL安装包

地址:MySQL :: Download MySQL Community Server (Archived Versions)

~]# tar -zxvf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
# 移动并重命名
~]# mv mysql-5.7.34-linux-glibc2.12-x86_64 /usr/local/mysql

2.在mysql目录下创建data目录

~]# cd /usr/local/mysql
~]# mkdir data

3.在data目录下创建二个实例的主目录

~]# cd /usr/local/mysql/data/
~]# mkdir {3306,3307}

4.添加mysql组和mysql组用户

~]# groupadd mysql
~]# useradd -r -g mysql mysql

5.初始化四个实例,分别执行

~]# cd /usr/local/mysql/bin/
~]# ./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3306/ --user=mysql
~]# ./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3307/ --user=mysql

6.为四个实例创建主配置文件my.cnf

~]# cd /usr/local/mysql/data/3307
~]# vim my.cnf
# 主配置文件内容
​
[client]
port=3306
socket=/usr/local/mysql/data/3307/mysql.sock
default_character_set=utf8
​
[mysqld]
port=3306
socket=/usr/local/mysql/data/3307/mysql.sock
datadir=/usr/local/mysql/data/3307
log-error=/usr/local/mysql/data/3307/error.log
pid-file=/usr/local/mysql/data/3307/mysql.pid
character_set_server=utf8
lower_case_table_names=1
autocommit=1

替换不同实例配置文件中的目录名

只要在vi或vim编辑器中执行命令:%s/被替换的目录名/要替换的目录名/g 如:

注意:要在每个实例的主目录中为每个实例都创建主配置文件,且目录名要和实例端口号对应

7.启动实例

~]# cd /usr/local/mysql/bin/
~]# ./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf &
~]# ./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &

查看两个实例进程状态

~]# ps -ef | grep mysql

可以看到,端口的MySQL实例都启动成功

8.修改数据库密码和赋予远程登录权限

这里我以端口号为3307的实例为例,其他实例只需修改命令中的端口号就可以了

~]# cd /usr/local/mysql/bin/
~]# ./mysql -u用户名 -p -P端口 -h地址
​
~]# ./mysql -uroot -p -P3307 -h127.0.0.1
# 没有密码直接回车
​
# 执行命令修改密码
> alter user 'root'@'localhost' identified by '密码';
​
# 授予远程登录权限
> grant all privileges on *.* to root@'%' identified by '密码';

四.第三种

搭好的服务器添加多实例

注:这里是根据我的情况添加的多实例,最基本的就是直接创建一个数据目录--->初始化--->拷贝my.cnf文件--->修改内容--->启动放入后台,访问的时候要看自己的数据库是否有远程权限密码等,我这里配置文件有密码的但是没有远程权限,(如果没有在配置文件中写密码,可以远程就直接输入如:./mysql -usystem -p -P3307 -h127.0.0.1-->直接回车-->修改密码)

# 先创建一个存放示例的地方
~]# mkdir -p /data/mysql2/data/
# 初始化数据目录
~]# cd /usr/local/mysql/bin/
~]# ./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/mysql2/data --user=mysql
# 复制主配置文件内容
~]# cp /etc/my.cnf /etc/my2.cnf
# 修改里面的端口,id,数据目录等等,对应刚刚创建的目录的
# 启动放入后台
~]# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my2.cnf --basedir=/usr/local/mysql --datadir=/data/mysql2/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql2/error.log --open-files-limit=65535 --pid-file=mysqldb2.pid --socket=/data/mysql2/mysql.sock --port=3307 &
# 查看与关闭
~]# ps -ef | grep mysql | grep -E '3306|3307'
~]# kill [id号]
# 测试登录
~]# cd /usr/local/mysql/bin/
~]# ./mysql -usystem -pmysql_P@s5 -P3306 -hlocalhost

mysql多实例(三种方法)相关推荐

  1. mysql 安装在路由器_MySQL如何安装?安装MySQL数据库的三种方法

    MySQL如何安装?安装MySQL数据库的三种方法 目录 安装MySQL的方式常见的有三种: rpm包形式 通用二进制形式 源码编译 1,rpm包形式 (1) 操作系统发行商提供的 (2) MySQL ...

  2. python 实现账号封禁30分钟---(Redis,Mysql,文件)三种方法

    下面写三种方法来实现,用户在规定时间内,输入次数上限,封禁账号的功能. 第一种:使用redis完成用户封禁状态 第二种:使用mysql 第三种:使用文件 1.封禁用户流程图  第一种方法: Redis ...

  3. mysql连接数据库的三种方法(连接池,jdbc,Hibernate)

    ------------------第一种-利用tomcat连接池连接数据库---------------------- 1.配置Tomcat.将需要使用的JDBC驱动jar包复制在Tomcat目录下 ...

  4. Python操纵Mysql数据库的三种方法,实现增删改查

    目录 这里使用的数据库是关系型数据库Mysql 一.首先,需要安装两个库 二.3种实现增删改查的方法 1.  使用原生语句进行增删改查 2. 使用表结构进行增删改查 3. 使用集成ORM类操纵数据库, ...

  5. 修改linux中mysql密码,Linux下修改Mysql密码的三种方法

    首先,我也是新手刚刚了解Linux系统,因为同事离职,所以就只能接手!然后员工离职肯定要改密码啦!废话不多说,下面我截图写一下流程! 我刚开始也是找教程,网上教程一大堆基本都是可行的! 修改Linux ...

  6. python连接数据库的技术_Python操作MySQL数据库的三种方法

    (1) 什么是MySQLdb? MySQLdb 是用于 Python 连接 MySQL 数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的. ...

  7. Python操作MySQL数据库的三种方法

    1. MySQLdb 的使用 (1) 什么是MySQLdb?   MySQLdb 是用于 Python 连接 MySQL 数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 M ...

  8. c 匹配mysql密码,MySQL设置密码的三种方法

    其设置密码有三种方法: a. ./mysqladmin -u root -p oldpassword newpasswd(记住这个命令是在/usr/local/mysql/bin中外部命令) b. S ...

  9. MySQL设置密码的三种方法

    其设置密码有三种方法: a. ./mysqladmin -u root -p oldpassword newpasswd(记住这个命令是在/usr/local/mysql/bin中外部命令) b. S ...

  10. mysql 删除的三种方法_mysql 删除表数据的三种方法

    先说那三个:drop.truncate.delete 1.drop 删除所有表结构和数据 drop table tableName: 2.truncate 删除表所有数据,不删除表结构,不能添加whe ...

最新文章

  1. 在线作图|如何绘制一张山脊图
  2. flask-blueprint的简单使用
  3. 成功解决Redirection is not supported
  4. 中国覆铜板(CCL)行业竞争现状及投资战略研究报告2021年版
  5. k8s灰度更新_k8s slb如何实现灰度发布-问答-阿里云开发者社区-阿里云
  6. android studio 解决gradle加载依赖慢的问题
  7. 这所高校的快递被机器人承包了,别人家的学校!
  8. 序列化与反序列化的简单认识
  9. 我的世界暮色森林java下载_我的世界暮色森林mod1.7.2下载-暮色森林整合包下载...
  10. 二、RabbitMQ常用交换器
  11. koa项目用mongoose与mongodb交互,始终报错FormModel is not defined
  12. dsoframer.ocx java_DSOFramer.ocx 控件使用
  13. 测试技术-易用性测试
  14. layui怎么设置select默认选中,修改回显
  15. 微服务4——服务的限流、熔断(Sentinel-三ti no)sca-comsumersca-provider
  16. 生成签名证书keystore
  17. 低成本DC/DC转换器34063的应用(图)
  18. USB开设备开发学习之三:USB中的端点详细了解
  19. python 中怎么把类似这样的‘\xe5\xae\x9d\xe9\xb8\xa1\xe5\xb8\x82‘转换成汉字输出
  20. JAVA名片注册_JavaWeb练习-网上名片管理系统

热门文章

  1. Java并发编程(5):volatile变量修饰符—意料之外的问题(含代码)
  2. Python-OpenCV 处理视频(三)(四)(五): 标记运动轨迹 运动检测 运动方向判断
  3. 理解Spark的核心RDD
  4. 【OpenCV3】棋盘格角点检测与绘制——cv::findChessboardCorners()与cv::drawChessboardCorners()详解
  5. HDU 1848 Fibonacci again and again(博弈)
  6. sparkStreaming 练习
  7. Linux shell if [ -n ] 正确使用方法
  8. ORACLE 数据迁移
  9. ActivePython2.7 +Firefly1.2.2+WIN7服务器搭建过程(已通过)
  10. json数据解析详解---代码每行进行分析