mysql服务实例配置_MySQL多实例配置

MySQL的多实例配置

​在一台物理机中需要多个测试环境,那么就需要用到了搭建数据库的多个实例,多个实例的意思就是运行多份程序,实例与实例之间没有影响。要注意监听的端口需要不同。

环境:CentOS7.4

实验预期:在一台虚拟机上安装三套MariaDB数据库,数据库版本5.5

思路:三套配置文件(日志文件,配置文件,数据库文件),三个不同的端口

安装第一个实例

yum install mariadb-server

​ 1、创建运行的目录环境

[root@centos7 ~]#mkdir -p /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data,bin}

[root@centos7~]# chown -R mysql:mysql /mysqldb/

目录结构如下

[root@centos7 ~]# tree /mysqldb/

/mysqldb/├──3306│ ├── bin

│ ├── data

│ ├── etc

│ ├── log

│ ├── pid

│ └── socket

├──3307│ ├── bin

│ ├── data

│ ├── etc

│ ├── log

│ ├── pid

│ └── socket

└──3308├── bin

├── data

├── etc

├── log

├── pid

└── socket21 directories, 0 files

2、初始化数据库

[root@centos7 ~]# mysql_install_db --datadir=/mysqldb/3306/data/ --user=mysql[root@centos7 ~]# mysql_install_db--datadir=/mysqldb/3307/data/ --user=mysql [root@centos7~]# mysql_install_db--datadir=/mysqldb/3308/data/ --user=mysql

3、创建各自配置文件

cp /etc/my.cnf /mysqldb/3306/etc/

4、修改各自配置文件

vim my.cnf

[mysqld]

port=3306datadir=/mysqldb/3306/data

socket=/mysqldb/3306/socket/mysql.sock

[mysqld_safe]

log-error=/mysqldb/3306/log/mariadb.log

pid-file=/mysqldb/3306/pid/mariadb.pid#chown -R mysql:mysql /mysqldb #给目录添加权限

#!includefir /etc/my.cnf.d 添加此行注释

参照3306配置文件,将3307,3308配置文件也生成

cp/mysqldb/3306/etc/my.cnf /mysqldb/3307/etc/my.cnf

cp/mysqldb/3306/etc/my.cnf /mysqldb/3308/etc/my.cnf

:%s /3306/3307/g 脚本搜索全局替换

81b4dd28563ce2a582413a22d0f54b59.png

5、准备启动服务脚本

[root@centos7 /mysqldb/3306/bin]# vim mysqld

#!/bin/bash

port=3306   #需要修改为当前实例的端口号

mysql_user="root"

mysql_pwd=""

cmd_path="/usr/bin"  #安装目录下的bin

mysql_basedir="/mysqldb" #实例数据库文件所在目录

mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"

function_start_mysql()

{

if [ ! -e "$mysql_sock" ];then

printf "Starting MySQL...\n"

${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &

else

printf "MySQL is running...\n"

exit

fi

}

function_stop_mysql()

{

if [ ! -e "$mysql_sock" ];then

printf "MySQL is stopped...\n"

exit

else

printf "Stoping MySQL...\n"

${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown

fi

}

function_restart_mysql()

{

printf "Restarting MySQL...\n"

function_stop_mysql

sleep 2

function_start_mysql

}

case $1 in

start)

function_start_mysql

;;

stop)

function_stop_mysql

;;

restart)

function_restart_mysql

;;

*)

printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"

esac

​ 6、修改脚本文件权限,防止密码被别人看到

[root@centos7 ~]# chmod 700 /mysqldb/3306/bin/mysqld

[root@centos7~]# chmod 700 /mysqldb/3307/bin/mysqld

[root@centos7~]# chmod 700 /mysqldb/3308/bin/mysqld

7、启动服务

[root@centos7 ~]# service mysqld stop #保证自己原来的服务停止,释放3306端口

[root@centos7~]# /mysqldb/3306/bin/mysqld start #启动服务

[root@centos7~]# /mysqldb/3307/bin/mysqld start

[root@centos7~]# /mysqldb/3308/bin/mysqld start

[root@centos7~]# ss -tnl #如果看到三个实例监听的端口都打开后说明服务启动正常

LISTEN0 80 :::3306 :::*LISTEN0 80 :::3307 :::*LISTEN0 80 :::3308 :::*

8、连接测试

[root@centos7 ~]# mysql -S /mysqldb/3306/socket/mysql.sock #使用-S指定套接字文件

Server version:10.2.15-MariaDB-log Source distribution

MariaDB [(none)]> show variables like '%port'; #查看端口是否是3306+---------------------+-------+

| Variable_name | Value |

+---------------------+-------+

| extra_port | 0 |

| large_files_support | ON |

| port | 3306 |

| report_port | 3306 |

+---------------------+-------+

4 rows in set (0.00sec)

