MySQL多实例配置

1160阅读 0评论2015-05-13 hitwh_Gypsy
分类:Mysql/postgreSQL

在实际的开发过程中,可能会需要在一台服务器上部署多个MYSQL实例,
那建议使用MYSQL官方的解决方案 mysqld_multi.


1、安装好MySQL
这个过程比较简单,就不赘述了。


2、编辑 my.cof:   
本例中比较简单,详细内容参考链接
------------------------------------------------------
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = root
password = 123456
[mysqld3306]
datadir = /usr/local/mysql_3306
port = 3306
socket = /tmp/mysql_3306.sock
log-bin=/usr/local/mysql_3306/mysql-bin
binlog_format=mixed
binlog_cache_size = 32M
expire_logs_days = 30
[mysqld3307]
datadir = /usr/local/mysql_3307
port = 3307
socket = /tmp/mysql_3307.sock
log-bin=/usr/local/mysql_3307/mysql-bin
binlog_format=mixed
binlog_cache_size = 32M
expire_logs_days = 3
------------------------------------------------------


3、创建数据目录
mkdir /usr/local/mysql_3306
mkdir /usr/local/mysql_3307


4、初始化DB
/usr/local/mysql/bin/mysql_install_db --datadir=/usr/local/mysql_3306 --user=mysql
/usr/local/mysql/bin/mysql_install_db --datadir=/usr/local/mysql_3307 --user=mysql
chown mysql:mysql /usr/local/mysql_3306
chown mysql:mysql /usr/local/mysql_3307


5、开启MySQL
mysqld_multi start 3306
mysqld_multi start 3307


查看是否成功:
[root@Gypsy_111 mysql_3306]# netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       


PID/Program name
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      
2575/mysqld
tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      
2461/mysqld
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      
1063/vsftpd
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1052/sshd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
1290/master
tcp        0      0 :::80                       :::*                        LISTEN      
1310/httpd
tcp        0      0 :::22                       :::*                        LISTEN      1052/sshd
tcp        0      0 ::1:25                      :::*                        LISTEN      
1290/master
[root@Gypsy_111 mysql_3306]#


[root@Gypsy_111 ~]# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is running






6、设置root密码

mysqladmin -uroot password 'mysql3306' -S /tmp/mysql_3306.sock
mysqladmin -uroot password 'mysql3307' -S /tmp/mysql_3307.sock


进入MySQL:
mysql -uroot -pmysql3306 -S /tmp/mysql_3306.sock
mysql -uroot -pmysql3307 -S /tmp/mysql_3307.sock


7、至于如何关闭每个实例


第一种方法:
理论上用 mysqld_multi stop 3306 就可以
但是实验证明关闭不了,不知道为什么?




第二种方法:进入数据库,授权一个可以关闭本实例的用户
mysql -uroot -pmysql3306 -S /tmp/mysql_3306.sock
GRANT SHUTDOWN ON *.* TO 'admin'@'localhost' IDENTIFIED BY '3306init0';
flush privileges;


mysql -uroot -pmysql3307 -S /tmp/mysql_3307.sock
GRANT SHUTDOWN ON *.* TO 'admin'@'localhost' IDENTIFIED BY '3307init0';
flush privileges;


***************************************************************************************
mysql> select user,host from mysql.user;
+-------+------------+
| user  | host       |
+-------+------------+
| root  | 127.0.0.1  |
|       | Gypsy\_111 |
| root  | Gypsy\_111 |
|       | localhost  |
| admin | localhost  |
| root  | localhost  |
+-------+------------+
6 rows in set (0.00 sec)

mysql> show grants for admin@localhost;
+------------------------------------------------------------------------------------------------
-----------------+
| Grants for admin@localhost                                                                      
                |
+------------------------------------------------------------------------------------------------
-----------------+
| GRANT SHUTDOWN ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD 

'*F070332A4C00A902B30F07178BDF0AAE4F813B42' |
+------------------------------------------------------------------------------------------------
-----------------+
1 row in set (0.00 sec)
***************************************************************************************

然后:
mysqladmin -uadmin -p3306init0 -S /tmp/mysql_3306.sock shutdown
mysqladmin -uadmin -p3307init0 -S /tmp/mysql_3307.sock shutdown

这样就成功关闭了。


针对 mysqld_multi stop 3306 这种方式为什么关闭不了,请读者多多指教!

参考:

http://blog.chinaunix.net/uid-25760152-id-3472603.html

上一篇:查看LAMP的版本信息
下一篇:mysql多实例的配置和管理