为了充分利用服务器硬件资源,提高数据服务能力,许多企业选择在同一台服务器上配置MySQL多实例
本文将详细介绍如何通过RPM包管理器在Linux系统中安装并配置MySQL多实例
一、RPM安装MySQL基础 RPM(Red-Hat Package Manager)是Red Hat及其衍生版Linux发行版中用于软件包管理的工具
通过RPM,用户可以方便地安装、卸载、查询和验证软件包
1. 下载MySQL RPM包 首先,需要从MySQL官方网站或镜像站点下载所需的RPM包
通常,用户会下载一个包含MySQL社区版安装源的RPM包,然后使用YUM(Yellowdog Updater Modified)或RPM命令进行安装
例如,可以下载`mysql57-community-release-el7-11.noarch.rpm`包,该包包含了MySQL5.7社区版的YUM仓库配置
2. 安装MySQL RPM包 安装下载的RPM包: bash rpm -ivh mysql57-community-release-el7-11.noarch.rpm 安装MySQL服务器软件包: bash yum -y install mysql-server 3. 启动MySQL服务 安装完成后,可以启动MySQL服务并设置开机自启动: bash systemctl start mysqld systemctl enable mysqld 4. 获取并重置root密码 MySQL首次启动时,会在日志文件中生成一个临时密码
可以通过以下命令找到该密码: bash grep temporary password /var/log/mysqld.log 使用找到的临时密码登录MySQL,并重置root密码: sql ALTER USER root@localhost IDENTIFIED BY new_password; 如果设置密码时遇到策略要求不符合的情况,可以先调整密码策略: sql SET GLOBAL validate_password_policy=LOW; SET GLOBAL validate_password_length=6; 然后再次尝试重置密码
二、MySQL多实例配置 多实例是指在同一台服务器上运行多个MySQL服务进程,每个进程监听不同的端口,使用不同的配置文件和数据目录
这样可以充分利用服务器资源,为不同的应用提供服务
1. 环境准备 在进行多实例配置之前,需要确保已经安装了MySQL,并且了解如何启动和管理MySQL服务
此外,还需要为每个实例创建独立的数据目录和配置文件
2. 创建数据目录 为每个MySQL实例创建一个独立的数据目录
例如,为3307、3308和3309端口创建数据目录: bash mkdir -p /mysql/330{7..9}/data 3. 复制并修改配置文件 从MySQL安装目录中的`support-files`文件夹复制`my-small.cnf`作为模板配置文件,并根据需要修改每个实例的配置文件
主要需要修改的参数包括`datadir`(数据目录)、`socket`(套接字文件路径)、`port`(监听端口)等
例如,为3307端口实例创建的配置文件内容可能如下: ini 【client】 port=3307 socket=/mysql/3307/mysql3307.sock 【mysql】 no-auto-rehash 【mysqld】 user=mysql port=3307 socket=/mysql/3307/mysql3307.sock basedir=/usr/local/mysql datadir=/mysql/3307/data log-error=/mysql/3307/mysqld3307.log pid-file=/mysql/3307/mysqld3307.pid server-id=3 类似地,为3308和3309端口实例创建配置文件,并做相应的修改
4. 初始化数据目录 使用`mysqld --initialize`命令为每个实例初始化数据目录
注意,这个步骤会在数据目录中生成必要的系统表和其他初始数据
bash mysqld --initialize --user=mysql --datadir=/mysql/3307/data mysqld --initialize --user=mysql --datadir=/mysql/3308/data mysqld --initialize --user=mysql --datadir=/mysql/3309/data 5. 配置systemd服务 为了管理多个MySQL实例,可以为每个实例创建一个systemd服务单元文件
例如,为3307端口实例创建的服务单元文件内容可能如下: ini 【Unit】 Description=MySQL Server3307 After=network.target After=syslog.target 【Service】 User=mysql Group=mysql ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my3307.cnf PIDFile=/mysql/3307/mysqld3307.pid LimitNOFILE =5000 【Install】 WantedBy=multi-user.target 将上述内容保存为`/etc/systemd/system/mysqld3307.service`文件,并做相应的修改以适配其他实例(如将文件名和配置文件路径中的3307替换为3308、3309等)
然后,重新加载systemd配置并启动服务: bash systemctl daemon-reload systemctl start mysqld3307 systemctl enable mysqld3307 类似地,为其他实例创建服务单元文件并启动服务
6. 验证多实例配置 最后,通过登录每个MySQL实例来验证配置是否正确
可以使用`mysql -u root -p -S /mys