[root@centos7~]# mysql -S /mysqldb/3307/socket/mysql.sock #再连接测试一下3307和3308

Server version:10.2.15-MariaDB-log Source distribution

MariaDB [(none)]> show variables like '%port';+---------------------+-------+

| Variable_name | Value |

+---------------------+-------+

| extra_port | 0 |

| large_files_support | ON |

| port | 3307 |

| report_port | 3307 |

+---------------------+-------+

4 rows in set (0.00sec)

[root@centos7~]# mysql -S /mysqldb/3308/socket/mysql.sock

Server version:10.2.15-MariaDB-log Source distribution

MariaDB [(none)]> show variables like '%port';+---------------------+-------+

| Variable_name | Value |

+---------------------+-------+

| extra_port | 0 |

| large_files_support | ON |

| port | 3308 |

| report_port | 3308 |

+---------------------+-------+

4 rows in set (0.00 sec)

​多实例搭建成功!

9、使用这条命令来停止实例

[root@centos7 ~]# /mysqldb/3306/bin/mysqld stop

​ 10、最后一步:给root用户加个密码

[root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock

Server version:10.2.15-MariaDB-log Source distribution

MariaDB [(none)]> update mysql.user set password=PASSWORD("your_password") where user='root';

Query OK,4 rows affected (0.00sec)

MariaDB [(none)]>flush privileges;

Query OK,0 rows affected (0.00sec)

MariaDB [(none)]> select user,host,password frommysql.user;+------+-----------+-------------------------------------------+

| user | host | password |

+------+-----------+-------------------------------------------+

| root | localhost | *9E72259BA9214F692A85B240647C4D95B0F2E08B |

| root | centos7 | *9E72259BA9214F692A85B240647C4D95B0F2E08B |

| root | 127.0.0.1 | *9E72259BA9214F692A85B240647C4D95B0F2E08B |

| root | ::1 | *9E72259BA9214F692A85B240647C4D95B0F2E08B |

| | localhost | |

| | centos7 | |

+------+-----------+-------------------------------------------+

6 rows in set (0.00sec)

[root@centos7~]# mysql -S /mysqldb/3307/socket/mysql.sock -uroot -p'your_password' #指定密码,再次登录OK~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux系统下,可以通过多个实例来运行多个MySQL服务器,每个实例可以拥有独立的配置文件、数据目录和日志文件等。这样可以方便地管理多个不同的MySQL实例,提高系统的可靠性和稳定性。下面简单介绍一下在Linux下MySQL实例安装的过程。 1. 安装MySQL 首先需要安装MySQL,可以通过命令行或者图形界面进行安装。以Ubuntu系统为例,可以使用以下命令进行安装: ``` sudo apt-get update sudo apt-get install mysql-server ``` 2. 创建新的MySQL实例目录 在Linux系统下,每个MySQL实例需要有独立的数据目录和日志文件等。可以使用以下命令创建一个新的MySQL实例目录: ``` sudo mkdir /var/lib/mysql2 ``` 3. 复制MySQL配置文件 每个MySQL实例需要有独立的配置文件,可以通过复制默认配置文件来创建新的配置文件。以Ubuntu系统为例,可以使用以下命令复制默认配置文件: ``` sudo cp /etc/mysql/my.cnf /etc/mysql/my2.cnf ``` 4. 修改新的配置文件 修改新的配置文件,使其指向新的数据目录和日志文件等。以Ubuntu系统为例,可以使用以下命令编辑新的配置文件: ``` sudo vi /etc/mysql/my2.cnf ``` 在文件中修改以下内容: ``` [client] port = 3307 socket = /var/run/mysqld/mysqld2.sock [mysqld_safe] pid-file = /var/run/mysqld/mysqld2.pid socket = /var/run/mysqld/mysqld2.sock [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld2.pid socket = /var/run/mysqld/mysqld2.sock port = 3307 basedir = /usr datadir = /var/lib/mysql2 tmpdir = /tmp log_error = /var/log/mysql/error2.log ``` 其中,需要修改的内容主要是端口号、数据目录、日志文件等。 5. 初始化新的MySQL实例 使用以下命令初始化新的MySQL实例: ``` sudo mysqld --defaults-file=/etc/mysql/my2.cnf --initialize-insecure --user=mysql ``` 其中,--defaults-file参数指定使用新的配置文件,--initialize-insecure参数表示不设置root密码,--user参数表示启动MySQL进程的用户。 6. 启动新的MySQL实例 使用以下命令启动新的MySQL实例: ``` sudo systemctl start mysql@2.service ``` 其中,2表示新的MySQL实例的编号。 至此,多实例MySQL服务器已经成功安装。可以通过以下命令查看多个MySQL实例的状态: ``` sudo systemctl status mysql@*.service ``` 其中,*表示所有的MySQL实例

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值