在同一台服务器上部署多个MySQL服务,可以有效提高机器利用率。而且,将不同内容分属不同服务上,也相对更安全些。

MySQL提供了mysqld_multi,但实际应用中没有人用它。弊端:

1,暂停、重启,会导致所有服务都停下来。

2,配置文件冗长,拆分、迁移时麻烦。

业内比较常用的方法是,将数据库数据文件和配置文件,以及开启关闭脚本,共同放在一个目录下。启动服务时,作为一个单独的服务;关闭时对其他服务没有影响。搬迁时,只要将这个目录迁移到目标机器上就OK了。

一个典型的例子:

10.10.82.83 [server2]$ cat start.sh

#!/bin/sh

rundir="/opt/server2";

echo $rundir;

/usr/local/mysql/bin/mysqld_safe --defaults-file="$rundir"/my.cnf --pid-file="$rundir"/mysql.pid --datadir="$rundir"/var --socket="$rundir"/mysql.sock --log-error="$rundir"/err.log --log-slow-queries="$rundir"/slow_query.log&

上例中使用的MySQL是按照官方建议安装在/usr/local/mysql下的。

有时候需要在同一台服务器上使用多个不同版本,比如,测试新版本等。按照以上逻辑,将新MySQLD安装在 /usr/local/mysql-new下,修改 start.sh 为 /usr/local/mysql-new/bin/mysqld_safe。数据库可以正常启动,但是,观察发现并不是新版本。原因何在?

官方的解释是:需要下载源代码版本,编译时指定运行目录。其实并非必须如此。

研究mysqld_safe文件,发现其逻辑为:

A,从命令行取配置参数

B,从配置文件取配置参数

C,对于mysqld的目录(basedir)和数据文件目录(datadir),如果以上都没有在配置中指定,则先检查当前目录是否可用,否则设置/usr/local/mysql为默认。

所以,虽然使用的是mysql-new下的mysqld_safe,但运行的还是/usr/local/mysql/bin/mysqld,也就是旧版本。需要相应修改启动脚本,或者是配置文件:

#!/bin/sh

rundir="/opt/server0";

echo $rundir;

/usr/local/mysql-new/bin/mysqld_safe --defaults-file="$rundir"/my.cnf --ledir=/usr/local/mysql-new/bin --basedir=/usr/local/mysql-new --pid-file="$rundir"/mysql.pid --datadir="$rundir"/var --socket="$rundir"/mysql.sock --log-error="$rundir"/err.log --log-slow-queries="$rundir"/slow_query.log&

这样就可以在同一台机器上同时运行多个版本的Mysql了。

##--------------------------下面部份是我偶实验出来滴...

上面部分和我自己的做法有点不同,但原理都是一样,我在服务器上直接就用这样一句 /usr/local/mysql5/bin/mysqld_safe --defaults-file=/etc/my5.cnf & 里面的那些参数全都设置到 my5.cnf文件里了,所以看起来短一些,其实最重要的是--defaults-file,这个参数了,开始不知道有这东东,害偶走了很多弯路.faint.

至于安装mysql的时候我是带的如下参数

./configure --prefix=/usr/local/mysql5 --localstatedir=/var/data/mysql5 --with-unix-socket-path=/tmp/mysql5.sock

这样来区分开不同的数据库的安装路径

如果还想可以使用 /etc/mysqld5 stop 之类的命令,就需要改 /etc/mysqld5 中的stop段,像下面这段代码一样(注意 pid_file='/var/data/mysql5/lookyellowpage.com.pid' #Jack added 这行是加进去了,里面的路径你可以自己指定,目的是为了运行stop时它不去取 /etc/my.cnf 变量里的内容,因为取出来的东西有可能是其它数据库服务的,有可能会出错).

'stop')

# Stop daemon. We use a signal here to avoid having to know the

# root password.

# The RedHat / SuSE lock directory to remove

lock_dir=/var/lock/subsys/mysqlmanager

# If the manager pid_file doesn't exist, try the server's

if test ! -s "$pid_file"

then

pid_file=$server_pid_file

lock_dir=/var/lock/subsys/mysql

fi

pid_file='/var/data/mysql5/lookyellowpage.com.pid' #Jack added

echo $pid_file

if test -s "$pid_file"

then

mysqlmanager_pid=`cat $pid_file`

echo $mysqlmanager_pid

echo $echo_n "Shutting down MySQL"

kill $mysqlmanager_pid

# mysqlmanager should remove the pid_file when it exits, so wait for it.

wait_for_pid removed

# delete lock for RedHat / SuSE

if test -f $lock_dir

then

rm -f $lock_dir

fi

else

log_failure_msg "MySQL manager or server PID file could not be found!"

fi

;;

