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;