如何在同一台机器上安装多个mysql的实例转(代码片段)

feiyun8616的作坊(半个程序员anddba)脚本化p feiyun8616的作坊(半个程序员anddba)脚本化python     2022-11-11     746

关键词:

 

https://www.cnblogs.com/shangzekai/p/4375271.html

 

最近由于工作的需要,需要在同一台机器上搭建两个MySQL的实例,(注:已经存在了一个3306的MySQL的实例)。

  先说下,什么是mysql的多实例,简单的来说就是一台机器上安装了多个mysql的服务,通过不同的端口(如3307,3308)来向外界提供服务,这些进程通过不同的socket来监听不同的服务端口来提供个字的服务。

  做个比喻:MySQL的多实例相当于房子的相当于多个卧室一样,每个实例可以看做是一个卧室,整个服务器就是一个房子,服务器的硬件资源(cpu,mem,disk)就是共享的资源,相当于房子的卫生间,厨房,客厅一样,是房子的公共资源,北漂蜗居在一起,可定是要公用上述的资源的。

  好处:

    当公司资金紧张,可以节约服务器的资源。

  坏处:

    当某个服务并发很高或者有慢查询的时候,整个实例会消耗整个服务器更多的内存,cpu和各种资源,导致服务器上的其他的实例提供的服务质量下降。这就相当于大家住在一个房子的不同卧室一样,早晨起来刷牙,洗脸等,这样卫生间就会长期占用,其他人需要等一样的道理。

下面记录下装一个3307的MySQL的实例的步骤:

一. 基本的需求和出现的问题

  当MySQL出现故障或者需要加入一个新的MySQL的实例的时候,需要重新初始化MySQL的数据库,也就是需要重新生成新的数据库的文件。

  Linux环境中,安装编译好MySQL之后,还是不能直接启动MySQL,需要初始化Mysql的一些基本东西,包括:

  初始化表日志,基本的数据库信息等一些基本的必须文件。

 

 

二.安装的步骤:

  (1). 假设已经存在一个MySQL的实例,端口号为3306,现在需要重新添加一个端口号为3307端口的MySql的实例。

    假设MySQl安装的路径是/usr/local/mysql/下面,找一个数据磁盘比较的地方,比如/data1/目录下,在这个目录下面创建数据文件夹:

1 mkdir -p /data1/mysql_3307/data
2 chown -R mysql::mysql /data1/mysql_3307

##data
mkdir /db/mysql/data/mydata_3307
chown -R mysql:mysql /db/mysql/data/mydata_3307

###tmp
mkdir /db/mysql/data/mysqltmp_3307
chown -R mysql:mysql /db/mysql/data/mysqltmp_3307

##app
mkdir /db/mysql/app/mysql_3307
chown -R mysql:mysql /db/mysql/app/mysql_3307
cp /db/mysql/app/mysql/my.cnf /db/mysql/app/mysql_3307/my.cnf

##temp2
mkdir /db/mysql/data/mydata_3307/tmp
chown -R mysql:mysql /db/mysql/data/mydata_3307/tmp

 

  (2). 复制之前的MySQl的配置文件,到/data1/mysql_3307/目录下面,并且进行编辑:()

    vim /data1/mysql_3307/my.cnf

    基本的配置如下:

修改对应路径名字:
socket (2个配置点,一个在client 下,另一个在mysqld 下)
basedir (如果同一个软件安装目录,这个不用修改)
datadir
tmpdir
port (2个配置点,一个在client 下,另一个在mysqld 下)
log_error
pid-file
slow_query_log_file
    

    注:上面的路径可能与上面的数据库文件的存放路径有点出入,但这个不是重点,可以自行替换一下!

(3).确保配置文件无误,然后开始初始化数据库:

/usr/local/mysql/scripts/mysql_install_db --defaults-file=/data1/mysql_3307/my.cnf --datadir=/data1/mysql/ --basedir=/usr/lcoal/mysql
  完成后,新的mysql 3307数据库已经初始化好了,如果有报错,则看下报错的日志,一般是由于mysql的配置文件导致的,修改即可!

(注意这里--datadir,--defaults-file,--basedir 都要跟my.cnf 保持一致)
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/db/mysql/app/mysql_3307/my.cnf --datadir= /db/mysql/data/mydata_3307/ --basedir=/usr/lcoal/mysql

(4).启动新的MySQL的实例服务:

  在上面的初始化配置确保无误的情况下,就可以开始启动MySQL的又一个实例了。


