mysqld_multi 快速部署多实例

 简单、快速在已经安装Mysql的服务器上,添加几个实例:

mysql的安装目录: /usr/local/mysql-5.6.28/

数据存放目录:/data/mysql/

部署多实例前先把数据库停止:

service mysql stop

添加三个实例:分别为mysql-01 、mysql-02、 mysql-03

创建目录:

  1. mkdir -p /data/{mysql-01,mysql-02,mysql-03} 

授权:

  1. chwon -R mysql:mysql /data/mysql-0* 

复制原来的数据库文件:

  1.  cp -rf /data/mysql/mysql/ /data/mysql-01/ 
  2.  
  3.  cp -rf /data/mysql/mysql/ /data/mysql-02/ 
  4.  
  5. cp -rf /data/mysql/mysql/ /data/mysql-03/ 

原来的my.cnf配置文件备份一下,再修改:

  1. cp /etc/my.cnf /etc/my.cnf.$(date +%F) 

修改配置文件:

  1. cat >/etc/my.cnf<<EOF 
  2.  
  3. [client] 
  4.  
  5. port            = 3306 
  6.  
  7. socket          = /tmp/mysql.sock 
  8.  
  9. [mysqld] 
  10.  
  11. max-connections=800 
  12.  
  13.  
  14.  
  15. [mysqld_multi] 
  16.  
  17. mysqld          = /usr/local/mysql-5.6.28/bin/mysqld_safe 
  18.  
  19. mysqladmin      = /usr/local/mysql-5.6.28/bin/mysqladmin 
  20.  
  21. log             = /usr/local/mysql-5.6.28/mysql_multi.log 
  22.  
  23.  
  24.  
  25. [mysqld1] 
  26.  
  27. datadir = /data/mysql-01 
  28.  
  29. socket = /tmp/mysql.sock-01 
  30.  
  31. port = 3306 
  32.  
  33. user = mysql 
  34.  
  35. performance_schema = off 
  36.  
  37. innodb_buffer_pool_size = 32M 
  38.  
  39. bind_address = 0.0.0.0 
  40.  
  41. skip_name_resolve 
  42.  
  43.  
  44.  
  45. [mysqld2] 
  46.  
  47. datadir = /data/mysql-02 
  48.  
  49. socket = /tmp/mysql.sock-02 
  50.  
  51. port = 3307 
  52.  
  53. user = mysql 
  54.  
  55. performance_schema = off 
  56.  
  57. innodb_buffer_pool_size = 32M 
  58.  
  59. bind_address = 0.0.0.0 
  60.  
  61. skip_name_resolve 
  62.  
  63. EOF 

要注意以上配置中的目录,并保证端口和socket文件不冲突。

  1. [root@lamp-11 ~]# mysqld_multi report 
  2.  
  3. Reporting MySQL servers 
  4.  
  5. MySQL server from group: mysqld1 is not running 
  6.  
  7. MySQL server from group: mysqld2 is not running 
  8.  
  9. MySQL server from group: mysqld3 is not running 

启动实例:可以使用mysqld_multi start 1 一个个启动;

也可以直接:mysqld_multi start 全部一齐启动:

检查效果:

  1. [root@lamp-11 ~]# mysqld_multi report  
  2. Reporting MySQL servers 
  3. MySQL server from group: mysqld1 is running 
  4. MySQL server from group: mysqld2 is running 
  5. MySQL server from group: mysqld3 is running 
 
连接数据库时使用指定的socket文件:
 
  1. [root@lamp-11 ~]# ll /tmp/mysql.sock* 
  2. srwxrwxrwx 1 mysql mysql 0 Dec 26 15:57 /tmp/mysql.sock-01 
  3. srwxrwxrwx 1 mysql mysql 0 Dec 26 15:57 /tmp/mysql.sock-02 
  4. srwxrwxrwx 1 mysql mysql 0 Dec 26 15:57 /tmp/mysql.sock-03