一、需求
有的人服务器性能比较好,安装上一个mysql发现只用到一部分性能,还有大部分没有用,觉得可惜了。比如mysql安装了数据库,如果安装了其它的东西好像不方便维护,能不能同时运行几个mysql数据库呢,答案是肯定的。
二、实现思路
我们知道软件之间的通讯怎么唯一的识别出来呢,如一台服务器运行一堆软件,别人要要发信息给服务器上的某个软件,是怎么找到这个软件的呢?主要是靠:
IP地址:端口号
这样就唯一区分出是与某个具体软件通讯了。
mysql要运行多实例,我是不是把它修改为不同的端口号就解决了呢?比如我要起2个mysql,第1个默认用3306,那么第2个用3307,是不是没有端口冲突了,启动问题解决了吧?
mysql运行主要是靠它的配置文件my.cnf(win为mysq.ini),如果只修改配置里面的端口号,如果启动2个是不是会有一些重复的东西,怎么判断是共用的呢?一个方法是看一下存放的磁盘路径:
datadir:这个是mysql数据文件,如果2个mysql共用一个不是乱套了?得改不能相同
socket:mysql启动和关闭主要是找这个socket的,然后进行进行关闭的,如果共用的话,那一关闭不是2个mysql一起关闭了,这个得改,不能相同。
port:虽然没有磁盘路径,但是你不修改会产生端口冲突,另一个实例启动不起来!
pid-file:这个得改吧,不好共用。
日志文件:log-bin、log-error、slow_query_log_file这些路径也修改一下
还有一个最重要的就是 my.cnf配置文件不能一样吧!一样的话那不是同端口又有一个启动不起来!
这样是不是把mysql外内部都区别了
外部:主要是“ip地址+端口”,同一台机IP地址相同,所以加个端口以区分。
内部:主要是mysql配置文件my.cnf中指定的磁盘路径,不能相同。
这样思路清晰了,是不是弄起来比较容易呢^_^
即使需要修改my.cnf不能让它相同,yum默认是指定/etc/my.cnf,如果有人不小心放了一个在/etc/my.cnf,下次有一个mysql实例启动可能会报错,所以要注意,把/etc/my.cnf移走。
如果方便一点的,最好就是用mysql二进制安装了,因为把/etc/my.cnf移走的话,它会就去各自的目录中查找my.cnf配置文件。
三、例子
例子我就不重新写了,看到网上一个不错的,所以给大家参考一下:
centos-7yum安装(mairadb)实现mysql多实例
https://blog.51cto.com/13466315/2091270
用的是mariadb,其实也可以换成mysql的,基本上mariabdb与mysql是完全兼容的。
网友评论