目录
一.概述
二.第一种
1.配置
2.启动服务
3.停止服务
4.加入mysql命令路径到PATH变量
三.第二种
1.解压MySQL安装包
2.在mysql目录下创建data目录
3.在data目录下创建二个实例的主目录
4.添加mysql组和mysql组用户
5.初始化四个实例,分别执行
6.为四个实例创建主配置文件myf
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/myf文件,如果有此文件则移走它
-
直接解压多实例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/myf
[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.为四个实例创建主配置文件myf
~]# cd /usr/local/mysql/data/3307
~]# vim myf
# 主配置文件内容
[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/myf &
~]# ./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/myf &
查看两个实例进程状态
~]# 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 '密码';
四.第三种
搭好的服务器添加多实例
注:这里是根据我的情况添加的多实例,最基本的就是直接创建一个数据目录--->初始化--->拷贝myf文件--->修改内容--->启动放入后台,访问的时候要看自己的数据库是否有远程权限密码等,我这里配置文件有密码的但是没有远程权限,(如果没有在配置文件中写密码,可以远程就直接输入如:./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/myf /etc/my2f
# 修改里面的端口,id,数据目录等等,对应刚刚创建的目录的
# 启动放入后台
~]# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my2f --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任意数都可以
更多推荐
mysql多实例(三种方法)
发布评论