`

Linux下MySql多实例免安装部署

 
阅读更多

 目前,LAMPLNMP是两套非常流行的开源Linux Web服务搭建方式。以免费高效著称,是很多网站和Web系统的首选服务器架构。

        业务数据往往是很宝贵的资源,业务数据的损坏和丢失,对企业来讲是一个重大损失。因此,对业务数据做实时的备份和恢复显得尤为重要。

        LAMP平台和LNMP平台上,数据的存储主要是存储在MySql数据库上。MySql3.23.15版本开始,提供了主从同步复制机制,通过复制机制,可以达到数据实时备份的目的。同时,还可以使用该技术,进行数据读写分离,提高效率。因此,在常规情况下,一般是一台Web3DB

        可能你有充足的资金预算,可以购买3DB服务器来满足业务需要,也可能资金预算不足,只能买两台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登录到安装mysqllinux服务器上,进入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安装文件解包

        用户和用户组创建好了,现在可以开始解包安装文件到我们的目录下了。由于我们要在同一台服务器上运行3mysql实例。因此,目录规划如下:

        所有的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构建mysql3306mysql3307mysql33083个目录

        我们已经有了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

         执行结果如下:

        重复以上步骤,将basedirdatadir修改成另外两个目录,就可以完成默认数据库的安装工作。

        /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配置修改为我们要监听的端口330633073308

        3.[mysqld]配置节,将skip-locking配置修改为:skip-external-locking

        4.[mysqld]配置节,将sock配置修改为各个实例的socket文件路径

        5.[mysqld]配置节,修改server-id配置节,参数为IP地址第四节+端口号,如:IP10.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

        结果如下:

        重复以上操作,生成33073308端口的服务文件

        cp mysql/share/mysql/mysql.erver /etc/init.d/mysqld3307

        cp mysql/share/mysql/mysql.erver /etc/init.d/mysqld3308

       下面来编辑服务文件,

        需要修改服务文件的basedirdatadir配置节。将配置节的信息设定为各自的实例程序和数据所在的路径。

        如:3306端口的服务文件,设置如下:

        basedir=/usr/local/mysql3306

        datadir=/home/mysql3306

 

        重复以上步骤,用自己习惯的编辑器编辑3个服务文件,mysqld3306mysqld3307mysqld3308

        至此,服务文件的创建和编辑操作完成。

        现在我们来启动mysql服务器吧。指令如下:

        service mysqld3306 start

        service mysqld3307 start

        service mysqld3308 start

        执行结果如下:

        可以看到,我们的服务已经正常启动了。现在,我们来检验以下,linux系统的330633073308端口是否已经在监听状态了。

        使用指令如下:

        netstat -an | grep LISTEN

        结果如下:

        现在,我们可以看到,330633073308端口已经处于监听状态了。我们再看看330633073308端口的监听程序是什么。

        使用指令:

        lsof -i :3306

        结果如下:

        可以看到,3306端口是mysqld这个程序在监听。同样,我们检测下33073308端口。

        结果如下:

        可以看出,都是mysqld程序在监听。也就是说明,mysqld程序正在监听330633073308端口。需要注意的是,监听这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

        执行结果:

        可以看到,mysqld3306mysqld3307mysqld3308已经添加成功。现在,mysql的各个实例就能随linux操作系统启动而自动启动了。

 

        到此,我们的mysql多示例免安装配置就算全部完成了。剩下的,就是如何使用各个实例了。

分享到:
评论

相关推荐

    MySql 5.1.48 Linux免安装版本

    MySql 5.1.48 Linux 免安装版本,在Red Hat 5 Enterprise下编译提取。使用方法http://blog.csdn.net/xqandpan/archive/2010/06/28/5698760.aspx

    mysql5.7多实例部署

    MySQL 5.7 多实例部署 本文档主要介绍了 MySQL 5.7 数据库的多实例部署方法,包括自动化部署脚本的使用和多实例创建。下面是详细的知识点: 一、MySQL 5.7 多实例部署的优点 * 提高数据库的可用性和可扩展性 * ...

    linux下mysql多实例安装部署及主从配置.docx

    ### Linux 下 MySQL 多实例安装部署及主从配置详解 #### 一、多实例安装部署 **背景介绍:** 在 Linux 系统中部署多个 MySQL 实例是非常常见的需求,尤其对于那些需要高可用性和负载均衡的环境。本文将详细介绍...

    mysql5.7.20免安装部署包

    总的来说,这个免安装部署包提供了一种快速启动MySQL 5.7.20的方法,特别适合开发者测试环境或小型项目。然而,对于生产环境,建议还是采用官方的安装程序,以确保所有必要的服务和配置都能得到妥善处理。

    MySql 纯绿色免安装版本

    这种设计使得在各种环境下的快速部署成为可能,无论是个人电脑还是服务器,都可以轻松地使用MySQL。 “自动配置”标签表明,这个绿色版MySQL在启动时会自动完成一些基本的配置工作,比如设置默认的数据库路径、端口...

    mysql多实例部署shell脚本

    mysql多实例部署shell脚本

    windows 7 64位下配置mysql64位免安装版

    windows 7 64位下配置mysql64位免安装版,下载免安装版mysql可根据配置直接运行、使用MySQL

    mysql多实例部署

    ### MySQL多实例部署详解 #### 一、背景与概述 在现代企业的生产环境中,为了提高数据库服务的可用性、灵活性及资源利用率,通常会采用MySQL多实例部署的方式。这种方式不仅能够满足不同业务线的需求隔离,还能...

    Windows X64 Mysql8.1.0免安装包(使用方式见压缩包文件)

    以上就是关于“Windows X64 Mysql8.1.0免安装包”的主要知识点,通过理解和掌握这些内容,你可以高效地在Windows 64位系统上部署和管理MySQL数据库。记得在实际操作时遵循最佳实践,确保数据的安全和稳定运行。

    tomcat+mysql+jdk免安装组合方式

    在IT行业中,构建一个Web应用服务器环境通常需要安装多个组件,比如Tomcat(一个流行的Java Servlet容器)、MySQL(一个关系型数据库管理系统)和JDK(Java Development Kit,用于编译和运行Java程序)。然而,...

    mysql8.0免安装

    mysql8.0免安装 免安装! 免安装! 免安装! 解压即用,解压到D盘不用修改配置,直接双击startup.bat启动,端口3306 root密码:root 如需修改位置,更改my.ini中的basedir和datadir

    LinuxMySQL免安装及配置

    资源名称:Linux MySQL免安装及配置资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    Navicat for MySQL(免安装)

    Navicat for MySQL(免安装)免安装版本,解压之后,即可使用。

    MySQL-Front 免安装 绿色版

    这款3.2版本(Build 13.0)是免安装的绿色版本,意味着它不需要传统的安装过程,用户可以直接解压使用,方便在不同计算机上快速部署。 MySQL-Front的主要功能包括: 1. 数据库连接:通过提供用户名、密码以及...

    mysql8.0(免安装版)(mysql-8.0.33-winx64.zip,VC-redist.x64.exe)

    总的来说,MySQL 8.0免安装版提供了一种方便的方式来部署和使用这个强大的数据库系统,尤其适合那些需要快速部署或在无权限安装软件的环境中使用的情况。理解其组成部分和主要特性,将有助于有效地管理和利用MySQL的...

    MYSQLS5.6免安装版

    这个"MYSQLS5.6免安装版"是一个特别为方便用户快速部署和使用而设计的绿色版本,无需进行繁琐的安装过程。在Windows操作系统上,这种免安装版通常包含所有必要的组件,让你能在任何支持的系统上迅速启动和运行MySQL...

    mysql 免安装 windows 64 位平台

    在Windows 64位平台上部署MySQL服务器时,通常有两种方式:一种是传统的安装程序安装方式,另一种则是免安装的方式。本文主要介绍的是后者——如何在Windows 64位平台上配置并使用MySQL的免安装版本。这种方式的优势...

    MySQL ODBC 5.1 Driver(Mysql驱动免安装版)

    这个免安装版的MySQL ODBC 5.1 Driver通常与MySQL 5.1版本兼容,但可能也支持更高版本的MySQL服务器,具体取决于驱动程序的更新和支持情况。 6. **安全性和性能**: 使用ODBC驱动时,确保使用最新的驱动版本以...

    mysql免安装版

    MySQL免安装版是一种轻量级的数据库管理系统,它允许用户在无需正式安装程序的情况下使用MySQL。这个压缩包包含了多个版本的MySQL(5.0.41和5.5.6)以及一个数据库管理工具——Navicat for MySQL,非常适合开发者...

Global site tag (gtag.js) - Google Analytics