Linux下MySQL多实例部署及安装指南

  • Post category:Linux

Linux下MySQL多实例部署及安装指南

前言

在实际的生产环境和开发环境中,我们可能需要同时运行多个MySQL实例,以满足不同的需求。这里详细介绍在Linux系统下,如何部署和安装多个MySQL实例。

准备工作

确认系统版本

首先需要确认当前系统的版本,以选择合适的MySQL版本。通常会使用以下命令查看:

cat /etc/issue

下载MySQL安装包

在官网下载对应的MySQL安装包,选择.tar.gz格式的包比较方便:

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.gz

新建MySQL用户和组

为了能够运行多个MySQL实例,我们需要先新建MySQL用户和组:

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

准备数据存储目录

接下来需要准备一个数据存储目录,用于存放多个MySQL实例的数据文件。这里假设我们使用目录/data/mysql

mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql

安装MySQL

以下是安装MySQL的具体步骤,其中假设我们需要安装两个MySQL实例。

解压安装包并重命名

首先,我们需要在每个实例的安装目录下解压MySQL安装包,并将其重命名:

cd /usr/local
tar -zxf /path/to/mysql-8.0.21-linux-glibc2.12-x86_64.tar.gz
mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql-instance1

tar -zxf /path/to/mysql-8.0.21-linux-glibc2.12-x86_64.tar.gz
mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql-instance2

新建配置文件

复制MySQL安装目录下的my.cnf文件,并根据需要对文件内容进行修改。这里我们需要为两个MySQL实例分别创建一个配置文件:

cp mysql-instance1/support-files/my-default.cnf /etc/my-instance1.cnf
cp mysql-instance2/support-files/my-default.cnf /etc/my-instance2.cnf

修改配置文件

对配置文件进行修改,主要需要修改以下几个参数:

  • datadir:数据存储目录,即上文中准备的/data/mysql目录。
  • port:MySQL端口号,需要为每个实例设置不同的端口号。
  • socket:Socket文件路径。

my-instance1.cnf文件为例:

datadir=/data/mysql/instance1
port=3306
socket=/var/run/mysql-instance1/mysqld.sock

my-instance2.cnf文件为例:

datadir=/data/mysql/instance2
port=3307
socket=/var/run/mysql-instance2/mysqld.sock

初始化各个实例

运行以下命令分别初始化各个MySQL实例:

cd /usr/local/mysql-instance1
./bin/mysqld --defaults-file=/etc/my-instance1.cnf --initialize --user=mysql --basedir=/usr/local/mysql-instance1 --datadir=/data/mysql/instance1

cd /usr/local/mysql-instance2
./bin/mysqld --defaults-file=/etc/my-instance2.cnf --initialize --user=mysql --basedir=/usr/local/mysql-instance2 --datadir=/data/mysql/instance2

启动MySQL实例

我们可以用以下命令分别启动两个MySQL实例:

cd /usr/local/mysql-instance1
./bin/mysqld_safe --defaults-file=/etc/my-instance1.cnf &    # 后台启动

cd /usr/local/mysql-instance2
./bin/mysqld_safe --defaults-file=/etc/my-instance2.cnf &    # 后台启动

登录MySQL实例

我们可以使用以下命令分别登录MySQL实例,其中-S参数用于指定Socket文件路径:

mysql -S /var/run/mysql-instance1/mysqld.sock
mysql -S /var/run/mysql-instance2/mysqld.sock

总结

以上就是在Linux系统下部署和安装多个MySQL实例的详细步骤。通过创建不同的配置文件和数据存储目录,我们可以轻松地将多个MySQL实例部署在同一台机器上,以满足不同的需求。

示例说明

以下是两个示例,用于演示在多个MySQL实例中创建数据库和用户的操作。

示例1:创建数据库和用户

在第一个MySQL实例中创建一个名为testdb的数据库,并创建一个名为testuser的用户:

-- 登录第一个MySQL实例
mysql -S /var/run/mysql-instance1/mysqld.sock

-- 创建数据库
CREATE DATABASE testdb;

-- 创建用户
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'testpwd';

-- 授权用户访问数据库
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';

-- 刷新权限
FLUSH PRIVILEGES;

示例2:在第二个MySQL实例中操作数据库

在第二个MySQL实例中,我们可以使用以下命令连接到另一个MySQL实例,并对其中的数据库进行操作:

-- 连接到第一个MySQL实例
mysql -h 127.0.0.1 -P 3306 -u testuser -p

-- 进入testdb数据库
USE testdb;

-- 创建一个表
CREATE TABLE t1 (
  id INT PRIMARY KEY, 
  name VARCHAR(20)
);

-- 插入数据
INSERT INTO t1 VALUES (1, 'Alice'), (2, 'Bob');

-- 查询数据
SELECT * FROM t1;