centos 7 部署两个 mysql 8.0.31(非常详细)

本文在一台 centos 7 机器上同时部署了两个 mysql 实例,其端口号分别为:3306、3307! 

废话不多说,开干!!!

一、前期准备工作

1、mysql-boost-8.0.31.tar.gz 源码下载

        下载地址:https://dev.mysql.com 

2、配置阿里云镜像源

cd /etc/yum.repos.d 
vi scl.repo 
 
# scl.repo文件内容如下:
 
[scl] 
name=CentOS-7 - SCLo sclo 
baseurl=http://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/ 
gpgcheck=0 
enabled=1 

3、安装 gcc、cmake、Boost C++库、ncurses库、OpenSSL库 

  注意:需要cmake3,gcc-5.3以上;

  安装命令如下:

yum install devtoolset-7-gcc devtoolset-7-gcc-c++ 
source /opt/rh/devtoolset-7/enable 
gcc -v   //查看gcc版本
 
yum install epel* 
yum clean all 
yum makecache 
yum install cmake3 ncurses ncurses-devel bison openssl*

二、部署准备

1、将 mysql-boost-8.0.31.tar.gz,传输到 /usr/local/ 目录下,并进行解压

tar zxvf mysql-boost-8.0.31.tar.gz

2、在  /usr/local/ 目录下创建多个 mysql 安装目录

# 端口号为 3306 的 mysql 安装目录
mkdir mysql3306

# 端口号为 3307 的 mysql 安装目录
mkdir mysql3307

3、 进入到 cd mysql-8.0.31 目录下,创建 3306、3307 的编译目录

cd mysql-8.0.31

mkdir bld3306

mkdir bld3307

4、创建用户名和组

//创建第一个mysql的用户名和组
groupadd mysql3306
useradd -r -g mysql3306 -M -s /bin/false mysql3306


//创建第二个mysql的用户名和组
groupadd mysql3307
useradd -r -g mysql3307 -M -s /bin/false mysql3307

三、部署第一个 mysql --- 3306

1、编译第一个 MySQL 实例

cd bld3306

# -DMYSQL_TCP_PORT=3306 为指定端口号
# /usr/local/mysql3306 为 mysql3306 安装目录
cmake3 -DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DCMAKE_INSTALL_PREFIX=/usr/local/mysql3306 -DWITH_BOOST=../boost ..

make -j4

2、安装第一个 MySQL 实例

make install

3、配置第一个 MySQL 配置文件

vim /etc/my3306.cnf

# 文件内容如下


[client] 
socket=/usr/local/mysql3306/data/mysql.sock 
 
[mysqld] 
datadir=/usr/local/mysql3306/data 
socket=/usr/local/mysql3306/data/mysql.sock 
 
#Disabling symbolic-links is recommended to prevent assorted security risks 
symbolic-links=0 
log-error=/usr/local/mysql3306/data/mysqld.log 
pid-file=/usr/local/mysql3306/data/mysqld.pid 
server-id=1
port=3306

#是否只读,1代表只读,0代表读写
read-only=0

#忽略的数据,指不需要同步的数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01

4、初始化第一个 MySQL 实例

# 进入安装目录
cd /usr/local/mysql3306

# 初始化
bin/mysqld --defaults-file=/etc/my3306.cnf --initialize --user=mysql3306 --port=3306

 5、启动第一个 MySQL 实例

/usr/local/mysql3306/bin/mysqld_safe --defaults-file=/etc/my3306.cnf --user=mysql3306 --port=3306 &

特别说明1:在启动 mysql 时一定要显示指定配置文件,即 --defaults-file=/etc/my3306.cnf ,否则会报各种错误!!!

6、设置第一个 MySQL 实例的 root 密码

# 执行下述命令并使用初始密码进入 mysql
/usr/local/mysql3306/bin/mysql -h127.0.0.1 -uroot -p -P3306


ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

特别说明2:在进入 mysql 时一定要写完整的命令,即 /usr/local/mysql3306/bin/mysql -h127.0.0.1 -uroot -p -P3306 否则无法启动多个实例,特别重要!特别重要!特别重要!如果不指定 h127.0.0.1 ,在进入 mysql 时会默认使用 mysql.sock 进入,如此一来,多个实例进入的实际上是一个 mysql !!!

