
MySQL 作为一款广泛使用的关系型数据库管理系统,通过在同一台物理服务器上部署多个 MySQL 实例(多实例),可以实现资源的精细管理和高效利用
本文将详细介绍如何在 CentOS7 系统上部署 MySQL 多实例,从环境准备、配置优化到实例管理,为您提供一份详尽的实践指南
一、环境准备与基础配置 1. 系统环境检查 首先,确保您的 CentOS7 服务器满足以下基本要求: - 内存至少4GB(根据实例数量和负载需求调整) -磁盘空间充足,建议至少50GB可用空间 - 网络连接正常,便于数据库访问和管理 执行以下命令检查系统基本信息: bash uname -r 检查内核版本 cat /etc/centos-release 检查操作系统版本 free -h 查看内存使用情况 df -h 查看磁盘使用情况 2. 安装必要软件 安装 MySQL 服务器软件包和常用工具: bash sudo yum install -y mysql-server 注意:虽然我们将安装单个 MySQL 软件包,但通过不同的配置文件和数据目录,可以创建多个独立的 MySQL 实例
3. 创建用户和目录 为每个 MySQL 实例创建一个专用的系统用户和数据目录
例如,为实例3307和3308创建: bash sudo groupadd mysql3307 sudo useradd -r -g mysql3307 -s /bin/false mysql3307 sudo mkdir -p /data/mysql3307/data sudo chown -R mysql3307:mysql3307 /data/mysql3307 sudo groupadd mysql3308 sudo useradd -r -g mysql3308 -s /bin/false mysql3308 sudo mkdir -p /data/mysql3308/data sudo chown -R mysql3308:mysql3308 /data/mysql3308 二、MySQL 多实例配置 1.复制 MySQL 配置模板 MySQL 默认配置文件通常位于`/etc/my.cnf` 或`/etc/mysql/my.cnf`
为每个实例创建独立的配置文件,可以通过复制默认配置文件并进行修改来实现
bash sudo cp /etc/my.cnf /etc/my3307.cnf sudo cp /etc/my.cnf /etc/my3308.cnf 2. 修改配置文件 编辑每个实例的配置文件,设置不同的端口号、数据目录、socket 文件位置等关键参数
以下是`my3307.cnf` 和`my3308.cnf` 的示例配置: my3307.cnf ini 【mysqld】 port=3307 socket=/data/mysql3307/mysql.sock datadir=/data/mysql3307/data user=mysql3307 basedir=/usr log_error=/data/mysql3307/mysql.err pid-file=/data/mysql3307/mysql.pid 其他自定义配置... my3308.cnf ini 【mysqld】 port=3308 socket=/data/mysql3308/mysql.sock datadir=/data/mysql3308/data user=mysql3308 basedir=/usr log_error=/data/mysql3308/mysql.err pid-file=/data/mysql3308/mysql.pid 其他自定义配置... 确保每个实例的配置文件不冲突,特别是端口号、socket 文件和数据目录等关键参数
3.初始化数据库 使用`mysqld --initialize` 命令为每个实例初始化数据库
注意,MySQL5.7及以上版本使用此命令,5.6及以下版本使用`mysql_install_db`
bash sudo mysqld --initialize --user=mysql3307 --datadir=/data/mysql3307/data --basedir=/usr sudo mysqld --initialize --user=mysql3308 --datadir=/data/mysql3308/data --basedir=/usr 初始化成功后,会生成系统表和初始数据
4. 启动脚本编写 为每个 MySQL 实例编写启动脚本,便于管理和自动化
以下是一个简单的 systemd 服务单元文件示例: mysql3307.service ini 【Unit】 Description=MySQL Server3307 After=network.target After=syslog.target 【Service】 User=mysql3307 Group=mysql3307 ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my3307.cnf PIDFile=/data/mysql3307/mysql.pid LimitNOFILE =5000 【Install】 WantedBy=multi-user.target mysql3308.service ini 【Unit】 Description=MySQL Server3308 After=network.target After=syslog.target 【Service】 User=mysql3308 Group=mysql3308 ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my3308.cnf PIDFile=/data/mysql3308/mysql.pid LimitNOFILE =5000 【Install】 WantedBy=multi-user.target 将上述服务单元文件保存到`/etc/systemd/system/`目录下,并重新加载 systemd 配置: bash sudo systemctl daemon-reload 然后启动并启用服务: bash sudo systemctl start mysql3307 sudo systemctl enable mysql3307 sudo systemctl start mysql3308 sudo systemctl enable mysql3308 三、实例管理与优化 1. 安全配置 运行`mysql_secure_installation` 命令为每个实例设置 root 密码,并进行基本的安全加固
由于不能直接使用此命令指定实例,需先切换到对应实例的 socket 文件进行操作: bash mysql -u root -S /data/mysql3307/mysql.sock -p 执行安全配置 mysql -u root -S /data/mysql3308/mysql.sock -p 执行安全配置 2. 性能调优 根据实际应用场景,调整 MySQL 配置参数以优化性能
常见的调优参数包括: -`innodb_buffer_pool_size`:设置 InnoDB缓冲池大小,通常建议设置为物理内存的50%-80%
-`query_cache_size`:查询缓存大小,对于写密集型应用,可以禁用此功能
-`max_connections`:最大连接数,根据应用需求调整
调整配置后,重启 MySQL 实例使更改生效
MySQL group_concat:数据聚合新技巧
CentOS7上快速部署MySQL多实例指南
MySQL查询技巧:IN子句拒绝空值
Python高效编程:精简MySQL游标使用技巧
MySQL命名规范:打造高效数据库标题
如何正确填写连接MySQL的URL
Linux系统在线快速安装MySQL教程
CentOS7关闭MySQL服务报错解决指南
CentOS7.0上MySQL安装指南
Mac OS上快速导入MySQL数据指南
CentOS7 MySQL管理必备命令
CentOS7升级指南:安装MySQL5.6
腾讯云服务器上快速安装MySQL指南
Win10上快速启动MySQL服务指南
CentOS7 MySQL中文问号解决方案
CentOS7上快速关闭MySQL服务教程
CentOS7安装MySQL修改教程
Ubuntu系统上快速启动MySQL指南
CentOS7安装PDO MySQL指南