mysql黄色版_Linux机上运行多个版本的MySQL相关推荐

  1. linux mysql 卸载命令行,mysql卸载命令_Linux下卸载系统自带的MySQL数据库

    摘要 腾兴网为您分享:Linux下卸载系统自带的MySQL数据库,永安期货,央视影音,搜狗阅读,瑞易生活等软件知识,以及winulator,不做手机控app,豆瓣电影app,vr网球4,西方世界的劫难 ...

  2. mysql 磁盘限额_Linux运维知识之为Linux MySQL数据库设置磁盘限额

    本文主要向大家介绍了Linux运维知识之为Linux MySQL数据库设置磁盘限额,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 因为MySQL数据库本身没有磁盘限额的功能,我 ...

  3. 拒绝访问:终端上运行的LabVIEW版本,与主机计算机上运行的LabVIEW版本不同。对于实时终端,可通过MAX修改终端的语言环境,确保终端语言与主机语言一致。

    原文连接:zzy0516alex的博客-CSDN博客 该问题为myrio上运行的labview环境与电脑中的labview版本不同. 解决方法为打开"NIMAX",点击" ...

  4. rpm mysql java 驱动_Linux下安装MySQL(rpm方式)

    之前一直想捣鼓以源码包的形式安装MySQL,但是不管我下的什么版本的MySQL的tar包,解压都会出错.哎,索性还是走回rpm的安装方式吧. 1:在安装rpm之前,需要把Linux自带的MySQL以及 ...

  5. mysql mysql is a_MySQL学习记录1(基础)(MySQL in a nutshell)_MySQL

    记得当时腾讯实习生一面的时候被面试官问会不会用数据库,我回答会,但是只会比较基础....最后还被问这么多东西掌握得不好(幸好没用"不会"),为什么不找时间补补.....被狠狠地鄙视 ...

  6. python手机版怎么用-QPython,一个在手机上运行Python的神器

    之前安利过一款手机上运行Python的神器Termux,不过Termux的使用比较重,它实际是一款linux系统模拟器,安装好Termux后还要再安装python,并且是全命令行操作,一些读者使用起来 ...

  7. qpython手机版-QPython,一个在手机上运行Python的神器

    之前安利过一款手机上运行Python的神器Termux,不过Termux的使用比较重,它实际是一款linux系统模拟器,安装好Termux后还要再安装python,并且是全命令行操作,一些读者使用起来 ...

  8. python手机版怎么运行项目或脚本-python可以在手机上运行吗

    python可以在手机上运行吗? python可以在手机上运行.QPython+就是一个Android设备上的脚本引擎,提供可在Android手机或平板电脑上运行的嵌入型Python解释器,控制台,编 ...

  9. python手机版-QPython,一个在手机上运行Python的神器

    image Qpython是一个Python引擎,只能运行在安卓系统上,相比Termux,它可以全图形界面操作,非常友好. 内置了一个Python编辑器,可以直接在手机上写Python代码,支持缩进, ...

最新文章

  1. 维基百科创始人:将欧盟隐私规定推至全球将带来灾难
  2. 深入了解以太坊虚拟机第3部分——动态数据类型的表示方法
  3. 【CodeForces - 1027C】Minimum Value Rectangle (数学,公式化简,思维,卡常卡memset)
  4. luogu P1046 陶陶摘苹果
  5. 计算机组装与维护报告论文,计算机组装与维护实习报告范文
  6. java 多线程 选择题_Java多线程之三道多线程练习题
  7. express框架日志处理组件morgan
  8. kafka(五)服务器配置优化
  9. Visual Studio报错:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值...
  10. 强制选择“你是不是喜欢我” python实现
  11. 国科大学习资料--机器人学导论(张正涛)--2014年期末考试试卷(含答案)
  12. selenium弹窗处理,包括Javascript弹窗、HTML弹出层和Windows弹窗
  13. 计算机管理格式化硬盘,电脑格式化磁盘的方法步骤图
  14. 从学员角度体验教练技术之考驾照
  15. gimtehseet工时管理系统介绍
  16. 82. 采用 OPA5 开发支持页面跳转的 SAP UI5 集成测试用例
  17. Lesson 15 Fifty pence worth of trouble
  18. mitm 和嗅探攻击_中间人攻击(MITM)第2部分-数据包嗅探器
  19. 基于视觉的车道线识别技术在智能车导航中的应用研究
  20. 关于热是什么与人体怎么感受到热的笔记

热门文章

  1. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十二║Vue实战:个人博客第一版(axios+router)...
  2. springboot ajax返回html
  3. 第四章:手机平板要兼顾-探究碎片
  4. python -- 三元运算符
  5. spartan6不能直接把时钟连到IO上
  6. 让僵冷的翅膀飞起来—从实例谈OOP、工厂模式和重构[by Wayfarer]
  7. Vue 下拉刷新及无限加载组件 - 有你便是晴天 - 博客园
  8. java分布式学习路线
  9. 关于两个jar包中存在包名和类名都完全相同的jar包冲突问题
  10. Android横竖屏切换的生命周期