一台服务器上同时运行多个MySQL

 

  
  
  
  
  1. 在一些情况下,我们会在一台服务器上安装多个MySQL,同时对外提供应用服务。这样我们可以更加充分利用现有的资源,控制企业成本。比如,一台SUN T5120机器,8核64个线程,这么充足的资源事实上MySQL并不能充分利用,我们都知道Oracle对多线程的利用要远远高于MySQL(这里我们多少也可以理解一点为什么oracle和sun结合了),尽管在5.4以后MySQL对线程的利用上有了很大改善,将线程的最优利用数从以前的4到8提升到了现在的16个。如果你就安装一个MySQL,那么多数资源就白白浪费了,同时也不能达到理想的状态,那么,我们完全可以在上面同时安装多个MySQL让它为不同的应用提供服务,同一台服务器上管理起来也相对比较方便些。下面我们就来看看如何实现,这里我只介绍两台的安装,再多也是一样的方法。 
  2.  
  3. 实验环境:一台普通PC,CentOS 5.2,mysql-5.1.32-linux-i686-glibc23.tar.gz 
  4.  
  5. 实验说明:MySQL 采用二进制包安装。我们将在Linux系统下安装两个MySQL数据库,这里指的是MySQL这个数据库软件本身,而不是它里面的应用数据库,我们很多时候见到的都是一个MySQL下面创建了多个数据库,也就是show databases的时候你看到的,我们要注意这些差别。 
  6.  
  7. 具体操作: 
  8.  
  9. 安装MySQL。 
  10.  
  11. MySQL1 
  12.  
  13. # groupadd mysql 
  14. # useradd -g mysql mysql 
  15. # tar -xzf /opt/software/mysql-5.1.32-linux-i686-glibc23.tar.gz -C /opt 
  16. # mv mysql-5.1.32-linux-i686-glibc23 mysql1 
  17. # cd /opt/mysql1 
  18. # ./scripts/mysql_install_db –user=mysql 
  19. # chown -R root.mysql . 
  20. # chown -R mysql.mysql data 
  21.  
  22. MySQL2 
  23.  
  24. # groupadd mysql 
  25. # useradd -g mysql mysql 
  26. # tar -xzf /opt/software/mysql-5.1.32-linux-i686-glibc23.tar.gz -C /opt 
  27. # mv mysql-5.1.32-linux-i686-glibc23 mysql2 
  28. # cd /opt/mysql2 
  29. # ./scripts/mysql_install_db –user=mysql 
  30. # chown -R root.mysql . 
  31. # chown -R mysql.mysql data 
  32.  
  33. 两个MySQL数据库已经安装完成,进入data目录下你会看到MySQL已经好默认安装好了3个数据库。接下来我们要做的是启动数据库前的一些准备工作,既然我要在同一台服务器上安装两个MySQL,那么如何区分它们是不同的个体呢,这就需要我们作进一步细化,不同的MYSQL_HOME,不同的 PORT,不同的SOCKET,我们通过这些关键值来对它们进行区别。 
  34.  
  35. MySQL1: 
  36.  
  37. # cp /opt/mysql1/support-files/my-medium.cnf /opt/mysql1/my.cnf 
  38. # vi /opt/mysql1/my.cnf 
  39. [client] 
  40. port = 3306 
  41. socket = /opt/mysql1/data/mysql.sock 
  42.  
  43. [mysqld] 
  44. port = 3306 
  45. socket = /opt/mysql1/data/mysql.sock 
  46.  
  47. MySQL2: 
  48.  
  49. # cp /opt/mysql2/support-files/my-medium.cnf /opt/mysql2/my.cnf 
  50. # vi /opt/mysql2/my.cnf 
  51. [client] 
  52. port = 3307 
  53. socket = /opt/mysql2/data/mysql.sock 
  54.  
  55. [mysqld] 
  56. port = 3307 
  57. socket = /opt/mysql2/data/mysql.sock 
  58.  
  59. 准备就绪,开始启动。 
  60.  
  61. MySQL1: 
  62.  
  63. # export MYSQL_HOME=/opt/mysql1 
  64. # ./bin/mysqld_safe –defaults-file=/opt/mysql1/my.cnf & 
  65.  
  66. MySQL2: 
  67.  
  68. # export MYSQL_HOME=/opt/mysql2 
  69. # ./bin/mysqld_safe –defaults-file=/opt/mysql2/my.cnf & 
  70.  
  71. 检查是否正常,程序是否已经运行,端口是否打开。 
  72.  
  73. # ps -ef |grep mysql 
  74.  
  75. # netstat -an | grep ‘3306 | 3307′ 
  76.  
  77. 连接数据库。 
  78.  
  79. [root@node1 mysql1]# ./bin/mysql –protocol=tcp -P3306 -uroot -e ’show databases’ 
  80. +——————–+ 
  81. | Database | 
  82. +——————–+ 
  83. | information_schema | 
  84. | a | 
  85. | mysql | 
  86. | test | 
  87. +——————–+ 
  88.  
  89. [root@node1 mysql2]# ./bin/mysql –protocol=tcp -P3307 -uroot -e ’show databases’ 
  90. +——————–+ 
  91. | Database | 
  92. +——————–+ 
  93. | information_schema | 
  94. | mysql | 
  95. | test | 
  96. +——————–+ 
  97.  
  98. Note: 使用mysql工具连接数据库,不特别指定protocol选项的话,默认是socket方式连接,这也就是通常我们连接的时候会为什么有时会遇到 mysql.sock找不到,客户端会去服务器找到相应的socket文件,其实,我们可以指定–protocol=tcp来避免这样的连接问题。 protocol选项有4种方式:socket、tcp、pipe和memory,我在MySQL安全中也提到过,如果通过unix socket连接这样可以减少安全问题。 
  99.  
  100. 一个MySQL下面可以创建多个不同应用的数据库,我们只要开启MySQL数据库服务,那么我们通过use database_name便可以很方便的操作各个数据库。 

 

你可能感兴趣的:(数据库,mysql,职场,休闲,运行多个MySQL)