MySQL数据库入门多实例配置

数据库 MySQL
所有的操作都是基于单实例的,mysql多实例在实际生产环境也是非常实用的,因为必须要掌握。

[[279001]]

 前面介绍了相关的基础命令操作:MySQL数据库基础篇之入门基础命令

所有的操作都是基于单实例的,mysql多实例在实际生产环境也是非常实用的,因为必须要掌握。

1、什么是多实例

多实例就是一台服务器上开启多个不同的服务端口(默认3306),运行多个mysql的服务进程,这此服务进程通过不同的socket监听不同的服务端口来提供各在的服务,所有实例之间共同使用一套MYSQL的安装程序,但各自使用不同的配置文件、启动程序、数据文件,在逻辑上是相对独立的。

多实例主要作用是:充分利用现有的服务器硬件资源,为不同的服务提供数据服务,但是如果某个实例并发比较高的,同样是会影响到其它实例的性能

2、安装多实例环境准备

安装前需要先安装mysql,但是只需将安装过程进行到make install即可(编译安装),如果使用免安装程序,只需解压软件包即可,今天的环境是通过免安装包来安装mysql主程序(其它的安装可以参考前面的安装过程自行测试)

系统环境

 

  1. [root@centos6 ~]# cat /etc/redhat-release   
  2. CentOS release 6.5 (Final)  
  3. [root@centos6 ~]# uname -r  
  4. 2.6.32-431.el6.x86_64 

安装程序

mysql-5.5.52-linux2.6-x86_64.tar.gz

首先将软件下载到本地

 

  1. wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.52-linux2.6-x86_64.tar.gz 

创建安装用户

 

  1. [root@centos6 ~]#groupadd mysql  
  2. [root@centos6 ~]#useradd mysql -s /sbin/nologin -g mysql -M  
  3. [root@centos6 ~]#tail -1 /etc/passwd  
  4. mysql:x:500:500::/home/mysql:/sbin/nologin 

创建多实例的数据目录

 

  1. [root@centos6 tools]# mkdir -p /data/{3306,3307}  
  2. [root@centos6 tools]# tree /data/  
  3. /data/  
  4. +-- 3306  
  5. +-- 3307  
  6. 2 directories, 0 files 

3、安装MYSQL多实例

接下来进行安装mysql的多实例操作

解压软件

 

  1. [root@centos6 tools]# ll mysql-5.5.52-linux2.6-x86_64.tar.gz   
  2. -rw-r--r--. 1 root root 185855000 Aug 26 21:38 mysql-5.5.52-linux2.6-x86_64.tar.gz  
  3. [root@centos6 tools]# tar zxf mysql-5.5.52-linux2.6-x86_64.tar.gz 

拷贝配置文件

 

  1. [root@centos6 mysql-5.5.52-linux2.6-x86_64]# cp support-files/my-small.cnf /data/3306/my.cnf  
  2. [root@centos6 mysql-5.5.52-linux2.6-x86_64]# cp support-files/mysql.server /data/3306/mysql  
  3. [root@centos6 mysql-5.5.52-linux2.6-x86_64]# cp support-files/my-small.cnf /data/3307/my.cnf  
  4. [root@centos6 mysql-5.5.52-linux2.6-x86_64]# cp support-files/mysql.server /data/3307/mysql 

为一规范安装路径,将免安装包拷贝到应用程序目录下

 

  1. [root@centos6 tools]# mv mysql-5.5.52-linux2.6-x86_64 /application/mysql  
  2. [root@centos6 tools]# ll /application/mysql  
  3. total 72  
  4. drwxr-xr-x.  2 root root   4096 Dec  9 17:15 bin  
  5. -rw-r--r--.  1 7161 31415 17987 Aug 26 19:24 COPYING  
  6. drwxr-xr-x.  3 root root   4096 Dec  9 17:15 data  
  7. drwxr-xr-x.  2 root root   4096 Dec  9 17:15 docs  
  8. drwxr-xr-x.  3 root root   4096 Dec  9 17:15 include  
  9. -rw-r--r--.  1 7161 31415   301 Aug 26 19:24 INSTALL-BINARY  
  10. drwxr-xr-x.  3 root root   4096 Dec  9 17:15 lib  
  11. drwxr-xr-x.  4 root root   4096 Dec  9 17:15 man  
  12. drwxr-xr-x. 10 root root   4096 Dec  9 17:15 mysql-test  
  13. -rw-r--r--.  1 7161 31415  2496 Aug 26 19:24 README  
  14. drwxr-xr-x.  2 root root   4096 Dec  9 17:15 scripts  
  15. drwxr-xr-x. 27 root root   4096 Dec  9 17:15 share  
  16. drwxr-xr-x.  4 root root   4096 Dec  9 17:15 sql-bench  
  17. drwxr-xr-x.  2 root root   4096 Dec  9 17:15 support-files 

