首页 数据库 mysql教程 烂泥:mysql5.5多实例部署

烂泥:mysql5.5多实例部署

Jun 07, 2016 pm 02:55 PM
天下 实例 部署 首发

本文 首发于 烂泥行天下 。 mysql5.5数据库多实例部署,我们可以分以下几个步骤来完成。 1、 mysql多实例的原理 2、 mysql多实例的特点 3、 mysql多实例应用场景 4、 mysql5.5多实例部署方法 一、mysql多实例的原理 mysql多实例,简单的说,就是在一台服务器

本文首发于烂泥行天下

mysql5.5数据库多实例部署,我们可以分以下几个步骤来完成。

1、 mysql多实例的原理

2、 mysql多实例的特点

3、 mysql多实例应用场景

4、 mysql5.5多实例部署方法

一、mysql多实例的原理

mysql多实例,简单的说,就是在一台服务器上开启多个不同的mysql服务端口(如3306,3307),运行多个mysql服务进程。这些服务进程通过不同的socket监听不同的服务端口,来提供各自的服务。

这些mysql实例共用一套mysql安装程序,使用不同的my.cnf配置文件、启动程序、数据文件。在提供服务时,mysql多实例在逻辑上看来是各自独立的,各个实例之间根据配置文件的设定值,来取得服务器的相关硬件资源。

二、mysql多实例的特点

2.1 有效的利用服务器资源

当单个服务器资源有剩余时,可以充分利用剩余的服务器资源来提供更多的服务。

2.2 节约服务器资源

当公司资金紧张,但是数据库需要各自提供独立服务,而且需要主从同步等技术时,使用多实例就最好了。

2.3 出现资源互相抢占问题

当某个实例服务并发很高或者有慢查询时,会消耗服务器更多的内存、CPU、磁盘IO等资源,这时就会导致服务器上的其它实例提供访问的质量下降,出现服务器资源互相抢占的现象。

三、mysql多实例应用场景

3.1 资金紧张型公司的选择

当公司业务访问量不太大,又舍不得花钱,但同时又希望不同业务的数据库服务各自独立,而且需要主从同步进行等技术提供备份或读写分离服务时,使用多实例是最好不过的。

3.2 并发访问不是特别大的业务

当公司业务访问量不太大,服务器资源基本闲置的比较多,这是就很适合多实例的应用。如果对SQL语句优化的好,多实例是一个很值得使用的技术。即使并发很大,只要合理分配好系统资源,也不会有太大问题。

四、mysql5.5多实例部署方法

4.1 mysql5.5多实例部署方法

mysql5.5多实例部署方法一个是通过多个配置文件启动多个不同进程的方法,第二个是使用官方自带的mysqld_multi来实现。

第一种方法我们可以把各个实例的配置文件分开,管理比较方便。第二种方法就是把多个实例都放到一个配置文件中,这个管理不是很方便。所以在此我们选择第一种方法,而且以下实验我们全部是在此方法下进行的。

4.2 mysql5.5的安装及配置

要配置mysql5.5多实例,我们首先要安装mysql5.5,有关mysql5.5的安装可以查看《烂泥:mysql5.5数据库cmake源码编译安装》这篇文章。

mysql5.5安装完毕后,我们不要启动mysql,因为此时mysql是单实例的。

4.3 创建mysql多实例的数据目录

现在我们来创建mysql5.5多实例的数据目录,在此我们创建两个mysql实例3306和3307。创建各自的数据目录,如下:

mkdir -p /data/{3306,3307}/data

tree -L 2 /data/

clip_image001

4.4 修改mysql5.5多实例my.cnf文件

实例3306和3307的数据目录创建完毕后,我们来配置实例3306与3307的my.cnf配置文件。

复制mysql5.5安装目录support-files下的my-medium.cnf为my.cnf,并把内容修改为下。现在以3306这个实例为例,如下:

[client]

port = 3306

socket = /data/3306/mysql.sock

[mysqld]

port = 3306

socket = /data/3306/mysql.sock

basedir = /usr/local/mysql

datadir = /data/3306/data

skip-external-locking

key_buffer_size = 16M

max_allowed_packet = 1M

table_open_cache = 64

sort_buffer_size = 512K

net_buffer_length = 8K

read_buffer_size = 256K

read_rnd_buffer_size = 512K

