mysql多实例(三种方法)

mysql多实例(三种方法)目录 一 概述 二 第一种 1 配置 2 启动服务 3 停止服务 4 加入 mysql 命令路径到 PATH 变量 三 第二种 1 解压 MySQL 安装包 2 在 mysql 目录下创建 data 目录 3 在 data 目录下创建二个实例的主目录 4 添加 mysql 组和 mysql 组用户 5 初始化四个实例 分别执行 6

大家好,我是讯享网,很高兴认识大家。

目录

一.概述

二.第一种

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.Z 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/ ~]# chown mysql:mysql /data/mysql2 # 初始化数据目录 ~]# 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 -uroot -p -S /data/mysql2/mysql.sock # 先登录数据库,然后先创建好用户 # 打上链接不然会报错 ~]# ln -s /data/mysql2/mysql.sock /tmp/mysql.sock

注:测试的时候-P选项一定要带上-h否则你就会发现-P任意数都可以

小讯
上一篇 2025-04-09 13:15
下一篇 2025-02-22 13:10

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/30258.html