MySQL中怎么实现多实例配置

  

MySQL中怎么实现多实例配置,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

什么是MySQL多实例?

简单地说,MySQL多实例就是在一台服务器上同时开启多个不同的服务端口(如:3306、3307),同时运行多个MySQL服务进程,这些服务进程通过不同的套接字监听不同的服务端口来提供服务。

这些MySQL多实例共用一套MySQL安装程序,使用不同的my.cnf(也可以相同)配置文件,启动程序(也可以相同)和数据文件。在提供服务时,多实例MySQL在逻辑上看来是各自独立的,它们根据配置文件的对应设定值,获得服务器相应数量的硬件资源。

打个比方吧,MySQL多实例就相当于房子的多个卧室,每个实例可以看作一间卧室,整个服务器就是一套房子,服务器的硬件资源(cpu、男性、磁盘),软件资源(CentOS操作系统)可以看作房子的卫生间,厨房,客厅,是房子的共用资源。若你是北漂的小伙伴,与朋友一起租房子,相信更好理解,大家蜗居在一起,休息在自己的卧室,出来活动肯定是要共用上述公共资源。这样就可以很好的理解MySQL多实例了。

其实很多网络服务都是可以配置多实例的,例如nginx, Apache haproxy,复述等都可以配置多实例。这在门户网站使用都很广泛。

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

环境:CentOS7.5,编译安装MariaDB-10.2.15版本,软件安装目录:/app/MySQL/

1)创建运行的目录环境

[root@centos7  ~] #, mkdir  -p /mysqldb/{3306、3307、3308}/{等,插座、pid、日志、数据本}   [root@centos7  ~) #, chown  -R  mysql: mysql /mysqldb/

2)初始化数据库

[root@centos7  ~] #, cd /app/mysql/(root@centos7  mysql) #,脚本/mysql_install_db ——datadir=/mysqldb/3306/数据/,- - -用户=mysql ——basedir=/app/mysql/,   (root@centos7  mysql) #,脚本/mysql_install_db ——datadir=/mysqldb/3307/数据/,——用户=mysql  basedir=/app/mysql/[root@centos7  mysql) #,脚本/mysql_install_db ——datadir=/mysqldb/3308/数据/,- - -用户=mysql ——basedir=/app/mysql/

以上是编译安装的,安装目录为/app/mysql/,需要先进入软件的安装目录然后执行初始化脚本,如果是百胜安装的包,则直接运行mysql_install_db命令即可

3)提供配置文件并按需要修改

(root@centos7  mysql) #, cp 支持文件/my-huge.cnf /mysqldb。/3306/etc/my . cnf中所做   (root@centos7  mysql) #, cp 支持文件/my-huge.cnf /mysqldb。/3307/etc/my . cnf中所做   (root@centos7  mysql) #, cp 支持文件/my-huge.cnf /mysqldb。/3308/etc/my . cnf中所做   [root@centos7  mysqldb] #, cd /mysqldb/[root@centos7  mysqldb] #, vim  3306。/etc/my . cnf中所做   (mysqld)   port ,,,,,,=, 3306   datadir ,,,,=,/mysqldb/3306/数据   socket ,,,,,=,/mysqldb/3306/套接字/mysql.sock   [root@centos7  mysqldb] #, vim  3307/etc/my.cnf , #按以上配置示例更改   [root@centos7  mysqldb] #, vim  3308/etc/my . cnf中所做

4)提供服务启动脚本

[root@centos7  ~] #, cat  mysqld , #脚本示例   # !/bin/bash      端口=3306,,#需要修改为当前实例的端口号   mysql_user=皉oot"   mysql_pwd=?“   cmd_path=?app/mysql/bin",, #安装目录下的垃圾箱   mysql_basedir=?mysqldb",, #实例数据库文件所在目录   mysql_sock=? {mysql_basedir}/${港口}/套筒/mysql.sock"      function_start_mysql ()   {   ,,,if [!大敌;-e “mysql_sock"美元;,);   ,,,,,printf “Starting  MySQL…\ n"   ,,,,,$ {cmd_path}/mysqld_safe ——defaults-file=$ {mysql_basedir}/${港口}/etc/my.cnf ,,祝辞,/dev/null ,,   ,,,   ,,,,,printf “MySQL  is 运行…\ n"   ,,,,,退出   ,,fi   }         function_stop_mysql ()   {   ,,,if [!大敌;-e “mysql_sock"美元;,);   ,,,,,,printf “MySQL  is 停止…\ n"   ,,,,,,退出   ,,,   ,,,,,,printf “Stoping  MySQL…\ n"   ,,,,,,$ {cmd_path}/mysqladmin  -u  $ {mysql_user}, - p $ {mysql_pwd}, -S  $ {mysql_sock},关闭   fi。才能   }         function_restart_mysql ()   {   ,,,printf “Restarting  MySQL…\ n"   ,,function_stop_mysql   ,,sleep  2   ,,function_start_mysql   }      case  1美元,   开始)   ,,function_start_mysql   ;;   停止)   ,,function_stop_mysql   ;;   重启)   ,,function_restart_mysql   ;;   *)   ,,,printf “用法:,$ {mysql_basedir}/${港口}/bin/mysqld {启动|停止|重启}\ n"   esac   (root@centos7  ~) #, cp  mysqld /mysqldb/3306/bin/(root@centos7  ~) #, cp  mysqld /mysqldb/3307/bin/(root@centos7  ~) #, cp  mysqld /mysqldb/3308/bin/(root@centos7  ~) #, vim /mysqldb/3306/bin/mysqld   端口=3306   (root@centos7  ~) #, vim /mysqldb/3307/bin/mysqld   端口=3307   (root@centos7  ~) #, vim /mysqldb/3308/bin/mysqld   端口=3308

MySQL中怎么实现多实例配置