当前位置:首页 > 技术 > 正文内容

单服务器多MySQL实例部署指南

访客 技术 2026年6月14日 1

概述

本文介绍如何在同一台Linux服务器上部署多个MySQL实例。我们将创建三个独立的MySQL服务,分别监听3306、3307、3308端口。

步骤一:准备MySQL二进制包

首先需要获取MySQL二进制安装包。可以从MySQL官方网站下载对应版本的二进制包,或者使用百度网盘分享的版本(提取码:t3oz)。

将下载的安装包上传至服务器后解压,并把解压后的目录重命名为/project/3306作为基础安装目录。

步骤二:创建多实例目录结构

将基础安装目录复制两份,分别创建三个实例的安装目录:

cp -r /project/3306 /project/mysql3307
cp -r /project/3306 /project/mysql3308

各实例的目录规划如下:

实例安装目录数据目录配置文件
实例一/project/mysql3306/project/mysql3306/data/project/mysql3306/my.cnf
实例二/project/mysql3307/project/mysql3307/data/project/mysql3307/my.cnf
实例三/project/mysql3308/project/mysql3308/data/project/mysql3308/my.cnf

步骤三:配置各实例参数

为每个实例创建独立的配置文件,注意端口、socket路径、数据目录等参数的差异化配置。

第一个实例配置文件(/project/mysql3306/my.cnf):

[mysqld]
port=3306
socket = /project/mysql3306/var/mysql.sock
basedir = /project/mysql3306/
datadir = /project/mysql3306/data
pid-file = /project/mysql3306/data/mysql.pid
log_error = /project/mysql3306/data/mysql-error.log
slow_query_log_file = /project/mysql3306/data/mysql-slow.log

第二个实例配置文件(/project/mysql3307/my.cnf):

[mysqld]
port=3307
socket = /project/mysql3307/var/mysql.sock
basedir = /project/mysql3307/
datadir = /project/mysql3307/data
pid-file = /project/mysql3307/data/mysql.pid
log_error = /project/mysql3307/data/mysql-error.log
slow_query_log_file = /project/mysql3307/data/mysql-slow.log

第三个实例配置文件(/project/mysql3308/my.cnf):

[mysqld]
port=3308
socket = /project/mysql3308/var/mysql.sock
basedir = /project/mysql3308/
datadir = /project/mysql3308/data
pid-file = /project/mysql3308/data/mysql.pid
log_error = /project/mysql3308/data/mysql-error.log
slow_query_log_file = /project/mysql3308/data/mysql-slow.log

步骤四:创建所需目录并设置权限

创建配置文件中定义的各个目录:

mkdir -p /project/mysql3306/var
mkdir -p /project/mysql3307/var
mkdir -p /project/mysql3308/var
mkdir -p /project/mysql3306/data
mkdir -p /project/mysql3307/data
mkdir -p /project/mysql3308/data

将目录所有权分配给mysql用户:

chown -R mysql.mysql /project/mysql3306
chown -R mysql.mysql /project/mysql3307
chown -R mysql.mysql /project/mysql3308

步骤五:初始化数据库实例

分别初始化三个MySQL实例。注意--defaults-file参数必须放在其他参数前面。

mysqld --defaults-file=/project/mysql3306/my.cnf --initialize --user=mysql --basedir=/project/mysql3306/ --datadir=/project/mysql3306/data

mysqld --defaults-file=/project/mysql3307/my.cnf --initialize --user=mysql --basedir=/project/mysql3307/ --datadir=/project/mysql3307/data

mysqld --defaults-file=/project/mysql3308/my.cnf --initialize --user=mysql --basedir=/project/mysql3308/ --datadir=/project/mysql3308/data

初始化完成后,在对应的错误日志文件中查找临时密码。以3306实例为例:

[root@server data]# cat /project/mysql3306/data/mysql-error.log |grep password
2022-11-17T11:27:51.754075Z 1 [Note] A temporary password is generated for root@localhost: Etm/V;2KW:t(

步骤六:启动MySQL实例

重要提示:启动前需删除或重命名/etc/my.cnf文件,否则MySQL会优先读取该配置文件导致启动失败。

使用以下命令分别启动三个实例(后台运行):

nohup /project/mysql3306/bin/mysqld_safe --datadir=/project/mysql3306/data --pid-file=/project/mysql3306/data/mysql.pid &

nohup /project/mysql3307/bin/mysqld_safe --datadir=/project/mysql3307/data --pid-file=/project/mysql3307/data/mysql.pid &

nohup /project/mysql3308/bin/mysqld_safe --datadir=/project/mysql3308/data --pid-file=/project/mysql3308/data/mysql.pid &

步骤七:修改Root密码

使用初始密码登录各实例并修改Root密码。连接时需要指定端口和socket文件路径:

mysql -uroot -p -h 127.0.0.1 -P 3306 -S /project/mysql3306/var/mysql.sock

参数说明:-P指定端口号,-S指定socket文件路径。登录后执行密码修改语句:

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

总结

通过以上步骤,即可在单台服务器上成功运行三个独立的MySQL实例。每个实例都有独立的配置、数据目录和socket文件,可以根据实际需求进行独立管理和使用。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

linux screen 用法详情 (nohup 的替代方案)

一、screen 是什么?能干嘛?screen 是一个终端复用器,可以:在一个 SSH 会话中开多个“虚拟终端”SSH 断线后,程序仍然在后台运行随时重新连接到原来的会话特别适合:nohup 的替代方案跑脚本 / 爬虫 / 训练模型运维、远程开发二、安装 screen# CentOS / Rocky / Almayum install -y screen# Debian / Ubuntuapt i...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。