myisam_sort_buffer_size = 8M

skip-name-resolve

log-bin=mysql-bin

binlog_format=mixed

max_binlog_size = 500M

server-id = 1

[mysqld_safe]

log-error=/data/3306/ilanni.err

pid-file=/data/3306/ilanni.pid

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

no-auto-rehash

[myisamchk]

key_buffer_size = 20M

sort_buffer_size = 20M

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout

clip_image002

注意图中***标记出来的部分,就是我们主要修改的,其他默认保持不变。

以上是实例3306的my.cnf配置文件,现在我们来配置实例3307的my.cnf。实例3307的配置文件my.cnf我们直接复制实例3306的my.cnf文件,然后通过sed命令把该文件中的3306修改为3307即可。如下:

cp /data/3306/my.cnf /data/3307/my.cnf

sed -i 's/3306/3307/g' /data/3307/my.cnf

或者

sed -e 's/3306/3307/g' /data/3306/my.cnf >/data/3307/my.cnf

clip_image001[4]

4.5 初始化mysql多实例

实例3306和3307的my.cnf配置文件修改完毕后,我们需要来初始化这两个实例,使用mysql_install_db命令。如下:

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3306/data --user=mysql

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3307/data --user=mysql

注意mysql5.5的mysql_install_db在mysql5.5的/usr/local/mysql/scripts/mysql_install_db目录下。

clip_image004

clip_image005

查看实例初始化后的情况,如下:

tree -L 3 /data/

clip_image006

通过上图我们可以看到mysql实例在初始化后会创建基本的数据库。

现在再来看看初始化创建文件的属性,如下:

clip_image007

通过上图可以看到初始化创建的文件都是属于mysql这个用户的。

为什么会是这样呢?

这个是因为我们初始化加入--user=mysql这个选项。当然这个也是我们所需要的,因为这增加了mysql的安全性。

4.6 修改mysql实例的数据库目录权限

mysql实例初始化完毕后,我们现在把实例3306和实例3307的数据目录权限重新赋予给mysql用户。如下:

chown -R mysql:mysql /data/3306

chown -R mysql:mysql /data/3307

clip_image008

这个地方建议一定要操作一遍,否则在启动mysql实例时,会提示出错。导致mysql实例无法启动。

4.7 启动mysql5.5多实例

我们现在来启动实例。使用如下命令:

/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf &

/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf &

ps aux |grep mysqld

clip_image009

通过上图,我们可以看到实例3306和3307 都已经正常启动。也说明我们的mysql5.5多实例已经配置成功。

其实单实例mysql的启动也是通过mysqld_safe命令来启动。它默认会加载/etc/my.cnf文件。

4.8 登录mysql5.5多实例

登录多实例数据库时,我们需要加入该实例的socket文件,才能正常登录。现在以3306实例为例。

本地登录3306实例,如下:

mysql -uroot -p -S /data/3306/mysql.sock

clip_image010

本地登录进去后,我们在实例3306上创建一个ilanni3306的数据库。如下:

create database ilanni3306;

show databases;

clip_image011

现在我们远程登录实例3306,并查看刚刚新建的数据库。如下:

mysql -h192.168.1.213 -uroot -p -S /data/3306/mysql.sock

clip_image012

或者:mysql -h192.168.1.213 -uroot -p –P 3306

wKiom1R2ytKwKGhPAAHVloWUMaY090.jpg

通过上图,我们可以看到远程也是可以连接3306实例的。

4.9 修改mysql5.5多实例root密码

修改实例3306的root密码,使用mysqladmin命令。如下:

mysqladmin -uroot -p password 123456 -S /data/3306/mysql.sock

clip_image013

到此我们的mysql多实例部署就已经完成。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

解决Tomcat部署war包后无法访问的问题的方法 解决Tomcat部署war包后无法访问的问题的方法 Jan 13, 2024 pm 12:07 PM

如何解决Tomcat部署war包后无法成功访问的困扰,需要具体代码示例Tomcat作为一个广泛使用的JavaWeb服务器,允许开发人员将自己开发的Web应用打包为war文件进行部署。然而,有时候我们可能会遇到部署war包后无法成功访问的问题,这可能是由于配置不正确或其他原因引起的。在本文中,我们将提供一些解决这个困扰的具体代码示例。一、检查Tomcat服务

