Centos下安装多个mysql数据库的配置实例详解!
Centos下安装多个mysql数据库的配置实例详解!
在实际的开发和运维场景中,有时我们需要在同一台服务器上运行多个MySQL数据库实例。本文将详细介绍如何在CentOS系统中安装并配置多个MySQL数据库实例。
1. 环境准备
操作系统:CentOS 7.x
MySQL版本:5.7.x
2. 安装MySQL
首先,确保你的系统已经安装了MySQL。如果没有安装,可以使用以下命令进行安装:
|
1
2
|
sudo yum update -ysudo yum install -y mysql-server |
安装完成后,启动MySQL服务并设置开机自启:
|
1
2
|
sudo systemctl start mysqldsudo systemctl enable mysqld |
3. 创建多个MySQL实例
3.1 创建目录结构
为了管理方便,我们为每个MySQL实例创建独立的数据目录和日志目录。假设我们要创建两个实例:mysql1 和 mysql2。
|
1
2
3
4
|
sudo mkdir -p /var/lib/mysql1sudo mkdir -p /var/lib/mysql2sudo chown -R mysql:mysql /var/lib/mysql1sudo chown -R mysql:mysql /var/lib/mysql2 |
3.2 初始化数据目录
使用mysqld命令初始化每个实例的数据目录:
|
1
2
|
sudo mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql1sudo mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql2 |
3.3 配置文件
为每个实例创建独立的配置文件。例如,/etc/my.cnf.d/mysql1.cnf 和 /etc/my.cnf.d/mysql2.cnf。
|
1
2
3
4
5
6
7
8
9
10
11
12
|
mysql1.cnf[mysqld]datadir=/var/lib/mysql1socket=/var/lib/mysql1/mysql.sockport=3306server-id=1mysql2.cnf[mysqld]datadir=/var/lib/mysql2socket=/var/lib/mysql2/mysql.sockport=3307server-id=2 |
3.4 创建系统服务文件
为每个实例创建独立的systemd服务文件。例如,/etc/systemd/system/mysqld@.service。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[Unit]Description=MySQL Server Instance %iAfter=network.target[Service]User=mysqlGroup=mysqlExecStart=/usr/sbin/mysqld --defaults-file=/etc/my.cnf.d/mysql%i.cnf --datadir=/var/lib/mysql%iRestart=on-failurePrivateTmp=true[Install]WantedBy=multi-user.target |
3.5 重新加载systemd配置
|
1
|
sudo systemctl daemon-reload |
3.6 启动并启用服务
|
1
2
3
4
|
sudo systemctl start mysqld@1sudo systemctl start mysqld@2sudo systemctl enable mysqld@1sudo systemctl enable mysqld@2 |
4. 验证安装
可以通过以下命令验证两个实例是否正常运行:
|
1
2
|
sudo systemctl status mysqld@1sudo systemctl status mysqld@2 |
还可以通过MySQL客户端连接到这两个实例:
|
1
2
|
mysql -u root -p -S /var/lib/mysql1/mysql.sockmysql -u root -p -S /var/lib/mysql2/mysql.sock |
5. 注意事项
- 确保每个实例的端口不冲突。
- 确保每个实例的配置文件路径正确。
- 如果需要远程访问,确保防火墙规则允许相应的端口。
6.方法补充
这对于测试、开发或生产环境中的多租户场景非常有用```在 CentOS 中安装和配置多个 MySQL 数据库实例是一个相对复杂的过程,但通过合理地规划配置文件和端口,可以实现这一目标。以下是一个具体的步骤和示例代码,用于在 CentOS 上安装两个 MySQL 实例(例如:mysqld1 和 mysqld2)。
步骤 1: 安装 MySQL
首先,确保你的系统已经安装了 MySQL。如果没有安装,可以通过以下命令安装:
|
1
|
sudo yum install -y mysql-server |
步骤 2: 创建数据目录
为每个 MySQL 实例创建独立的数据目录,并设置正确的权限:
|
1
2
|
sudo mkdir -p /var/lib/mysql1 /var/lib/mysql2sudo 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。
|
1
2
3
4
5
6
7
8
9
10
11
12
|
mysqld1.cnf[mysqld1]datadir=/var/lib/mysql1socket=/var/lib/mysql1/mysql.sockport=3306pid-file=/var/run/mysqld/mysqld1.pidmysqld2.cnf[mysqld2]datadir=/var/lib/mysql2socket=/var/lib/mysql2/mysql.sockport=3307pid-file=/var/run/mysqld/mysqld2.pid |
步骤 4: 初始化数据库
初始化每个 MySQL 实例的数据目录:
|
1
2
|
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql1sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql2 |
步骤 5: 创建系统服务文件
为每个 MySQL 实例创建一个系统服务文件。假设我们将使用 /etc/systemd/system/mysqld1.service 和 /etc/systemd/system/mysqld2.service。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
mysqld1.service[Unit]Description=MySQL Server Instance 1After=network.target[Service]User=mysqlGroup=mysqlExecStart=/usr/sbin/mysqld --defaults-file=/etc/my.cnf.d/mysqld1.cnfExecReload=/bin/kill -HUP $MAINPIDExecStop=/bin/kill -SIGTERM $MAINPIDRestart=on-failure[Install]WantedBy=multi-user.targetmysqld2.service[Unit]Description=MySQL Server Instance 2After=network.target[Service]User=mysqlGroup=mysqlExecStart=/usr/sbin/mysqld --defaults-file=/etc/my.cnf.d/mysqld2.cnfExecReload=/bin/kill -HUP $MAINPIDExecStop=/bin/kill -SIGTERM $MAINPIDRestart=on-failure[Install]WantedBy=multi-user.target |
步骤 6: 启动并启用服务
启动并启用这两个 MySQL 实例的服务:
|
1
2
3
4
5
|
sudo systemctl daemon-reloadsudo systemctl start mysqld1sudo systemctl start mysqld2sudo systemctl enable mysqld1sudo systemctl enable mysqld2 |
步骤 7: 验证安装
验证两个 MySQL 实例是否正常运行:
|
1
2
|
sudo systemctl status mysqld1sudo systemctl status mysqld2 |
你可以通过以下命令连接到每个实例:
|
1
2
|
mysql -u root -p -S /var/lib/mysql1/mysql.sockmysql -u root -p -S /var/lib/mysql2/mysql.sock |
或者通过端口连接:
|
1
2
|
mysql -u root -p -h 127.0.0.1 -P 3306mysql -u root -p -h 127.0.0.1 -P 3307 |
以上步骤和示例代码展示了如何在 CentOS 上安装和配置多个 MySQL 实例。希望这些信息对你有帮助!如果有任何问题,请随时提问。
在 CentOS 中安装和配置多个 MySQL 数据库实例可以为不同的应用程序或项目提供独立的数据库环境。以下是一个详细的步骤指南,包括必要的命令和配置文件修改,以帮助你在 CentOS 上设置多个 MySQL 实例。
1. 安装 MySQL
首先,确保你的系统上已经安装了 MySQL。如果没有,可以通过以下命令安装:
|
1
2
|
sudo yum update -ysudo yum install -y mysql-server |
2. 创建多个 MySQL 配置文件
MySQL 使用配置文件来定义每个实例的行为。我们将为每个实例创建一个单独的配置文件。假设我们要创建两个实例:mysql1 和 mysql2。
创建配置目录
|
1
2
3
|
sudo mkdir /etc/mysqlsudo mkdir /etc/mysql/mysql1sudo mkdir /etc/mysql/mysql2 |
创建配置文件
编辑 /etc/mysql/mysql1/my.cnf 文件:
|
1
2
3
4
5
6
|
[mysqld]datadir=/var/lib/mysql1socket=/var/lib/mysql1/mysql.sockport=3306pid-file=/var/run/mysqld/mysqld1.pidlog-error=/var/log/mysql1/error.log |
编辑 /etc/mysql/mysql2/my.cnf 文件:
|
1
2
3
4
5
6
|
[mysqld]datadir=/var/lib/mysql2socket=/var/lib/mysql2/mysql.sockport=3307pid-file=/var/run/mysqld/mysqld2.pidlog-error=/var/log/mysql2/error.log |
3. 创建数据目录和日志目录
为每个实例创建数据目录和日志目录,并设置适当的权限:
|
1
2
3
4
5
6
7
8
|
sudo mkdir -p /var/lib/mysql1sudo mkdir -p /var/lib/mysql2sudo mkdir -p /var/log/mysql1sudo mkdir -p /var/log/mysql2sudo chown -R mysql:mysql /var/lib/mysql1sudo chown -R mysql:mysql /var/lib/mysql2sudo chown -R mysql:mysql /var/log/mysql1sudo chown -R mysql:mysql /var/log/mysql2 |
4. 初始化数据库
使用 mysql_install_db 工具初始化每个实例的数据目录。请注意,从 MySQL 5.7 开始,推荐使用 mysqld --initialize 命令:
|
1
2
|
sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql1sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql2 |
5. 创建启动脚本
为每个实例创建一个启动脚本。这些脚本将用于启动、停止和管理每个实例。
创建 /etc/init.d/mysql1 脚本
|
1
|
sudo nano /etc/init.d/mysql1 |
内容如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/bin/bash# chkconfig: 345 64 36# description: MySQL Server 1. /etc/init.d/functionsMYSQLD=/usr/sbin/mysqldMYSQLD_OPTS="--defaults-file=/etc/mysql/mysql1/my.cnf"PIDFILE=/var/run/mysqld/mysqld1.pidstart() {echo -n "Starting MySQL 1: "daemon $MYSQLD $MYSQLD_OPTSRETVAL=$?echo[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mysql1return $RETVAL}stop() {echo -n "Shutting down MySQL 1: "killproc -p $PIDFILE $MYSQLDRETVAL=$?echo[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mysql1return $RETVAL}case "$1" instart)start;;stop)stop;;restart)stopstart;;*)echo "Usage: $0 {start|stop|restart}"exit 1esacexit $? |
创建 /etc/init.d/mysql2 脚本
|
1
|
sudo nano /etc/init.d/mysql2 |
内容如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/bin/bash# chkconfig: 345 65 35# description: MySQL Server 2. /etc/init.d/functionsMYSQLD=/usr/sbin/mysqldMYSQLD_OPTS="--defaults-file=/etc/mysql/mysql2/my.cnf"PIDFILE=/var/run/mysqld/mysqld2.pidstart() {echo -n "Starting MySQL 2: "daemon $MYSQLD $MYSQLD_OPTSRETVAL=$?echo[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mysql2return $RETVAL}stop() {echo -n "Shutting down MySQL 2: "killproc -p $PIDFILE $MYSQLDRETVAL=$?echo[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mysql2return $RETVAL}case "$1" instart)start;;stop)stop;;restart)stopstart;;*)echo "Usage: $0 {start|stop|restart}"exit 1esacexit $? |
6. 设置启动脚本权限
使启动脚本可执行:
|
1
2
|
sudo chmod +x /etc/init.d/mysql1sudo chmod +x /etc/init.d/mysql2 |
7. 注册服务
将服务注册到系统启动项:
|
1
2
3
4
|
sudo chkconfig --add mysql1sudo chkconfig --add mysql2sudo chkconfig --level 345 mysql1 onsudo chkconfig --level 345 mysql2 on |
8. 启动 MySQL 实例
启动两个 MySQL 实例:
|
1
2
|
sudo service mysql1 startsudo service mysql2 start |
9. 验证实例
验证每个实例是否正常运行:
|
1
2
|
sudo netstat -tuln | grep 3306sudo netstat -tuln | grep 3307 |
10. 连接到实例
你可以使用 mysql 客户端连接到每个实例:
|
1
2
|
mysql -u root -p -S /var/lib/mysql1/mysql.sockmysql -u root -p -S /var/lib/mysql2/mysql.sock |
通过以上步骤,你可以在 CentOS 上成功配置和运行多个 MySQL 实例。每个实例都有自己的配置文件、数据目录和日志目录,互不干扰。
以上就是Centos下安装多个mysql数据库的配置实例详解的详细内容。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需129元,即可下载本站文章涉及的文件和软件。