修改配置文件与启动文件

因为是多实例,其中参数需要修改,修改后的配置文件如下:配置文件my.cnf

 

  1. [client]  
  2. port = 3307  
  3. socket = /data/3307/mysql.sock  
  4. [mysql]  
  5. no-auto-rehash  
  6. [mysqld] user = mysql  
  7. port = 3307  
  8. socket = /data/3307/mysql.sock  
  9. basedir = /application/mysql  
  10. datadir = /data/3307/data  
  11. #log_long_format  
  12. #log-error = /data/3307/error.log  
  13. #log-slow-queries = /data/3307/slow.log 
  14.  pid-file = /data/3307/mysql.pid  
  15. server-id = 3      
  16. [mysqld_safe]  
  17. log-error=/data/3307/mysql3307.err  
  18. pid-file=/data/3307/mysqld.pid 

启动程序文件mysql

 

  1. [root@backup 3307]# cat mysql  
  2. #!/bin/sh  
  3. init port=3307  
  4. mysql_user="root"  
  5. mysql_pwd="migongge"  
  6. CmdPath="/application/mysql/bin"  
  7. mysql_sock="/data/${port}/mysql.sock"  
  8. #startup  
  9. function_start_mysql() {  
  10. if [ ! -e "$mysql_sock" ];then  
  11.    printf "Starting MySQL...\n"  
  12. /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &  
  13. else  
  14.   printf "MySQL is running...\n"  
  15. exit  
  16. fi  
  17.  
  18. #stop function  
  19. function_stop_mysql() {  
  20. if [ ! -e "$mysql_sock" ];then  
  21. printf "MySQL is stopped...\n" 
  22.  exit  
  23. else  
  24. printf "Stoping MySQL...\n"  
  25. ${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown  
  26. fi  
  27.  
  28. #restart function  
  29. function_restart_mysql() {  
  30.    printf "Restarting MySQL...\n"  
  31.    function_stop_mysql  
  32.    sleep 2  
  33.    function_start_mysql  
  34.  
  35. case $1 in  
  36. start)  
  37. function_start_mysql  
  38. ;;  
  39. stop)  
  40. function_stop_mysql  
  41. ;;  
  42. restart)  
  43. function_restart_mysql  
  44. ;;  
  45. *)  
  46. printf "Usage: /data/${port}/mysql {start|stop|restart}\n"  
  47. esac 

其它的配置可参考配置文件进行修改即可

多实例初始化操作

 

  1. [root@centos6 3306]# /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/data/3306/data --user=mysql  
  2. Installing MySQL system tables...  
  3. 161209 18:02:17 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.  
  4. 161209 18:02:17 [Note] /application/mysql/bin/mysqld (mysqld 5.5.52-log) starting as process 3336 ...  
  5. OK  
  6. Filling help tables...  
  7. 161209 18:02:17 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.  
  8. 161209 18:02:17 [Note] /application/mysql/bin/mysqld (mysqld 5.5.52-log) starting as process 3343 ...  
  9. OK  
  10. To start mysqld at boot time you have to copy  
  11. support-files/mysql.server to the right place for your system  
  12. PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !  
  13. To do so, start the server, then issue the following commands:  
  14. /application/mysql/bin/mysqladmin -u root password 'new-password'  
  15. /application/mysql/bin/mysqladmin -u root -h centos6 password 'new-password'  
  16. Alternatively you can run:  
  17. /application/mysql/bin/mysql_secure_installation  
  18. which will also give you the option of removing the test  
  19. databases and anonymous user created by default.  This is  
  20. strongly recommended for production servers.  
  21. See the manual for more instructions.  
  22. You can start the MySQL daemon with:  
  23. cd /application/mysql ; /application/mysql/bin/mysqld_safe &  
  24. You can test the MySQL daemon with mysql-test-run.pl  
  25. cd /application/mysql/mysql-test ; perl mysql-test-run.pl  
  26. Please report any problems at http://bugs.mysql.com/ 

初始化成功后,会在数据目录下产生一个数据目录data和一些文件

 

  1. [root@centos6 3306]# ll /data/3306/data/  
  2. total 1136  
  3. drwx------. 2 mysql root     4096 Dec  9 18:02 mysql  
  4. -rw-rw----. 1 mysql mysql   27693 Dec  9 18:02 mysql-bin.000001  
  5. -rw-rw----. 1 mysql mysql 1114546 Dec  9 18:02 mysql-bin.000002  
  6. -rw-rw----. 1 mysql mysql      38 Dec  9 18:02 mysql-bin.index  
  7. drwx------. 2 mysql mysql    4096 Dec  9 18:02 performance_schema  
  8. drwx------. 2 mysql root     4096 Dec  9 18:02 test 

