mysql多实例的好处就不多说了 这里直接进入主题

一、格式化并挂载文件系统
将/dev/sdb 格式化为ext4
 
  
  1. mkfs.ext4 -L DB /dev/sdb  
  2. mkdir /disk2  
  3. mount /dev/sdb /disk2 
在配置文件fstab中添加如下内容
 
 
  
  1. /dev/sdb                /disk2                          ext4    defaults        0 0 
二、建立如下格式目录
/disk2/mysql5.1/data/3316,3317,3318
/disk2/mysql5.2/data/3326,3327,3328
/disk2/mysql5.5/data/3356,3357,3358
 
三、分别编译安装mysql 5.1      5.2    5.5三个包
下载地址分别为:
http://mirror.trouble-free.net/mysql_mirror/Downloads/MySQL-5.1/mysql-5.1.60.tar.gz
http://mirror.trouble-free.net/mysql_mirror/Downloads/MySQL-5.2/mysql-5.2.0-falcon-alpha.tar.gz
http://mirror.trouble-free.net/mysql_mirror/Downloads/MySQL-5.5/mysql-5.5.25a.tar.gz
http://www.cmake.org/files/v2.8/cmake-2.8.6.tar.gz
 
 
  
  1. tar xf mysql-5.1.60.tar.gz  
  2. cd mysql-5.1.60  
  3. ./configure --prefix=/disk2/mysql5.1/ --with-charset=gb2312 --with-extra-charsets=utf8,gb2312 --with-extra-charsets=gbk,gb2312  
  4. make  
  5. make install  
  6.    
  7. ./configure --prefix=/disk2/mysql5.2/ --with-charset=gb2312 --with-extra-charsets=utf8,gb2312 --with-extra-charsets=gbk,gb2312  
  8. make   
  9. make install  
  10.    
  11. tar xf /mysql-5.5.25a.tar.gz  
  12. tar xf cmake-2.8.6.tar.gz  
  13. tar xf cmake-2.8.6.tar.gz  
  14. cd cmake-2.8.6  
  15. ./configure   
  16. make  
  17. make install  
  18. cd ..  
  19. tar xf mysql-5.5.25a.tar.gz  
  20. cd mysql-5.5.25a  
  21. cmake -DCMAKE_INSTALL_PREFIX=/disk2/mysql5.5 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DMYSQL_TCP_PORT=3306 -DWITH_DEBUG=OFF -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock  
  22. make  
  23. make install  
  24. cd /usr/local/webserver/mysql 
 