/usr/local/mysql/bin/mysqld_safe --defaults-file=/db/mysql/app/mysql_3307/my.cnf &

 /db/mysql/app/mysql/bin/mysqld_safe --defaults-file=/db/mysql/app/mysql_3307/my.cnf &

 

 

1 /usr/local/mysql/bin/mysqld_safe --defaults-file=/data1/mysql_3308/my.cnf &
2 检查是否启动:
3 ps -aux | grep mysql
4 如有3308的端口 则表示成功
(5).新的 mysql没有设置root密码,可以通过如下 的设置:

/usr/local/mysl/bin/mysqladmin -S /tmp/mysql_3308.sock -uroot passwd \'new-paswd\';

/db/mysql/app/mysql/bin/mysqladmin -u root password \'123456\'  --socket=/db/mysql/data/mysqltmp_3307/mysql.sock

 

#制作成服务启动

68 cp support-files/mysql.server /etc/init.d/mysql1

 

#mysql1 修改如下:
注意: 283行修改为如下:
$bindir/mysqld_safe --defaults-file=/db/mysql/app/mysql_3307/my.cnf $other_args >/dev/null 2>&1 &

change 46
basedir="/db/mysql/app/mysql"

change 47
datadir="/db/mysql/data/mydata_3307"

change 246
if test -r "/db/mysql/app/mysql_3307/my.cnf"

change 248
extra_args="-e /db/mysql/app/mysql_3307/my.cnf"

change 63
mysqld_pid_file_path="/db/mysql/app/mysql_3307"

change 57 and 58
lockdir=\'/var/lock/subsys1\'
lock_file_path="$lockdir/mysql1"

 

####

这有一个风险,就是维护时候,怕登错主机,敲错命令,一般不建议使用

service mysql1 stop

service mysql1 start

service mysql1 restart

#添加到开机启动项
chkconfig --add mysql


如上面的步骤,即可完成一个机器上多个MySQL实例的安装与运行。

 当然了,可以将MySQL_server这个脚本放入到/rt/rc.local这个目录下面,随着服务器启动。

(6).如果想登陆的时候,需要指定MySQL的端口号,使用-P3307来指定登录到哪台数据库上即可。

 总结:

  自己在安装这个数据库的时候,以为是需要再次下载一个新的数据库的源码包,但是其实是不用的,使用一个MySQL的源码包,是可以安装多个MySQL的实例的。

 
分类: MySQL

如何在同一台机器上安装多个mysql的实例

这种架构一般用在以下三类场景1.备份多台Server的数据到一台如果按照数据切分方向来讲,那就是垂直切分。比如图2,业务A、B、C、D是之前拆分好的业务,现在需要把这些拆分好的业务汇总起来备份,那这种需求也很适用于多... 查看详情

windows上安装多个mysql实例(转)

...数据库,比如Master-Slave集群、分库分表,开发阶段在一台机器上安装多个MySQL实例就显得方便不少。在MySQL教程-基础篇-1.1-Windows上安装MySQL章节有详细讲解在Windows上用压缩包安装MySQL服务器的方法,这里以此为基础讲解在Windows上... 查看详情

如何在具有不同端口的同一台机器上配置 MySQL?

】如何在具有不同端口的同一台机器上配置MySQL?【英文标题】:HowtoconfigureMySQLonsamemachinewithdifferentport?【发布时间】:2013-10-0609:31:06【问题描述】:如何在同一台机器上为MySQL配置两个不同的端口?我知道默认端口是3306,但是... 查看详情

在同一台机器上启动多个tomcat服务

...让我们更好的测试下自己的分布式应用,下面简单介绍下如何在一台机器上开启多个tomcat应用,其实会弄两个,之后的多个都是一样的了 找到电脑上的tomcat安装目录,复制一份,出现两份tomcat,为了区别给复制的一份起一个... 查看详情

我可以在同一台机器上运行多个elasticsearch实例进行日志聚合吗?

...合,我想使用ELK堆栈。请帮我解决这些问题......我可以在同一个elasticsearch实例上创建一个新的日志集群并将日志数据输入吗?这是个好主意吗?我应该在具有不同端口的同一台计算机上使用不同的elasticsea 查看详情

如何在同一台机器上运行多个硒测试套件

】如何在同一台机器上运行多个硒测试套件【英文标题】:howtorunmorethenoneseleniumtestingsuiteonthesamemachine【发布时间】:2015-12-1106:41:14【问题描述】:我正在使用Java/Seleniumwebdriver和testng来运行我的测试自动化,我有很多自动化项目... 查看详情

