一台主机部署多个mysql实例,看这一篇就够了

一台主机部署多个mysql实例,看这一篇就够了提前准备好 MySQL 数据库的 8 0 版本的二进制安装包

大家好,欢迎来到IT知识分享网。

一、准备工作

提前准备好MySQL数据库的8.0版本的二进制安装包

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

1、安装mysql的客户端到主机上

所有客户端,可远程登录MySQL服务器的控制页面上

一台主机部署多个mysql实例,看这一篇就够了

2、将准备好的mysql数据库二进制包存放指定位置

将其解压,更名,放到 /usr/local/ 路径下

tar -xf mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz -C /usr/local/

一台主机部署多个mysql实例,看这一篇就够了

为了使得MySQL数据库可以全局运行,因此将其加入到环境变量中

cat > /etc/profile.d/mysql.sh <<EOF PATH=$PATH:/usr/local/mysql/bin/ EOF

一台主机部署多个mysql实例,看这一篇就够了

运行使其生效

source /etc/profile.d/mysql.sh

也可以直接临时添加环境变量

echo PATH=$PATH:/usr/local/mysql/bin/

进行验证查看

一台主机部署多个mysql实例,看这一篇就够了

这样,进行MySQL命令时,就可以全局运行了

3、创建mysql兄弟的家

依据所需要创建的MySQL数据库实例,创建相应的文件目录

mkdir -p /data/330{6..8}/{data,etc,socket,log,bin,pid}

一台主机部署多个mysql实例,看这一篇就够了

查看是否存在MySQL用户,没有就创建,然后将创建的文件的属主属组替换掉

id mysql || useradd mysql chown -R mysql.mysql /data

一台主机部署多个mysql实例,看这一篇就够了

4、编写多实例的数据库主配置文件

cat > /data/3306/etc/my.cnf <<EOF [mysqld] user=mysql basedir=/usr/local/mysql datadir=/data/3306/data socket=/data/3306/socket/mysql.sock log-error=/data/3306/log/mysql.log pid-file=/data/3306/pid/mysql.pid server_id=1 port=3306 EOF

一台主机部署多个mysql实例,看这一篇就够了

使用sed命令对其他两个实例进行添加

sed 's/3306/3307/' /data/3306/etc/my.cnf > /data/3307/etc/my.cnf
sed 's/3306/3308/' /data/3306/etc/my.cnf > /data/3308/etc/my.cnf

一台主机部署多个mysql实例,看这一篇就够了

5、初始化多个数据库实例的数据字典

mysqld --defaults-file=/data/3306/etc/my.cnf --initialize-insecure mysqld --defaults-file=/data/3307/etc/my.cnf --initialize-insecure mysqld --defaults-file=/data/3308/etc/my.cnf --initialize-insecure

一台主机部署多个mysql实例,看这一篇就够了

二、验证MySQL多实例

1、启动实例:基于命令进行启动

mysqld_safe --defaults-file=/data/3306/etc/my.cnf & mysqld_safe --defaults-file=/data/3307/etc/my.cnf & mysqld_safe --defaults-file=/data/3308/etc/my.cnf &

一台主机部署多个mysql实例,看这一篇就够了

一台主机部署多个mysql实例,看这一篇就够了

2、基于脚本进行启停

上面的使用命令一个个启动比较繁琐,这里使用准备好的脚本,放到对应的实例bin 目录下,并授予其执行权限

一台主机部署多个mysql实例,看这一篇就够了

chmod +x ./3306/bin/mysql-3306

一台主机部署多个mysql实例,看这一篇就够了

将所有的实例上都复制一份相应的启停脚本,并进行相应的调整

脚本内容:

#!/bin/bash port=3306 mysql_user="root" mysql_pwd='' cmd_path="/usr/local/mysql/bin" mysql_basedir="/data" mysql_sock="/data/${port}/socket/mysql.sock" function_start_mysql() { if [ ! -e "$mysql_sock" ];then printf "Starting MySQL...\n" ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null & else printf "MySQL is running...\n" exit fi } function_stop_mysql() { if [ ! -e "$mysql_sock" ];then printf "MySQL is stopped...\n" exit else printf "Stoping MySQL...\n" ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown fi } function_restart_mysql() { printf "Restarting MySQL...\n" function_stop_mysql sleep 2 function_start_mysql } case $1 in start) function_start_mysql ;; stop) function_stop_mysql ;; restart) function_restart_mysql ;; *) printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n" esac 

对于不同的实例,脚本中仅需要改造一下对应的暴露端口,就可以将其作为对应实例的启停脚本

进行验证:

一台主机部署多个mysql实例,看这一篇就够了

3、登录验证

从上面可知,MySQL多实例启动的端口,这里是基于套接字直接进行连接的

一台主机部署多个mysql实例,看这一篇就够了

一台主机部署多个mysql实例,看这一篇就够了

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/158451.html

(0)
上一篇 2025-01-23 21:05
下一篇 2025-01-23 21:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信