Yolov10:详解、部署、应用一站式齐全! Yolov10:详解、部署、应用一站式齐全! Jun 07, 2024 pm 12:05 PM

一、前言在过去的几年里,YOLOs由于其在计算成本和检测性能之间的有效平衡,已成为实时目标检测领域的主导范式。研究人员探索了YOLO的架构设计、优化目标、数据扩充策略等,取得了显着进展。同时,依赖非极大值抑制(NMS)进行后处理阻碍了YOLO的端到端部署,并对推理延迟产生不利影响。在YOLOs中,各种组件的设计缺乏全面彻底的检查,导致显着的计算冗余,限制了模型的能力。它提供了次优的效率,以及相对大的性能改进潜力。在这项工作中,目标是从后处理和模型架构两个方面进一步提高YOLO的性能效率边界。为此

Flask应用的Gunicorn部署指南 Flask应用的Gunicorn部署指南 Jan 17, 2024 am 08:13 AM

如何使用Gunicorn部署Flask应用?Flask是一个轻量级的PythonWeb框架,被广泛应用于开发各种类型的Web应用。而Gunicorn(GreenUnicorn)是一个基于Python的HTTP服务器,用于运行WSGI(WebServerGatewayInterface)应用。本文将介绍如何使用Gunicorn部署Flask应用,并附

Web项目部署在Tomcat上的最佳实践和常见问题解决方案 Web项目部署在Tomcat上的最佳实践和常见问题解决方案 Dec 29, 2023 am 08:21 AM

Tomcat部署Web项目的最佳实践和常见问题解决方法引言:Tomcat作为一个轻量级的Java应用服务器,在Web应用开发中得到了广泛应用。本文将介绍Tomcat部署Web项目的最佳实践和常见问题解决方法,并提供具体的代码示例,帮助读者更好地理解和应用。一、项目目录结构规划在部署Web项目之前,我们需要规划项目的目录结构。一般来说,我们可以按照以下方式组织

部署Gunicorn和Flask的无懈可击的组合 部署Gunicorn和Flask的无懈可击的组合 Jan 17, 2024 am 10:24 AM

Gunicorn和Flask:完美的部署组合,需要具体代码示例概述:对于开发者来说,选择适合的部署方式是非常重要的,尤其是对于Python的Web应用程序而言。在Python的Web框架中,Flask是非常流行的选择,而Gunicorn则是一种部署Python应用程序的服务器。本文将介绍Gunicorn和Flask的组合,并提供一些具体的代码示例,以帮助读者

PHP Jenkins 101:玩转 CI/CD 的不二法门 PHP Jenkins 101:玩转 CI/CD 的不二法门 Mar 09, 2024 am 10:28 AM

简介持续集成(CI)和持续部署(CD)是现代软件开发中的关键实践,它们可以帮助团队更快、更可靠地交付高质量的软件。jenkins是一个流行的开源CI/CD工具,它可以自动化构建、测试和部署流程。本文将介绍如何使用PHP与Jenkins一起设置CI/CD管道。设置Jenkins安装Jenkins:从Jenkins官网下载并安装Jenkins。创建项目:从Jenkins仪表板中创建一个新的项目,并将其命名为与您的php项目相匹配的名称。配置源代码管理:将您的PHP项目的git存储库配置为Jenkin

如何使用 PHP 部署和维护网站 如何使用 PHP 部署和维护网站 May 03, 2024 am 08:54 AM

要成功部署和维护PHP网站,需要执行以下步骤:选择Web服务器(如Apache或Nginx)安装PHP创建数据库并连接PHP上传代码到服务器设置域名和DNS监控网站维护步骤包括更新PHP和Web服务器、备份网站、监控错误日志和更新内容。

解决Tomcat部署war包后无法访问的方法 解决Tomcat部署war包后无法访问的方法 Jan 13, 2024 am 11:43 AM

Tomcat部署war包后无法访问的解决方案,需要具体代码示例引言:在Web开发中,Tomcat是使用最广泛的JavaWeb服务器之一。但是,有时候我们在部署war包到Tomcat后,出现无法访问的问题。本文将介绍几种可能导致无法访问的情况,并给出相应的解决方案和代码示例。一、确保war包已正确部署第一步是确保war包已正确部署到Tomcat的webapp

See all articles