开发者

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

目录
  • 1. 环境准备
  • 2. 安装mysql
  • 3. 创建多个MySQL实例
    • 3.1 创建目录结构
    • 3.2 初始化数据目录
    • 3.3 配置文件
    • 3.4 创建系统服务文件
    • 3.5 重新加载systemd配置
    • 3.6 启动并启用服务
  • 4. 验证安装
    • 5. 注意事项
      • 6.方法补充

        在实际的开发和运维场景中,有时我们需要在同一台服务器上运行多个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 androidmysql: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 --usehttp://www.devze.comr=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
        
        XZjdl

        内容如下:

        #!/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/subsysphp/mysql2
            return $RETVAL
        }
         
        stop() {
            echo -n "Shutting down MySQL 2: "
            killproc -p $PIDFILE $MYSQLD
            RETVAL=$?
            echo
            [ $RETVAL -eq 0 ] &http://www.devze.comamp;& 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的资料请关注编程客栈(www.devze.com)其它相关文章!

        0

        上一篇:

        下一篇:

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        最新数据库

        数据库排行榜