目前,LAMP、LNMP是两套非常流行的开源Linux Web服务搭建方式。以免费高效著称,是很多网站和Web系统的首选服务器架构。
业务数据往往是很宝贵的资源,业务数据的损坏和丢失,对企业来讲是一个重大损失。因此,对业务数据做实时的备份和恢复显得尤为重要。
在LAMP平台和LNMP平台上,数据的存储主要是存储在MySql数据库上。MySql从3.23.15版本开始,提供了主从同步复制机制,通过复制机制,可以达到数据实时备份的目的。同时,还可以使用该技术,进行数据读写分离,提高效率。因此,在常规情况下,一般是一台Web,3台DB。
可能你有充足的资金预算,可以购买3台DB服务器来满足业务需要,也可能资金预算不足,只能买两台DB服务器甚至一台DB服务器。那么,必然会有一台服务器运行至少两个数据库示例。
本文重点讲述如何在一台Linux服务器上快速部署多个MySql数据库实例。软件情况如下:
1.操作系统:RedHat Linux 5.4 Enterprise
2.MySql版本:MySql-5.1.44
下面开始吧。
1.获得MySql编译好的二进制程序文件及相关配置文件
获得编译好的二进制程序文件有三种方式,第一种是直接在MySql的官方网站下载编译好的二进制版本,第二种是在已经安装好MySql数据库的服务器上提取,第三种,就是下载源代码包自己编译,得到编译后的二进制版本。
本文采用的是第二种方式,从已经安装好的MySql服务器上提取编译过的MySql文件(安装采用的是源代码本机编译形式安装)。
提取方法:
1.1登录MySql服务器,获取MySql安装路径。可以在mysql控制台下,使用如下指令获取到安装路径:
show variables like '%basedir%';
查询结果如下:
从上图可以看出,我们的MySql是安装在/usr/local/mysql/目录下的。得到了mysql的安装路径,就可以开始MySql文件的提取操作了。
1.2登录到安装mysql的linux服务器上,进入mysql的安装目录。我们需要进入的目录是:/usr/local/。
使用指令如下:
cd /usr/local
操作结果如下:
可以使用pwd指令,查看当前所在的目录位置。操作指令如下:
pwd
操作结果如下:
可以看出,我们当前是在/usr/local目录。现在我们看看目录下的文件夹及文件情况。使用指令如下(两个小写的L字母):
ll
操作结果如下:
在上图的操作文件及文件夹列表中,我们看到了mysql目录,这个就是mysql的安装目录。
1.3提取mysql安装文件
找到了MySql,下一步就是将这个mysql文件夹及下面所有的子文件夹和文件全部打包。打包我们使用linux系统自带的tar指令。指令如下:
tar -zcf /root/mysql-noinstall-5.1.44.tar.gz mysql
指令格式:tar 参数 打包后的文件存储路径 要打包的目录或文件的路径
操作结果如下:
在这里,因为没有在参数上加v参数,所以没有列出打包文件的详细步骤,不过文件的确已经打包好并且放到/root下了。可以进入/root目录去看看。指令如下:
cd #
ll
操作结果如下:
可以看到,mysql-noinstall-5.1.44.tar.gz文件已经创建好了。下一步就是将文件传输到要安装mysql的服务器上了。传输方式很多,选一种自己习惯的方式,只要文件被拷贝过去就行了。
2.在目标服务器上创建用户和用户组
mysql服务器最好是限制启动mysql服务的用户的权限,使他们只能操作mysql自己的目录,不能操作其他目录。这样设置有利于服务器的安全管理。
2.1创建mysql用户组
我们使用groupadd指令,在linux服务器上创建用户组。指令如下:
groupadd mysql
操作结果如下:
2.2创建mysql用户
我们使用useradd指令,在linux服务器上创建用户组,指令如下:
useradd -g mysql -s "/sbin/nologin" mysql
指令含义:useradd 参数 用户名
参数含义:-g mysql,将用户加入mysql用户组
-s "/sbin/nologin",设定用户的shell权限,用户不能登录shell,这样就限制了mysql这个用户,只能在linux服务器本地使用,不能 从远程使用该用户登录linux服务器
操作结果如下:
3.将打包的mysql安装文件解包
用户和用户组创建好了,现在可以开始解包安装文件到我们的目录下了。由于我们要在同一台服务器上运行3个mysql实例。因此,目录规划如下:
所有的mysql,都安装在/usr/local目录下,用不同的mysql目录区分不同的mysql实例,我们采用目录名+端口号的形式来区分。因此,我们的/usr/local下的mysql目录结构如下:
/usr/local/mysql
/usr/local/mysql3306
/usr/local/mysql3307
/usr/local/mysql3308
注意:mysql这个目录,是为了配置硬链接而存在的,方便在任何目录下,都可以访问到mysql客户端程序。
3.1将打包文件mysql-noinstall-5.1.44.tar.gz解包
首先,将mysql-noinstall-5.1.44.tar.gz文件解包到/usr/local/mysql目录
3.1.1进入/usr/local目录
指令:
cd /usr/local
pwd
操作结果如下:
3.1.2解压文件
指令:
tar -zxf /root/mysql-noinstall-5.1.44.tar.gz
ll
执行结果如下
可以看到,mysql这个目录已经创建好了,/usr/local/mysql这个目录的创建工作就完成了。
3.1.3构建mysql3306、mysql3307、mysql3308这3个目录
我们已经有了mysql目录,构建另3个目录就很简单了,直接拷贝mysql目录就可以了。
指令:
cp -R mysql mysql3306
cp -R mysql mysql3307
cp -R mysql mysql3308
ll
操作结果如下:
到这里,我们的目录创建工作就结束了。
3.2安装系统数据库
由于多实例的需要,我们将所有的数据文件存储在/home目录下,数据文件目录分别对应于安装目录。命名方式一致。
目录规划如下:
/home/mysql3306
/home/mysql3307
/home/mysql3308
安装mysql默认数据库,可以使用mysql安装文件的bin目录下的mysql_install_db程序来完成。
指令如下:
/usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql3306 --datadir=/home/mysql3306 --user=mysql
执行结果如下:
重复以上步骤,将basedir和datadir修改成另外两个目录,就可以完成默认数据库的安装工作。
/usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql3307 --datadir=/home/mysql3307 --user=mysql
/usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql3308 --datadir=/home/mysql3308 --user=mysql
操作完成后,到/home目录下去看看吧。
指令:
ll /home/
如图所示:
至此,系统数据库的安装工作就完成了。
3.3创建并编辑配置文件my.cnf
由于在多实例的环境下,mysql的各个实例可以使用单独的配置文件,因此,我们也采用每个mysql实例使用单独的配置文件的方式。
mysql的示例配置文件,存放在mysql安装目录下的share/mysql/目录下,提供了my-huge.cnf、my-innodb-heavy-4G.cnf、my-large.cnf、my-medium.cnf和my-small.cnf共5种配置文件模板。可以根据服务器的实际需要进行配置文件的选择。在这里,我们使用的是my-medium.cnf这个配置文件模板。
3.3.1 拷贝my-medium.cnf文件到mysql各个示例的顶级目录
指令如下:
cp mysql/share/mysql/my-medium.cnf mysql3306/my.cnf
cp mysql/share/mysql/my-medium.cnf mysql3307/my.cnf
cp mysql/share/mysql/my-medium.cnf mysql3308/my.cnf
操作结果如下:
进入各个目录,我们就可以看到各个目录下,都有一个my.cnf配置文件了。
如图所示:
3.3.2编辑配置文件
由于配置文件使用的是默认的模板,我们需要根据我们的实际情况进行修改才能使用。
对配置文件的编辑如下:
1.用#注释掉[client]配置节的所有信息
2.在[mysqld]配置节,将port配置修改为我们要监听的端口3306、3307或3308
3.在[mysqld]配置节,将skip-locking配置修改为:skip-external-locking
4.在[mysqld]配置节,将sock配置修改为各个实例的socket文件路径
5.在[mysqld]配置节,修改server-id配置节,参数为IP地址第四节+端口号,如:IP:10.34.40.40,端口3306,参数为:403306
6.在[mysqld]配置节,增加pid-file配置节,参数各个实例的pid文件保存路径
如:我们要配置3308实例,则修改如下:
[client]
#password = your_password
#port = 3306
#socket = /tmp/mysql.sock
[mysqld]
pid-file = /home/mysql3308/mysql3308.pid
log-error = /home/mysql3308/mysql3308.err
port = 3308
socket = /tmp/mysql3308.sock
Skip-external-locking
……省略没有修改的配置……..
server-id = 403308
……省略没有修改的配置……..
根据以上信息,选择自己习惯的编辑器,依次修改/usr/local/mysql3306、/usr/local/mysql3307、/usr/local/mysql3308目录下的my.cnf为相应的配置信息。
至此,配置文件创建编辑完成。
3.4创建并修改服务文件
mysql的服务文件,和mysql模板配置文件一样,存放在安装目录的share/mysql目录下。名为mysql.server。
如图:
拷贝该文件到/etc/init.d目录下,并以mysqld+端口号的形式命名。如:3306端口的服务文件,文件名为mysqld3306
指令如下:
cp mysql/share/mysql/mysql.erver /etc/init.d/mysqld3306
结果如下:
重复以上操作,生成3307和3308端口的服务文件
cp mysql/share/mysql/mysql.erver /etc/init.d/mysqld3307
cp mysql/share/mysql/mysql.erver /etc/init.d/mysqld3308
下面来编辑服务文件,
需要修改服务文件的basedir和datadir配置节。将配置节的信息设定为各自的实例程序和数据所在的路径。
如:3306端口的服务文件,设置如下:
basedir=/usr/local/mysql3306
datadir=/home/mysql3306
重复以上步骤,用自己习惯的编辑器编辑3个服务文件,mysqld3306、mysqld3307和mysqld3308。
至此,服务文件的创建和编辑操作完成。
现在我们来启动mysql服务器吧。指令如下:
service mysqld3306 start
service mysqld3307 start
service mysqld3308 start
执行结果如下:
可以看到,我们的服务已经正常启动了。现在,我们来检验以下,linux系统的3306、3307、3308端口是否已经在监听状态了。
使用指令如下:
netstat -an | grep LISTEN
结果如下:
现在,我们可以看到,3306、3307、3308端口已经处于监听状态了。我们再看看3306、3307、3308端口的监听程序是什么。
使用指令:
lsof -i :3306
结果如下:
可以看到,3306端口是mysqld这个程序在监听。同样,我们检测下3307和3308端口。
结果如下:
可以看出,都是mysqld程序在监听。也就是说明,mysqld程序正在监听3306、3307、3308端口。需要注意的是,监听这3个端口的mysqld程序,是分别存放在/usr/local/mysql3306/bin、/usr/local/mysql3307/bin、/usr/local/mysql3308/bin中,是3个实例各自的程序在监听,互不影响。
4.设置mysql客户端
在mysql服务端配置完成之后,我们需要使用mysql客户端链接到mysql的各个实例上,看看mysql是否是按照我们设定的参数在运行。mysql的客户端,存放在/usr/local/mysql/bin目录下,文件名是mysql。这个目录是在配置mysql多实例的时候,从tar.gz包里面解压出来的(可以参考前面的文档)。
进入/usr/local/mysql/bin目录,运行mysql。
指令如下:
/usr/local/mysql/bin/mysql
让我们看看发生了什么。报错了,找不到一个文件[SOCK文件]。
如图所示:
这是因为,mysql配置了多实例之后,各个实例必须使用单独的sock文件防止相互影响。因此,在多实例的环境下,链接mysql服务器,需要指定特定的sock文件所在的路径。我们修改一下mysql的指令,修改如下:
/usr/local/mysql/bin/mysql --socket=/tmp/mysql3306.sock
执行,结果如图所示:
我们已经正常连接到mysql服务器上了。现在我们来看看是不是监听的3306端口,数据文件和程序文件是不是我们指定的目录。
我们用指令show variables like '%port%';来查看当前监听的端口。
在mysql > 提示符后面,输入指令:
show variables like '%port%';
执行结果如下:
我们可以看到,当前mysql监听的端口,的确是3306。然后我们来看看mysql的程序目录和数据目录。
在mysql > 提示符后面,输入指令:
show variables like '%dir%';
执行结果如下:
看输出结果的第一行和第四行,basedir是程序目录,datadir是数据目录。我们可以看到,程序目录是/usr/local/mysql3306,数据目录是/home/mysql3306.和我们实例配置时的设定是一致的。
有时候,在mysql客户端链接mysql服务器实例的时候,会提示error while loading shared libraries: libmysqlclient.so.16这样的错误。出现这个错误,可能是因为你的linux操作系统中的这个库文件位置不正确或不存在。解决方法很简单,将/usr/local/mysql/lib/mysql/libmysqlclient.so.16这个文件拷贝到/usr/bin目录下即可。指令如下:
cp /usr/local/mysql/lib/mysql/libmysqlclient.so.16 /usr/lib
5.设置mysql各个示例随操作系统自启动
mysql服务器实例配置好了,现在mysql也可以运行起来了。不需要每次启动服务器,都去手动启动mysql服务。设置指令如下:
chkconfig --level 3 mysqld3306 on
chkconfig --level 3 mysqld3307 on
chkconfig --level 3 mysqld3308 on
执行结果如下:
现在,我们来验证下,这3个实例是否添加成功:
使用指令:
chkconfig --list
执行结果:
可以看到,mysqld3306、mysqld3307和mysqld3308已经添加成功。现在,mysql的各个实例就能随linux操作系统启动而自动启动了。
到此,我们的mysql多示例免安装配置就算全部完成了。剩下的,就是如何使用各个实例了。
相关推荐
MySql 5.1.48 Linux 免安装版本,在Red Hat 5 Enterprise下编译提取。使用方法http://blog.csdn.net/xqandpan/archive/2010/06/28/5698760.aspx
MySQL 5.7 多实例部署 本文档主要介绍了 MySQL 5.7 数据库的多实例部署方法,包括自动化部署脚本的使用和多实例创建。下面是详细的知识点: 一、MySQL 5.7 多实例部署的优点 * 提高数据库的可用性和可扩展性 * ...
### Linux 下 MySQL 多实例安装部署及主从配置详解 #### 一、多实例安装部署 **背景介绍:** 在 Linux 系统中部署多个 MySQL 实例是非常常见的需求,尤其对于那些需要高可用性和负载均衡的环境。本文将详细介绍...
总的来说,这个免安装部署包提供了一种快速启动MySQL 5.7.20的方法,特别适合开发者测试环境或小型项目。然而,对于生产环境,建议还是采用官方的安装程序,以确保所有必要的服务和配置都能得到妥善处理。
这种设计使得在各种环境下的快速部署成为可能,无论是个人电脑还是服务器,都可以轻松地使用MySQL。 “自动配置”标签表明,这个绿色版MySQL在启动时会自动完成一些基本的配置工作,比如设置默认的数据库路径、端口...
mysql多实例部署shell脚本
windows 7 64位下配置mysql64位免安装版,下载免安装版mysql可根据配置直接运行、使用MySQL
### MySQL多实例部署详解 #### 一、背景与概述 在现代企业的生产环境中,为了提高数据库服务的可用性、灵活性及资源利用率,通常会采用MySQL多实例部署的方式。这种方式不仅能够满足不同业务线的需求隔离,还能...
以上就是关于“Windows X64 Mysql8.1.0免安装包”的主要知识点,通过理解和掌握这些内容,你可以高效地在Windows 64位系统上部署和管理MySQL数据库。记得在实际操作时遵循最佳实践,确保数据的安全和稳定运行。
在IT行业中,构建一个Web应用服务器环境通常需要安装多个组件,比如Tomcat(一个流行的Java Servlet容器)、MySQL(一个关系型数据库管理系统)和JDK(Java Development Kit,用于编译和运行Java程序)。然而,...
mysql8.0免安装 免安装! 免安装! 免安装! 解压即用,解压到D盘不用修改配置,直接双击startup.bat启动,端口3306 root密码:root 如需修改位置,更改my.ini中的basedir和datadir
资源名称:Linux MySQL免安装及配置资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
Navicat for MySQL(免安装)免安装版本,解压之后,即可使用。
这款3.2版本(Build 13.0)是免安装的绿色版本,意味着它不需要传统的安装过程,用户可以直接解压使用,方便在不同计算机上快速部署。 MySQL-Front的主要功能包括: 1. 数据库连接:通过提供用户名、密码以及...
总的来说,MySQL 8.0免安装版提供了一种方便的方式来部署和使用这个强大的数据库系统,尤其适合那些需要快速部署或在无权限安装软件的环境中使用的情况。理解其组成部分和主要特性,将有助于有效地管理和利用MySQL的...
这个"MYSQLS5.6免安装版"是一个特别为方便用户快速部署和使用而设计的绿色版本,无需进行繁琐的安装过程。在Windows操作系统上,这种免安装版通常包含所有必要的组件,让你能在任何支持的系统上迅速启动和运行MySQL...
在Windows 64位平台上部署MySQL服务器时,通常有两种方式:一种是传统的安装程序安装方式,另一种则是免安装的方式。本文主要介绍的是后者——如何在Windows 64位平台上配置并使用MySQL的免安装版本。这种方式的优势...
这个免安装版的MySQL ODBC 5.1 Driver通常与MySQL 5.1版本兼容,但可能也支持更高版本的MySQL服务器,具体取决于驱动程序的更新和支持情况。 6. **安全性和性能**: 使用ODBC驱动时,确保使用最新的驱动版本以...
MySQL免安装版是一种轻量级的数据库管理系统,它允许用户在无需正式安装程序的情况下使用MySQL。这个压缩包包含了多个版本的MySQL(5.0.41和5.5.6)以及一个数据库管理工具——Navicat for MySQL,非常适合开发者...