当前位置: 代码网 > it编程>数据库>Mysql > Centos下安装多个mysql数据库的配置实例详解

Centos下安装多个mysql数据库的配置实例详解

2025年04月07日 Mysql 我要评论
在实际的开发和运维场景中,有时我们需要在同一台服务器上运行多个mysql数据库实例。本文将详细介绍如何在centos系统中安装并配置多个mysql数据库实例。1. 环境准备操作系统:centos 7.

在实际的开发和运维场景中,有时我们需要在同一台服务器上运行多个mysql数据库实例。本文将详细介绍如何在centos系统中安装并配置多个mysql数据库实例。

1. 环境准备

操作系统:centos 7.x

mysql版本:5.7.x

2. 安装mysql

首先,确保你的系统已经安装了mysql。如果没有安装,可以使用以下命令进行安装:

sudo yum update -y
sudo yum install -y mysql-server

安装完成后,启动mysql服务并设置开机自启:

sudo systemctl start mysqld
sudo systemctl enable mysqld

3. 创建多个mysql实例

3.1 创建目录结构

为了管理方便,我们为每个mysql实例创建独立的数据目录和日志目录。假设我们要创建两个实例:​​mysql1​​ 和 ​​mysql2​​。

sudo mkdir -p /var/lib/mysql1
sudo mkdir -p /var/lib/mysql2
sudo chown -r mysql:mysql /var/lib/mysql1
sudo chown -r mysql:mysql /var/lib/mysql2

3.2 初始化数据目录

使用​​mysqld​​命令初始化每个实例的数据目录:

sudo mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql1
sudo mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql2

3.3 配置文件

为每个实例创建独立的配置文件。例如,​​/etc/my.cnf.d/mysql1.cnf​​ 和 ​​/etc/my.cnf.d/mysql2.cnf​​。

mysql1.cnf
[mysqld]
datadir=/var/lib/mysql1
socket=/var/lib/mysql1/mysql.sock
port=3306
server-id=1
mysql2.cnf
[mysqld]
datadir=/var/lib/mysql2
socket=/var/lib/mysql2/mysql.sock
port=3307
server-id=2

3.4 创建系统服务文件

为每个实例创建独立的systemd服务文件。例如,​​/etc/systemd/system/mysqld@.service​​。

[unit]
description=mysql server instance %i
after=network.target
 
[service]
user=mysql
group=mysql
execstart=/usr/sbin/mysqld --defaults-file=/etc/my.cnf.d/mysql%i.cnf --datadir=/var/lib/mysql%i
restart=on-failure
privatetmp=true
 
[install]
wantedby=multi-user.target

3.5 重新加载systemd配置

sudo systemctl daemon-reload

3.6 启动并启用服务

sudo systemctl start mysqld@1
sudo systemctl start mysqld@2
sudo systemctl enable mysqld@1
sudo systemctl enable mysqld@2

4. 验证安装

可以通过以下命令验证两个实例是否正常运行:

sudo systemctl status mysqld@1
sudo systemctl status mysqld@2

还可以通过mysql客户端连接到这两个实例:

mysql -u root -p -s /var/lib/mysql1/mysql.sock
mysql -u root -p -s /var/lib/mysql2/mysql.sock

5. 注意事项

  • 确保每个实例的端口不冲突。
  • 确保每个实例的配置文件路径正确。
  • 如果需要远程访问,确保防火墙规则允许相应的端口。

6.方法补充