当多个java程序在同一台机器上运行时

】当多个java程序在同一台机器上运行时【英文标题】:Whenmultiplejavaprogramsrunonthesamemachine【发布时间】:2013-08-2600:24:24【问题描述】:每个Java应用程序都将在特定的Java虚拟机实例中运行。我真的对以下方面感到困惑,而谷歌搜... 查看详情

如何在同一台机器上运行 2 个(或更多)Wildfly 实例?

】如何在同一台机器上运行2个(或更多)Wildfly实例?【英文标题】:Howtorun2(ormore)Wildflyinstancesonthesamemachine?【发布时间】:2018-03-2316:32:29【问题描述】:我想通过运行2个独立的Wildfly实例来模拟2个服务器。当您不想在同一个实... 查看详情

Java套接字:同一台机器上同一端口上的多个客户端线程?

】Java套接字:同一台机器上同一端口上的多个客户端线程?【英文标题】:Javasockets:multipleclientthreadsonsameportonsamemachine?【发布时间】:2011-02-1818:47:44【问题描述】:我是JavaSocket编程的新手,并试图了解以下代码是否正确。我的... 查看详情

如何在同一台机器上配置多个 ASPNETCORE_ENVIRONMENT?

】如何在同一台机器上配置多个ASPNETCORE_ENVIRONMENT?【英文标题】:HowtoconfiguremultipleASPNETCORE_ENVIRONMENTonsamemachine?【发布时间】:2016-11-2217:53:26【问题描述】:我有ASP.NET核心网络应用程序。我已经在我们的Web服务器上配置了Web应用... 查看详情

如何在同一台服务器上跨多个域维护 PHP 会话?

】如何在同一台服务器上跨多个域维护PHP会话?【英文标题】:HowdoImaintainPHPsessionsacrossmultipledomainsonthesameserver?【发布时间】:2010-09-1915:07:29【问题描述】:我正在寻找一种在同一服务器上跨多个域维护PHP会话的方法。我将把我... 查看详情

我可以在同一台机器上运行两个tomcat实例吗?(代码片段)

我可以在同一台机器上运行两个具有两个不同端口的Tomcat服务器吗?它会造成任何问题吗?当我运行tomcat时,它将在任务管理器中创建javaw.exe文件。答案除了改变Connectorport为protocol="HTTP/1.1"描述在下面的答案之一。我认为需要更... 查看详情

window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法

window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法 本机已经安装了jdk1.7,而比较早期的项目需要依赖jdk1.6,于是同时在本机安装了jdk1.6和jdk1.7.  安装jdk1.6前,执行java-version得到C:Usersliuxiang2&... 查看详情

centos6.5源码安装多个mysql实例及复制搭建

...实例安装本节是在CentOS6.5源码安装MySQL5.6.35的基础上,在同一台机器增加一个MySQL实例。参考Centos中安装多个mysql数据的配置实例,安装目录为/usr/local/mysql3307/6、目录创建(-p父目录不存在则创建此目录)[[email protected]~]#cdmysql-5.6... 查看详情

在同一台 linux 机器上使用 zope-plone 安装 xampp 的指南?

】在同一台linux机器上使用zope-plone安装xampp的指南?【英文标题】:Guidetoinstallxamppwithzope-ploneonthesamelinuxmachine?【发布时间】:2011-03-1501:52:42【问题描述】:是否有一个很好的分步在线指南来在同一台linux机器上安装xampp(apache服... 查看详情

同一台机器部署多个tomcat(代码片段)

1、解压tomcat绿色安装包 2、修改conf/server.xml文件,修改里面所有位置涉及到的端口,目的是不跟服务器上已安装的tomcat服务端口冲突参考:查找8080,修改为8088;查找8443,修改为8448;查找8009,修改为8089;查找8005,修改为8085... 查看详情

我可以在同一台机器上运行两个 tomcat 实例吗?

】我可以在同一台机器上运行两个tomcat实例吗?【英文标题】:CanIruntwotomcatinstancesonthesamemachine?【发布时间】:2011-06-0808:43:21【问题描述】:我可以在同一台机器上运行两个具有两个不同端口的Tomcat服务器吗?它会产生任何问题... 查看详情

mysql多实例

MySQL的多实例  就是在一台机器上开启多个不同的服务端口,运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的服务端口提供各自的服务。  特点:    这些实例公用一套MySQL安装程序    使用不同(... 查看详情