7、完成第一个 MySQL 实例部署

四、部署第二个 mysql --- 3307

1、编译第二个 MySQL 实例

cd bld3307

# -DMYSQL_TCP_PORT=3307 为指定端口号
# /usr/local/mysql3307 为 mysql3307 安装目录
cmake3 -DMYSQL_TCP_PORT=3307 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DCMAKE_INSTALL_PREFIX=/usr/local/mysql3307 -DWITH_BOOST=../boost ..

make -j4

2、安装第二个 MySQL 实例

make install

3、配置第二个 MySQL 配置文件

vim /etc/my3307.cnf

# 文件内容如下


[client] 
socket=/usr/local/mysql3307/data/mysql.sock 
 
[mysqld] 
datadir=/usr/local/mysql3307/data 
socket=/usr/local/mysql3307/data/mysql.sock 
 
#Disabling symbolic-links is recommended to prevent assorted security risks 
symbolic-links=0 
log-error=/usr/local/mysql3307/data/mysqld.log 
pid-file=/usr/local/mysql3307/data/mysqld.pid 
server-id=2
port=3307

#是否只读,1代表只读,0代表读写
read-only=0

#忽略的数据,指不需要同步的数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01

4、初始化第二个 MySQL 实例

# 进入安装目录
cd /usr/local/mysql3307

# 初始化
/usr/local/mysql3307/bin/mysqld --defaults-file=/etc/my3307.cnf --initialize --user=mysql3307 --port=3307

5、启动第二个 MySQL 实例

/usr/local/mysql3307/bin/mysqld_safe --defaults-file=/etc/my3307.cnf --user=mysql3307 --port=3307 &

特别说明3:在启动 mysql 时一定要显示指定配置文件,即 --defaults-file=/etc/my3306.cnf ,否则会报各种错误!!! 

6、设置第二个 MySQL 实例的 root 密码

# 执行下述命令并使用初始密码进入 mysql
/usr/local/mysql3307/bin/mysql -h127.0.0.1 -uroot -p -P3307


ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

特别说明2:在进入 mysql 时一定要写完整的命令,即 /usr/local/mysql3306/bin/mysql -h127.0.0.1 -uroot -p -P3306 否则无法启动多个实例,特别重要!特别重要!特别重要!如果不指定 h127.0.0.1 ,在进入 mysql 时会默认使用 mysql.sock 进入,如此一来,多个实例进入的实际上是一个 mysql !!! 

说明:登陆 mysql 时指定 ip 和不指定 ip 的区别?

(1)指定IP(-h127.0.0.1)的情况下:

  • 使用了 -h 参数来指定要连接的主机地址,这里是 127.0.0.1,也就是本地回环地址(localhost)。

  • 这意味着您会直接连接到位于本地机器上的 MySQL 数据库实例,无论是否有其他网络配置或中间件,您都将连接到指定的 IP 地址。

(2)不指定IP 的情况下:

  • 如果不使用 -h 参数指定主机地址,MySQL 客户端会默认尝试连接到本地主机。

  • 这可能会导致在具有多个网络接口或中间件配置的情况下,MySQL 客户端可能会尝试通过默认网络接口连接到 MySQL 服务器。这可能会导致您连接到错误的 MySQL 实例或出现连接问题,特别是在有多个实例运行的情况下。

因此,建议在使用命令行连接 MySQL 时,根据需要明确指定要连接的主机地址,以确保连接到正确的 MySQL 实例。如果您要连接到指定端口的 MySQL 实例,并且明确知道它在哪个 IP 地址上运行,最好使用 -h 参数指定目标 IP 地址。

7、完成第二个 MySQL 实例部署

五、特别说明

上述在一台机器上部署两个 mysql --- 3306、3307,安装了两次 mysql ,实际上只安装一次 mysql即可,然后新建两个配置文件,启动时显示指定配置文件也可达到相同目的;该方法相当于是开启了两个独立进程,效果和上述一样!!!

折腾了好几天终于结束了!!! 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据库内核

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值