四、分别初始化以上九个数据目录
 
 
  
  1. cd /disk2/mysql5.1/bin  
  2. ./mysql_install_db --datadir=/disk2/mysql5.1/data/3316 --user=mysql  
  3. ./mysql_install_db --datadir=/disk2/mysql5.1/data/3317 --user=mysql  
  4. ./mysql_install_db --datadir=/disk2/mysql5.1/data/3318 --user=mysql  
  5.    
  6. cd /disk2/mysql5.5/scripts  
  7. ./mysql_install_db --datadir=/disk2/mysql5.5/data/3356 --user=mysql  
  8. ./mysql_install_db --datadir=/disk2/mysql5.5/data/3356 --user=mysql  
  9. ./mysql_install_db --datadir=/disk2/mysql5.5/data/3356 --user=mysql  
  10.    
  11. chown -R mysql:mysql /disk2/mysql5.1/data/*  
  12. chown -R mysql:mysql /disk2/mysql5.2/data/*  
  13. chown -R mysql:mysql /disk2/mysql5.5/data/* 
五、提供配置文件和脚本
 
   
  1. cp /root/mysql-5.1.60/support-files/mysqld_multi.server /etc/init.d/mysql_multi5.1.server  
  2. cp /root/mysql-5.2/support-files/mysqld_multi.server /etc/init.d/mysql_multi5.2.server  
  3. cp /root/mysql-5.5.25a/support-files/mysqld_multi.server /etc/init.d/mysql_multi5.5.server  
  4. sed -i -e "s#basedir=/usr/local/mysql#basedir=/disk2/mysql5.1#" -e "s#bindir=/usr/local/mysql/bin#bindir=/disk2/mysql5.1/bin#"/etc/init.d/mysql_multi5.1.server  
  5. sed -i -e "s#basedir=/usr/local/mysql#basedir=/disk2/mysql5.2#" -e "s#bindir=/usr/local/mysql/bin#bindir=/disk2/mysql5.2/bin#"/etc/init.d/mysql_multi5.2.server  
  6. sed -i -e "s#basedir=/usr/local/mysql#basedir=/disk2/mysql5.5#" -e "s#bindir=/usr/local/mysql/bin#bindir=/disk2/mysql5.5/bin#"/etc/init.d/mysql_multi5.5.server  
  7.  

         配置文件内容如下        

 
 
   
  1. cd /disk2/msyql5.1
  2. ./bin/mysqld_multi --example >> ./mysqld_multi.cnf
  3. vim mysqld_multi.cnf
  4. [mysqld_multi]  
  5. mysqld     = /disk2/mysql5.1/bin/mysqld_safe  
  6. mysqladmin = /disk2/mysql5.1/bin/mysqladmin  
  7. #user       = multi_admin  
  8. #password   = my_password  
  9.    
  10. [mysqld1]  
  11. socket     = /tmp/mysql.sock1  
  12. port       = 3316  
  13. pid-file   = /disk2/mysql5.1/data/3316/hostname.pid3316  
  14. datadir    = /disk2/mysql5.1/data/3316  
  15. language   = /disk2/mysql5.1/share/mysql/english  
  16. user       = mysql  
  17.    
  18. [mysqld2]  
  19. socket     = /tmp/mysql.sock2  
  20. port       = 3317  
  21. pid-file   = /disk2/mysql5.1/data/3317/hostname.pid3317  
  22. datadir    = /disk2/mysql5.1/data/3317  
  23. language   = /disk2/mysql5.1/share/mysql/english  
  24. user       = mysql  
  25.    
  26. [mysqld3]  
  27. socket     = /tmp/mysql.sock3  
  28. port       = 3318  
  29. pid-file   = /disk2/mysql5.1/data/3318/hostname.pid3318  
  30. datadir    = /disk2/mysql5.1/data/3318  
  31. language   = /disk2/mysql5.1/share/mysql/english  
  32. user       = mysql  
  33.            
  34.          cd /disk2/msyql5.2  
  35.          ./bin/mysqld_multi --example >> ./mysqld_multi.cnf  
  36.          vim mysqld_multi.cnf  
  37.          [mysqld_multi]  
  38. mysqld     = /disk2/mysql5.2/bin/mysqld_safe  
  39. mysqladmin = /disk2/mysql5.2/bin/mysqladmin  
  40. #user       = multi_admin  
  41. #password   = my_password  
  42.    
  43. [mysqld1]  
  44. socket     = /tmp/mysql.sock21  
  45. port       = 3326  
  46. pid-file   = /disk2/mysql5.2/data/3326/hostname.pid3326  
  47. datadir    = /disk2/mysql5.2/data/3326  
  48. language   = /disk2/mysql5.2/share/mysql/english/  
  49. user       = mysql  
  50.    
  51. [mysqld2]  
  52. socket     = /tmp/mysql.sock22  
  53. port       = 3327  
  54. pid-file   = /disk2/mysql5.2/data/3327/hostname.pid3327  
  55. datadir    = /disk2/mysql5.2/data/3327  
  56. language   = /disk2/mysql5.2/share/mysql/english/  
  57. user       = mysql  
  58.    
  59. [mysqld3]  
  60. socket     = /tmp/mysql.sock23  
  61. port       = 3328  
  62. pid-file   = /disk2/mysql5.2/data/3328/hostname.pid3328  
  63. datadir    = /disk2/mysql5.2/data/3328  
  64. language   = /disk2/mysql5.2/share/mysql/english/  
  65. user       = mysql  
  66.    
  67. cd /disk2/msyql5.5  
  68.          ./bin/mysqld_multi --example >> ./mysqld_multi.cnf  
  69.          vim mysqld_multi.cnf  
  70. [mysqld_multi]  
  71. mysqld     = /disk2/mysql5.5/bin/mysqld_safe  
  72. mysqladmin = /disk2/mysql5.5/bin/mysqladmin  
  73. #user       = multi_admin  
  74. #password   = my_password  
  75.    
  76. [mysqld4]  
  77. socket     = /tmp/mysql.sock51  
  78. port       = 3356  
  79. pid-file   = /disk2/mysql5.5/data/3356/hostname.pid3356  
  80. datadir    = /disk2/mysql5.5/data/3356  
  81. language   = /disk2/mysql5.5/share/english  
  82. user       = mysql  
  83.    
  84. [mysqld5]  
  85. socket     = /tmp/mysql.sock52  
  86. port       = 3357  
  87. pid-file   = /disk2/mysql5.5/data/3357/hostname.pid3357  
  88. datadir    = /disk2/mysql5.5/data/3357  
  89. language   = /disk2/mysql5.5/share/english  
  90. user       = mysql  
  91.    
  92. [mysqld6]  
  93. socket     = /tmp/mysql.sock53  
  94. port       = 3358  
  95. pid-file   = /disk2/mysql5.5/data/3358/hostname.pid3358  
  96. datadir    = /disk2/mysql5.5/data/3358  
  97. language   = /disk2/mysql5.5/share/english  
  98. user       = mysql 

 

六、测试并启动
检测组是否正常
 
  
  1. ./bin/mysql_multi --defaults-extra-file=/disk2/mysql5.1/mysqld_multi.cnf report  
  2. ./bin/mysql_multi --defaults-extra-file=/disk2/mysql5.1/mysqld_multi.cnf start  
  3. cd /disk2/mysql5.2  
  4. ./bin/mysql_multi --config-file==/disk2/mysql5.2/mysqld_multi.cnf start  
  5. cd /disk2/mysql5.5  
  6. ./bin/mysql_multi --defaults-extra-file=/disk2/mysql5.5/mysqld_multi.cnf start  
  7.    
  8. [root@server54 bin]# netstat -tnlp|grep mysqld  
  9. tcp        0      0 0.0.0.0:3316                0.0.0.0:*                   LISTEN      13777/mysqld          
  10. tcp        0      0 0.0.0.0:3317                0.0.0.0:*                   LISTEN      13790/mysqld          
  11. tcp        0      0 0.0.0.0:3318                0.0.0.0:*                   LISTEN      13797/mysqld          
  12. tcp        0      0 0.0.0.0:3356                0.0.0.0:*                   LISTEN      16836/mysqld          
  13. tcp        0      0 0.0.0.0:3357                0.0.0.0:*                   LISTEN      16843/mysqld          
  14. tcp        0      0 0.0.0.0:3326                0.0.0.0:*                   LISTEN      25719/mysqld          
  15. tcp        0      0 0.0.0.0:3358                0.0.0.0:*                   LISTEN      16849/mysqld          
  16. tcp        0      0 0.0.0.0:3327                0.0.0.0:*                   LISTEN      25728/mysqld          
  17. tcp        0      0 0.0.0.0:3328                0.0.0.0:*                   LISTEN      25732/mysqld 

我再额外说明一点:

因为mysql启动的时候会首先检查/etc目录下是否有my.cnf配置文件,如果你以前用rpm包安装过mysqld会默认生成在/etc/mysql/my.cnf中,如果你想使用多实例,建议重命名这个文件,因为很多无法启动的错误和一些诡异的mysql服务错误是因为这个配置文件导致的