另一个实例的初始化请参考上述操作进行,操作过程不再一一介绍

 

  1. [root@centos6 3307]# ll /data/3307/data/  
  2. total 1136  
  3. drwx------. 2 mysql root     4096 Dec  9 18:40 mysql  
  4. -rw-rw----. 1 mysql mysql   27693 Dec  9 18:40 mysql-bin.000001  
  5. -rw-rw----. 1 mysql mysql 1114546 Dec  9 18:40 mysql-bin.000002  
  6. -rw-rw----. 1 mysql mysql      38 Dec  9 18:40 mysql-bin.index  
  7. drwx------. 2 mysql mysql    4096 Dec  9 18:40 performance_schema  
  8. drwx------. 2 mysql root     4096 Dec  9 18:40 test 

4 、启动多实例并登录

启动服务

 

  1. [root@backup 3307]# /data/3306/mysql start  
  2. Starting MySQL...  
  3. [root@backup 3307]# lsof -i :3306  
  4. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME  
  5. mysqld 19986 mysql 10u IPv4 90967 0t0 TCP *:mysql (LISTEN)  
  6. [root@backup 3307]# /data/3307/mysql  
  7. start Starting MySQL...  
  8. [root@backup 3307]# lsof -i :3307  
  9. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME  
  10. mysqld 21648 mysql 11u IPv4 92899 0t0 TCP *:opsession-prxy (LISTEN) 

检查端口

 

  1. [root@backup 3307]# netstat -lntup|grep mysql  
  2. tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 21648/mysqld 
  3. tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 19986/mysqld 

登陆多实例数据库

 

  1. [root@backup ~]# mysql -S /data/3306/mysql.sock  
  2. Welcome to the MySQL monitor. Commands end with ; or \g.  
  3. Your MySQL connection id is 1  
  4. Server version: 5.5.51-log Source distribution  
  5. Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. 
  6. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
  7. mysql> create database data3306;  
  8. Query OK, 1 row affected (0.00 sec)  
  9. mysql> show databases;  
  10. +--------------------+  
  11. | Database |  
  12. +--------------------+  
  13. | information_schema |  
  14. | data3306 |  
  15. | mysql |  
  16. | performance_schema |  
  17. | test |  
  18. +--------------------+  
  19. 5 rows in set (0.00 sec)  
  20. mysql> quit  
  21. Bye  
  22. [root@backup ~]# mysql -S /data/3307/mysql.sock  
  23. Welcome to the MySQL monitor.  
  24. Commands end with ; or \g.  
  25. Your MySQL connection id is 1  
  26. Server version: 5.5.51 Source distribution  
  27. Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. 
  28. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
  29. mysql> show databases;  
  30. +--------------------+  
  31. | Database |  
  32. +--------------------+  
  33. | information_schema |  
  34. | mysql |  
  35. | performance_schema |  
  36. | test |  
  37. +--------------------+  
  38. 4 rows in set (0.05 sec) 

成功登陆,并在3306实例中创建数据库,但是3307实例上查看并没有创建过的数据,说明两个实例是独立的

注:如果再需要新增一个实例,基本的配置步骤同上述一样,只需要相应修改配置文件与启动程序文件中的端口号与数据目录的路径即可,最后可以将多实例数据库启动命令加入开机自启动。

更多关于Mysql相关技术文章,请持续关注民工哥技术之路。如需要关注更多其它技术方向的文章,也可以关注民工哥的个人微信公众号:民工哥技术之路,关注 民工哥技术之路 微信公众号对话框回复关键字:1024 可以获取一份最新整理的技术干货:包括系统运维、数据库、redis、MogoDB、电子书、Java基础课程、Java实战项目、架构师综合教程、架构师实战项目、大数据、Docker容器、ELK Stack、机器学习、BAT面试精讲视频等。

 

 

责任编辑:庞桂玉 来源: segmentfault
相关推荐

2011-06-29 14:01:30

多数据库实例效率

2013-11-26 16:32:03

MYSQLMYSQL配置

2010-06-13 11:29:51

MySQL数据库

2011-04-06 09:59:00

MySQL数据库主从复制

2010-06-12 14:40:28

2011-07-05 10:16:16

Qt 数据库 SQLite

2010-05-12 18:41:34

MySQL数据库

2010-06-09 17:36:45

MySQL数据库同步

2011-07-12 16:41:14

mysql处理异常

2011-07-05 16:08:10

2010-04-02 16:03:20

Oracle数据库

2011-08-04 09:08:09

Vertica多数据库实例端口

2017-05-19 09:03:17

MySQL安装方案

2011-02-28 15:45:12

2015-10-22 16:26:59

MySQL数据库双主配置

2011-04-14 11:09:14

MySQL数据库

2009-12-31 11:10:01

2010-06-02 11:34:23

MySQL 数据库导入

2011-07-05 18:04:45

QT Mysql

2019-11-20 09:08:46

PostgreSQL数据库
点赞
收藏

51CTO技术栈公众号