`
lixinye0123
  • 浏览: 333283 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

Linux机上运行多个版本的MySQL

阅读更多
 

  在同一台服务器上部署多个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.共2页。

  至于安装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集群提供更高的可用性和扩展性,通常包含多个数据节点和一个管理节点。在Linux上,这需要安装`mysql-cluster-gtid`包,并配置集群网络、数据节点和管理节点。每个节点都需要安装MySQL并启用集群插件,然后通过...

    linux配置多个ip

    在Linux操作系统中,配置一块网卡(网络接口卡,NIC)以承载多个IP地址是一项常见的网络管理任务。这主要应用于服务器环境,例如负载均衡、高可用性设置或虚拟主机服务。下面将详细介绍如何在Linux中为一个网卡配置...

    linux下PC机和ARM开发板的QT下mysql驱动编译使用

    在Linux环境下,为PC机和ARM开发板编译并使用QT下的MySQL驱动涉及到多个步骤,主要是针对不同平台的编译配置。以下将详细介绍这些过程。 首先,对于PC机上特定版本的QT-x86下的MySQL驱动编译: 1. 安装MySQL驱动...

    Veeam Agent for Linux and mysql 安装说明

    MYSQL_DATABASES=("db1" "db2") # 多个数据库以空格分隔 # 输出文件路径 OUTPUT_FILE="/var/backups/mysql.sql" # 导出每个数据库 for db in "${MYSQL_DATABASES[@]}"; do mysqldump --user=$MYSQL_USER --...

    linux mysql集群

    Linux MySQL 集群是一种高可用性和高性能的解决方案,它可以将多个 MySQL 服务器集成在一起,提供高可用性和负载均衡。MySQL 集群可以 guarantee 数据的一致性和可用性,即使其中一台服务器出现问题或宕机,整个集群...

    linux下安装MySQL

    在Linux环境下安装MySQL...综上所述,Linux环境下安装MySQL并配置远程访问涉及多个步骤,包括源码编译、环境配置、权限调整以及服务管理等。每个环节都需谨慎操作,以确保MySQL数据库系统稳定运行并具备远程访问能力。

    云服务器linux CentOS7上安装mysql8

    在云服务器Linux CentOS7上安装MySQL 8是一个关键任务,涉及到多个步骤和注意事项。以下是详细的安装过程和相关知识点: 首先,需要确保系统未预装MySQL,可以使用`rpm -qa | grep mysql`命令检查,如果有预装,用`...

    Linux下装卸和安装mysql

    在Linux操作系统中,安装...总之,在Linux环境中安装和配置MySQL涉及多个步骤,包括下载RPM包、安装、卸载旧版本、设置密码、修改配置文件以及权限分配。理解这些步骤对于管理和维护Linux上的MySQL数据库至关重要。

    Mysql 5.6 安装 for Linux 6.9

    在Linux系统上安装MySQL 5.6是一个涉及多个步骤的过程,包括安装依赖包、创建系统用户、上传和解压MySQL安装文件、配置MySQL服务器、初始化安装、启动服务以及设置用户权限。以下是对这些步骤的详细解释: 1. **...

    linux中jdk、mysql的安装

    总结来说,安装Linux上的JDK、MySQL和Tomcat涉及到了软件包管理、依赖解决、环境变量配置、服务启动与管理等多个环节。每个步骤都需要细心操作,确保系统能够正确识别和使用这些组件。在实际操作中,还要注意系统的...

    linux mysql5.5 一主多从配置 .docx

    总的来说,配置MySQL 5.5的一主多从架构涉及到多个步骤,包括安装、配置、安全设置和错误排查。理解每个步骤的作用和相互关系对于成功部署至关重要。一旦设置完毕,这个架构可以提供高可用性和负载均衡,同时确保...

    linux上安装mysql.docx

    ### Linux上安装MySQL知识点详解 #### 一、MySQL简介与Linux环境下的意义 MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),因其高效性、稳定性和可扩展性而在Web应用开发中占据重要地位。在Linux操作系统...

    Linux+apache+php+mysql 环境安装

    本篇文章将详细讲解如何在Linux系统上搭建这个环境。 首先,我们需要安装Apache,它是世界上最流行的HTTP服务器软件。可以从Apache官网(http://httpd.apache.org/)下载httpd软件包。以Apache 2.0.64为例,下载后...

    Linux全攻略--MySQL数据库配置与管理[汇编].pdf

    MySQL数据库配置与管理 MySQL是多用户和多线程的中小型SQL数据库系统,由服务器...* 维护索引:可以创建索引,一个表最多可有16个索引,同时,MySQL可以在一个表的多个列上创建索引,一个索引可以由最多15个列组成。

    Web环境搭建:Linux+Nginx+PHP+Mysql+Redis

    如果需要在本地虚拟机上安装 Ubuntu,可前往官网下载服务器版本 ISO 文件: - [Ubuntu 20.04 LTS (Focal Fossa) - "live server" amd64](https://releases.ubuntu.com/20.04/ubuntu-20.04.6-live-server-amd64.iso) ...

    Linux下的apache+php+mysql源文件

    在IT领域,构建一个Web服务器通常涉及到多个组件的集成,如Apache HTTP服务器、PHP解释器以及MySQL数据库。这里我们关注的是在Linux环境下搭建基于Apache、PHP和MySQL的Web开发环境,这个过程通常被称为LAMP(Linux...

    如何使用编译方式在Linux上安装与配置Mysql Apache PHP.pdf

    Mysql 有基于 Windows 运行的版本,也有基于 Linux 运行的版本。基于 Linux 的编译安装的 Mysql 是 mysql 的源码包,可以以上网下载,www.mysq1.CFI 就提供 Mysql 基于 Linux 的源码包下载。源码包的文件名都是 ...

Global site tag (gtag.js) - Google Analytics