这对于测试、开发或生产环境中的多租户场景非常有用```在 centos 中安装和配置多个 mysql 数据库实例是一个相对复杂的过程,但通过合理地规划配置文件和端口,可以实现这一目标。以下是一个具体的步骤和示例代码,用于在 centos 上安装两个 mysql 实例(例如:​​mysqld1​​​ 和 ​​mysqld2​​)。

步骤 1: 安装 mysql

首先,确保你的系统已经安装了 mysql。如果没有安装,可以通过以下命令安装:

sudo yum install -y mysql-server

步骤 2: 创建数据目录

为每个 mysql 实例创建独立的数据目录,并设置正确的权限:

sudo mkdir -p /var/lib/mysql1 /var/lib/mysql2
sudo chown -r mysql:mysql /var/lib/mysql1 /var/lib/mysql2

步骤 3: 配置 mysql 实例

为每个 mysql 实例创建一个独立的配置文件。假设我们将使用 ​​/etc/my.cnf.d/mysqld1.cnf​​ 和 ​​/etc/my.cnf.d/mysqld2.cnf​​。

mysqld1.cnf
[mysqld1]
datadir=/var/lib/mysql1
socket=/var/lib/mysql1/mysql.sock
port=3306
pid-file=/var/run/mysqld/mysqld1.pid
mysqld2.cnf
[mysqld2]
datadir=/var/lib/mysql2
socket=/var/lib/mysql2/mysql.sock
port=3307
pid-file=/var/run/mysqld/mysqld2.pid

步骤 4: 初始化数据库

初始化每个 mysql 实例的数据目录:

sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql1
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql2

步骤 5: 创建系统服务文件

为每个 mysql 实例创建一个系统服务文件。假设我们将使用 ​​/etc/systemd/system/mysqld1.service​​ 和 ​​/etc/systemd/system/mysqld2.service​​。

mysqld1.service
[unit]
description=mysql server instance 1
after=network.target
 
[service]
user=mysql
group=mysql
execstart=/usr/sbin/mysqld --defaults-file=/etc/my.cnf.d/mysqld1.cnf
execreload=/bin/kill -hup $mainpid
execstop=/bin/kill -sigterm $mainpid
restart=on-failure
 
[install]
wantedby=multi-user.target
mysqld2.service
[unit]
description=mysql server instance 2
after=network.target
 
[service]
user=mysql
group=mysql
execstart=/usr/sbin/mysqld --defaults-file=/etc/my.cnf.d/mysqld2.cnf
execreload=/bin/kill -hup $mainpid
execstop=/bin/kill -sigterm $mainpid
restart=on-failure
 
[install]
wantedby=multi-user.target

步骤 6: 启动并启用服务

启动并启用这两个 mysql 实例的服务:

sudo systemctl daemon-reload
sudo systemctl start mysqld1
sudo systemctl start mysqld2
sudo systemctl enable mysqld1
sudo systemctl enable mysqld2

步骤 7: 验证安装

验证两个 mysql 实例是否正常运行:

sudo systemctl status mysqld1
sudo systemctl status mysqld2

你可以通过以下命令连接到每个实例:

mysql -u root -p -s /var/lib/mysql1/mysql.sock
mysql -u root -p -s /var/lib/mysql2/mysql.sock

或者通过端口连接:

mysql -u root -p -h 127.0.0.1 -p 3306
mysql -u root -p -h 127.0.0.1 -p 3307

以上步骤和示例代码展示了如何在 centos 上安装和配置多个 mysql 实例。希望这些信息对你有帮助!如果有任何问题,请随时提问。

在 centos 中安装和配置多个 mysql 数据库实例可以为不同的应用程序或项目提供独立的数据库环境。以下是一个详细的步骤指南,包括必要的命令和配置文件修改,以帮助你在 centos 上设置多个 mysql 实例。

1. 安装 mysql

首先,确保你的系统上已经安装了 mysql。如果没有,可以通过以下命令安装:

sudo yum update -y
sudo yum install -y mysql-server

2. 创建多个 mysql 配置文件

mysql 使用配置文件来定义每个实例的行为。我们将为每个实例创建一个单独的配置文件。假设我们要创建两个实例:​​mysql1​​ 和 ​​mysql2​​。

创建配置目录

sudo mkdir /etc/mysql
sudo mkdir /etc/mysql/mysql1
sudo mkdir /etc/mysql/mysql2

创建配置文件

编辑 ​​/etc/mysql/mysql1/my.cnf​​ 文件:

[mysqld]
datadir=/var/lib/mysql1
socket=/var/lib/mysql1/mysql.sock
port=3306
pid-file=/var/run/mysqld/mysqld1.pid
log-error=/var/log/mysql1/error.log

编辑 ​​/etc/mysql/mysql2/my.cnf​​ 文件:

[mysqld]
datadir=/var/lib/mysql2
socket=/var/lib/mysql2/mysql.sock
port=3307
pid-file=/var/run/mysqld/mysqld2.pid
log-error=/var/log/mysql2/error.log

3. 创建数据目录和日志目录

为每个实例创建数据目录和日志目录,并设置适当的权限:

sudo mkdir -p /var/lib/mysql1
sudo mkdir -p /var/lib/mysql2
sudo mkdir -p /var/log/mysql1
sudo mkdir -p /var/log/mysql2
sudo chown -r mysql:mysql /var/lib/mysql1
sudo chown -r mysql:mysql /var/lib/mysql2
sudo chown -r mysql:mysql /var/log/mysql1
sudo chown -r mysql:mysql /var/log/mysql2

4. 初始化数据库

使用 ​​mysql_install_db​​ 工具初始化每个实例的数据目录。请注意,从 mysql 5.7 开始,推荐使用 ​​mysqld --initialize​​ 命令:

sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql1
sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql2

5. 创建启动脚本

为每个实例创建一个启动脚本。这些脚本将用于启动、停止和管理每个实例。

创建 ​​/etc/init.d/mysql1​​ 脚本

sudo nano /etc/init.d/mysql1

内容如下:

#!/bin/bash
# chkconfig: 345 64 36
# description: mysql server 1
 
. /etc/init.d/functions
 
mysqld=/usr/sbin/mysqld
mysqld_opts="--defaults-file=/etc/mysql/mysql1/my.cnf"
pidfile=/var/run/mysqld/mysqld1.pid
 
start() {
    echo -n "starting mysql 1: "
    daemon $mysqld $mysqld_opts
    retval=$?
    echo
    [ $retval -eq 0 ] && touch /var/lock/subsys/mysql1
    return $retval
}
 
stop() {
    echo -n "shutting down mysql 1: "
    killproc -p $pidfile $mysqld
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f /var/lock/subsys/mysql1
    return $retval
}
 
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "usage: $0 {start|stop|restart}"
        exit 1
esac
 
exit $?

创建 ​​/etc/init.d/mysql2​​ 脚本

sudo nano /etc/init.d/mysql2

内容如下:

#!/bin/bash
# chkconfig: 345 65 35
# description: mysql server 2
 
. /etc/init.d/functions
 
mysqld=/usr/sbin/mysqld
mysqld_opts="--defaults-file=/etc/mysql/mysql2/my.cnf"
pidfile=/var/run/mysqld/mysqld2.pid
 
start() {
    echo -n "starting mysql 2: "
    daemon $mysqld $mysqld_opts
    retval=$?
    echo
    [ $retval -eq 0 ] && touch /var/lock/subsys/mysql2
    return $retval
}
 
stop() {
    echo -n "shutting down mysql 2: "
    killproc -p $pidfile $mysqld
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f /var/lock/subsys/mysql2
    return $retval
}
 
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "usage: $0 {start|stop|restart}"
        exit 1
esac
 
exit $?

6. 设置启动脚本权限

使启动脚本可执行:

sudo chmod +x /etc/init.d/mysql1
sudo chmod +x /etc/init.d/mysql2

7. 注册服务

将服务注册到系统启动项:

sudo chkconfig --add mysql1
sudo chkconfig --add mysql2
sudo chkconfig --level 345 mysql1 on
sudo chkconfig --level 345 mysql2 on

8. 启动 mysql 实例

启动两个 mysql 实例:

sudo service mysql1 start
sudo service mysql2 start

9. 验证实例

验证每个实例是否正常运行:

sudo netstat -tuln | grep 3306
sudo netstat -tuln | grep 3307

10. 连接到实例

你可以使用 ​​mysql​​ 客户端连接到每个实例:

mysql -u root -p -s /var/lib/mysql1/mysql.sock
mysql -u root -p -s /var/lib/mysql2/mysql.sock

通过以上步骤,你可以在 centos 上成功配置和运行多个 mysql 实例。每个实例都有自己的配置文件、数据目录和日志目录,互不干扰。

以上就是centos下安装多个mysql数据库的配置实例详解的详细内容,更多关于centos安装多个mysql的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com