之前介绍过相关的基本命令操作:MySQL数据库基础入门基本命令所有操作都是基于单实例的,mysql多实例在实际生产环境中也非常实用,因为必须要掌握。1、什么是多实例?多实例就是在一台服务器上开启多个不同的服务端口(默认3306),运行多个mysql服务进程。这些服务进程通过不同的socket监听不同的服务端口,提供各种服务。所有实例共享一套MYSQL安装程序,但各自使用不同的配置文件、启动程序、数据文件,逻辑上相对独立。多实例的主要作用是充分利用现有的服务器硬件资源,为不同的服务提供数据服务,但是如果某个实例的并发比较高,也会影响其他实例的性能。2、安装多实例环境和准备安装需要先安装mysql,安装过程只需要makeinstall(编译安装)即可。如果使用免费安装程序,只需解压软件包即可。今天的环境是通过免费安装包安装mysql的主程序(其他安装可以参考前面的安装过程进行测试)系统环境[root@centos6~]#cat/etc/redhat-releaseCentOSrelease6.5(Final)[root@centos6~]#uname-r2.6.32-431.el6.x86_64installermysql-5.5.52-linux2.6-x86_64.tar.gz首先下载软件到本地wgethttp://mirrors.sohu。com/mysql/MySQL-5.5/mysql-5.5.52-linux2.6-x86_64.tar.gz创建安装用户[root@centos6~]#groupaddmysql[root@centos6~]#useraddmysql-s/sbin/nologin-gmysql-M[root@centos6~]#tail-1/etc/passwdmysql:x:500:500::/home/mysql:/sbin/nologin创建多实例数据目录[root@centos6tools]#mkdir-p/data/{3306,3307}[root@centos6tools]#tree/data//data/+--3306+--33072directories,0files3.安装MYSQL多实例接下来安装mysql多实例运行解压软件[root@centos6tools]#llmysql-5.5.52-linux2.6-x86_64.tar.gz-rw-r--r--.1rootroot185855000Aug2621:38mysql-5.5.52-linux2.6-x86_64.tar.gz[root@centos6tools]#tarzxfmysql-5.5.52-linux2.6-x86_64.tar.gz复制配置文件[root@centos6mysql-5.5.52-linux2.6-x86_64]#cpsupport-files/my-small.cnf/data/3306/my.cnf[root@centos6mysql-5.5.52-linux2.6-x86_64]#cpsupport-files/mysql.server/data/3306/mysql[root@centos6mysql-5.5.52-linux2.6-x86_64]#cpsupport-files/my-small.cnf/data/3307/my.cnf[root@centos6mysql-5.5.52-linux2.6-x86_64]#cpsupport-files/mysql.server/data/3307/mysql为规范安装路径,将免费安装包复制到应用目录[root@centos6tools]#mvmysql-5.5.52-linux2。6-x86_64/application/mysql[root@centos6tools]#ll/application/mysqltotal72drwxr-xr-x.2rootroot4096Dec917:15bin-rw-r--r--.171613141517987Aug2619:24COPYINGdrwxr-xr-x.3rootxroot4096Dec295drec:15docsdrwxr-xr-x.3rootroot4096Dec917:15include-rw-r--r--.1716131415301Aug2619:24INSTALL-BINARYdrwxr-xr-x.3rootroot4096Dec917:15libdrwxr-xr-x.4rootroot4096Dec9rwxr17:1510rootroot4096Dec917:15mysql-test-rw-r--r--.17161314152496Aug2619:24READMEdrwxr-xr-x.2rootroot4096Dec917:15scriptsdrwxr-xr-x.27rootroot4096Dec917:15sharedrwxr-xr-x。4rootroot4096Dec917:15sql-benchdrwxr-xr-x.2rootroot4096Dec917:15support-files修改配置文件和启动文件因为是多实例,需要修改参数。修改后的配置文件如下:配置文件my.cnf[client]port=3307socket=/data/3307/mysql.sock[mysql]no-auto-rehash[mysqld]user=mysqlport=3307socket=/data/3307/mysql.sockbasedir=/application/mysqldatadir=/data/3307/data#log_long_format#log-error=/data/3307/error.log#log-slow-queries=/data/3307/slow.logpid-file=/data/3307/mysql.pidserver-id=3[mysqld_safe]log-error=/data/3307/mysql3307.errpid-file=/data/3307/mysqld.pid启动程序文件mysql[root@backup3307]#catmysql#!/bin/shinitport=3307mysql_user="root"mysql_pwd="migongge"CmdPath="/application/mysql/bin"mysql_sock="/data/${port}/mysql.sock"#startupfunction_start_mysql(){if[!-e"$mysql_sock"];thenprintf"StartingMySQL...\n"/bin/sh${CmdPath}/mysqld_safe--defaults-file=/data/${port}/my.cnf2>&1>/dev/null&elseprintf"MySQL正在运行...\n"exitfi}#stopfunctionfufunction_stop_mysql(){if[!-e"$mysql_sock"];thenprintf"MySQLisstopped...\n"exitelseprintf"StopingMySQL...\n"${CmdPath}/mysqladmin-u${mysql_user}-p${mysql_pwd*)printf"用法:/data/${port}/mysql{start|stop|restart}\n》esac的其他配置可以参考配置文件修改,实现多实例初始化[root@centos63306]#/application/mysql/scripts/mysql_install_db--basedir=/application/mysql--datadir=/data/3306/data--user=mysqlInstallingMySQLsystemtables...16120918:02:17[警告]“THREAD_CONCURRENCY”已弃用,将在未来版本中删除。16120918:02:17[注意]/application/mysql/bin/mysqld(mysqld5.5.52-log)startingasprocess3336...OKFillinghelptables...16120918:02:17[警告]'THREAD_CONCURRENCY'已弃用并将removedinafuturerelease.16120918:02:17[Note]/application/mysql/bin/mysqld(mysqld5.5.52-log)startingasprocess3343...OKTostartmysqldatboottimeyouhavetocopysupport-files/mysql.servertotherightplaceforyoursystemPLEASEREMEMBERTOSETAPASSWORTHEMYSQLrootUSER!Todoso,starttheserver/binapplication/mysql:Todoso,启动服务器/bin应用程序/mysql:mysqladmin-urootpassword'new-password'/application/mysql/bin/mysqladmin-uroot-hcentos6password'new-password'或者,您可以运行:/application/mysql/bin/mysql_secure_installation,这也将为您提供删除测试数据库和默认创建的匿名用户的选项。强烈建议将此用于生产服务器。有关更多说明,请参阅手册。/mysql/bin/mysqld_safe&YoucantesttheMySQLdaemonwithmysql-test-run.plcd/application/mysql/mysql-test;perlmysql-test-run.pl有问题请到http://bugs.mysql.com/初始化成功后,一个数据目录会在数据下生成目录数据和一些文件[root@centos63306]#ll/data/3306/data/total1136drwx------.2mysqlroot4096Dec918:02mysql-rw-rw----.1mysqlmysql27693Dec918:02mysql-bin.000001-rw-rw----.1mysqlmysql1114546Dec918:02mysql-bin。000002-rw-rw----.1mysqlmysql38Dec918:02mysql-bin.indexdrwx------.2mysqlmysql4096Dec918:02performance_schemadrwx------.2mysqlroot4096Dec918:02test另一个实例的初始化,请参考上面的操作,操作过程不再一一介绍[root@centos63307]#ll/data/3307/data/total1136drwx------.2mysqlroot4096Dec918:40mysql-rw-rw----.1mysqlmysql27693Dec918:40mysql-bin.000001-rw-rw-----.1mysqlmysql1114546Dec918:40mysql-bin.000002-rw-rw----.1mysqlmysql38Dec918:40mysql-bin.indexdrwx------.2mysqlmysql4096Dec918:40performance_schemadrwx------.2mysqlroot4096Dec918,启动Multi-instance并登录启动服务[root@backup3307]#/data/3306/mysqlstartStartingMySQL...[root@backup3307]#lsof-i:3306COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEmysqld19986mysql10uIPv4909670t0TCP*:mysql(LISTEN)[root@backup3307]7/data/330/mysqlstartStartingMySQL...[root@backup3307]#lsof-i:3307COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEmysqld21648mysql11uIPv4928990t0TCP*:opsession-prxy(LISTEN)检查端口[root@backup3307]#netstat-lntup|grepmysqltcp000.0.0.0:33070.0.0.0:*LISTEN21648/mysqldtcp000.0.0.0:33060.0.0.0:*LISTEN19986/mysqld登录多个实例数据库[root@backup~]#mysql-S/data/3306/mysql.sockWelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis1Serverversion:5.5.51-logSourcedistributionCopyright(c)2000,2016,Oracleand/oritsaffiliates.Allrightsporacleandtraderegistered.Oracle/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>createdatabasedata3306;QueryOK,1rowaffected(0.00sec)mysql>showdatabases;+--------------------+|数据库|+--------------------+|information_schema||data3306||mysql||performance_schema||test|+--------------------+5rowsinset(0.00sec)mysql>quitBye[root@backup~]#mysql-S/data/3307/mysql.sockWelcometotheMySQLmonitor。命令sendwith;or\g.YourMySQLconnectionidis1Serverversion:5.5.51SourcedistributionCopyright(c)2000,2016,Oracleand/oritsaffiliates.Allrightsreserved.OracleisareregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'tocleanstatement.mysqlthecurrentinputOracle是OracleCorporation和/或其附属公司的注册商标。>showdatabases;+--------------------+|数据库|+--------------------+|information_schema||mysql||performance_schema||test|+--------------------+4rowsinset(0.05sec)登录成功,在3306实例创建数据库,但是3307实例上没有创建的数据显示这两个实例是独立的。数据目录的编号和路径就够了。最后在开机自启动中加入多实例数据库启动命令即可。如果需要关注更多其他技术方向的文章,也可以关注米公公个人微信公众号公众号:米公公技术之路微信关注米公公技术之路公众号对话框回复关键字:1024即可获取一份最新技术干货:包括系统运维、数据库、redis、MogoDB、电子书、Java基础课程、Java实战项目、架构师综合教程、架构师实战项目、大数据、Docker容器、ELKStack、机器学习、BAT面试精讲视频等。
