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] #, vim3308/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 端口=3308MySQL中怎么实现多实例配置