在同一台服务器上部署多个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-cluster-gtid`包,并配置集群网络、数据节点和管理节点。每个节点都需要安装MySQL并启用集群插件,然后通过...
在Linux操作系统中,配置一块网卡(网络接口卡,NIC)以承载多个IP地址是一项常见的网络管理任务。这主要应用于服务器环境,例如负载均衡、高可用性设置或虚拟主机服务。下面将详细介绍如何在Linux中为一个网卡配置...
在Linux环境下,为PC机和ARM开发板编译并使用QT下的MySQL驱动涉及到多个步骤,主要是针对不同平台的编译配置。以下将详细介绍这些过程。 首先,对于PC机上特定版本的QT-x86下的MySQL驱动编译: 1. 安装MySQL驱动...
MYSQL_DATABASES=("db1" "db2") # 多个数据库以空格分隔 # 输出文件路径 OUTPUT_FILE="/var/backups/mysql.sql" # 导出每个数据库 for db in "${MYSQL_DATABASES[@]}"; do mysqldump --user=$MYSQL_USER --...
Linux MySQL 集群是一种高可用性和高性能的解决方案,它可以将多个 MySQL 服务器集成在一起,提供高可用性和负载均衡。MySQL 集群可以 guarantee 数据的一致性和可用性,即使其中一台服务器出现问题或宕机,整个集群...
在Linux环境下安装MySQL...综上所述,Linux环境下安装MySQL并配置远程访问涉及多个步骤,包括源码编译、环境配置、权限调整以及服务管理等。每个环节都需谨慎操作,以确保MySQL数据库系统稳定运行并具备远程访问能力。
在云服务器Linux CentOS7上安装MySQL 8是一个关键任务,涉及到多个步骤和注意事项。以下是详细的安装过程和相关知识点: 首先,需要确保系统未预装MySQL,可以使用`rpm -qa | grep mysql`命令检查,如果有预装,用`...
在Linux操作系统中,安装...总之,在Linux环境中安装和配置MySQL涉及多个步骤,包括下载RPM包、安装、卸载旧版本、设置密码、修改配置文件以及权限分配。理解这些步骤对于管理和维护Linux上的MySQL数据库至关重要。
在Linux系统上安装MySQL 5.6是一个涉及多个步骤的过程,包括安装依赖包、创建系统用户、上传和解压MySQL安装文件、配置MySQL服务器、初始化安装、启动服务以及设置用户权限。以下是对这些步骤的详细解释: 1. **...
总结来说,安装Linux上的JDK、MySQL和Tomcat涉及到了软件包管理、依赖解决、环境变量配置、服务启动与管理等多个环节。每个步骤都需要细心操作,确保系统能够正确识别和使用这些组件。在实际操作中,还要注意系统的...
总的来说,配置MySQL 5.5的一主多从架构涉及到多个步骤,包括安装、配置、安全设置和错误排查。理解每个步骤的作用和相互关系对于成功部署至关重要。一旦设置完毕,这个架构可以提供高可用性和负载均衡,同时确保...
### Linux上安装MySQL知识点详解 #### 一、MySQL简介与Linux环境下的意义 MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),因其高效性、稳定性和可扩展性而在Web应用开发中占据重要地位。在Linux操作系统...
本篇文章将详细讲解如何在Linux系统上搭建这个环境。 首先,我们需要安装Apache,它是世界上最流行的HTTP服务器软件。可以从Apache官网(http://httpd.apache.org/)下载httpd软件包。以Apache 2.0.64为例,下载后...
MySQL数据库配置与管理 MySQL是多用户和多线程的中小型SQL数据库系统,由服务器...* 维护索引:可以创建索引,一个表最多可有16个索引,同时,MySQL可以在一个表的多个列上创建索引,一个索引可以由最多15个列组成。
如果需要在本地虚拟机上安装 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) ...
在IT领域,构建一个Web服务器通常涉及到多个组件的集成,如Apache HTTP服务器、PHP解释器以及MySQL数据库。这里我们关注的是在Linux环境下搭建基于Apache、PHP和MySQL的Web开发环境,这个过程通常被称为LAMP(Linux...
Mysql 有基于 Windows 运行的版本,也有基于 Linux 运行的版本。基于 Linux 的编译安装的 Mysql 是 mysql 的源码包,可以以上网下载,www.mysq1.CFI 就提供 Mysql 基于 Linux 的源码包下载。源码包的文件名都是 ...