我们前面已经做了MySQL数据库的介绍以及为什么选择MySQL数据库,最后介绍了MySQL数据库在Linux系统下的多种安装方式,以及讲解了MySQL的二进制方式单实例安装、基础优化等,下面给大家讲解更为实用的MySQL多实例安装、主从复制集群等重要应用实践。

1.1什么是MySQL多实例?

  简单的说,就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的服务端口提供各自的服务。
  这些MySQL多实例共用一套MySQL安装程序,使用不同(也可以相同)的my.cnf配置文件、启动程序、数据文件。在提供服务时,多实例MySQL在逻辑上看来是各自独立的,多个实例的自身是根据配置文件对应的设定值,来取得服务器的相关硬件资源多少。
作个比喻,MySQL多实例相当于房子的多个卧室一样,每个实例可以看作一个卧室,整个服务器就是一套房子,服务器的硬件资源(Cpu、Mem、Disk)可以看作房子的卫生间、厨房、客厅一样、是房子的公用资源、北漂蜗居在一起,肯定要共用上述资源。
注意:其实很多服务器都可以由多实例,甚至在门户网站用的很广泛,例如Nginx,Apache、Haproxy、Redis、Memcached,都可以多实例。

1.2MySQL多实例的作用与问题

q  有效利用服务器资源

当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务,且可以实现资源的逻辑隔离。

q  节约服务器资源

当公司资金紧张,但是数据库又需要各自尽量独立地提供服务,而且,需要主从复制等技术时,多实例就再好不过了。

MySQL多实例有它的好处,但也有其弊端,比如:会存在资源互相枪占的问题。

q  资源互相枪占问题

当某个数据库实例并发很高或者有SQL慢查询时,整个实例会消耗大量的系统CPU、磁盘I/O等资源,导致服务器上的其他数据库实例提供服务的质量一起下降。

2.MySQL多实例生产应用场景

2.1资金紧张型公司的选择

当公司业务访问量不太大,又不舍得花钱,但又希望不同业务的数据库服务各自尽量独立的听过服务互相不受影响,而且,需要主从同步进行等技术提供备份或读写分离服务,多实例就再好不过了。如:可以通过3台服务器部署6-9个实例,交叉做主从同步备份及读写分离,实现6-9台服务器才有的效果。这里要强调的是,所谓的尽量独立是相对的。

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

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

2.3门户网应用MySQL多实例场景

百度搜索引擎的数据库就是多实例,一般是从库,48核,内存96G,跑3-4个实例,sina网也是用的多实例,内存48G左右。门户网站使用多实例的目的是配硬件好的服务器节省IDC机柜空间,同时,跑多实例让硬件资源不浪费。

多实例MySQL详细步骤

1.1建立MySQL多实例的条件

1、安装好MySQL安装依赖的包

yum -y install ncurses-devel

yum -y install libaio-devel

2、选择二进制方式安装MySQL5.5,或者源码编译安装MySQL

1.2建立MySQL账号

首先以root身份登录到linux系统中,然后执行如下命令创建mysql组及用户

[root@mysql ~]# groupadd mysql

[root@mysql ~]# useradd -s /sbin/nologin -g mysql -M mysql

Useradd命令参数简要说明:

#1、-s /sbin/nologin 表示禁止该用户登录,加强安全。

#2、-g mysql 指定属于mysql组

#3、-M表示不创建用户家目录

1.3下载MySQL软件

通过rz或sftp等命令从本地上传mysql软件包到linux服务器

[root@mysql ~]# mkdir -p /application/tools/                     ß建立存放mysql软件包的目录

[root@mysql ~]# cd /application/tools/            ß进入软件包目录

[root@mysql tools]# ll mysql-5.5.32-linux2.6-x86_64.tar.gz   ß查看上传软件包

-rw-r--r-- 1 root root 186722932 Jun 20  2013 mysql-5.5.32-linux2.6-x86_64.tar.gz

1.4安装MYSQL软件

1、解压软件包,移动到规范的软件安装目录下

2、生成不带版本号的软链接/application/mysql,即mysql安装路径。

[root@mysql tools]# tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz  ß解包

[root@mysql tools]# mv mysql-5.5.32-linux2.6-x86_64 /application/ß移动到规范的软件安装目录下

[root@mysql tools]#ln -s /application/mysql-5.5.32/ /application/mysql  ß生成不带版本链接/application/mysql,即mysql安装路径

1.5创建MySQL多实例的数据文件目录

[root@mysql ~]# mkdir -p /data/{3306,3307}/data          ß上传相关mysql多实例的目录

/data/                        ß总的多实例根目录

|-- 3306                    ß3306实例的目录

|   |-- data           ß3306实例的数据文件目录

|   |-- my.cnf      ß3306实例配置文件

|   `-- mysql         ß3306实例的启动脚本

`-- 3307                     ß3307实例的目录

|-- data           ß3307实例的数据文件目录

|-- my.cnf      ß3307实例配置文件

`-- mysql         ß3307实例的启动脚本

提示:

1、mkdir -p /data/{3306,3307}/data相当于mkdir -p /data/3306/data; mkdir -p /data/3307/data两条命令。

2、如果是创建多个目录可以增加,如33008、3309,一般生产环境中2-3个实例就可以了。

生产硬件配置:MEM 32g、双8核、磁盘6*600gsas15k2-3个实例。

1.6配置MySQL多实例的文件权限

[root@mysql ~]# find /data/ -name mysql|xargs chmod 700  ß授权mysql多实例服务所有启动文件mysql可执行

[root@mysql ~]# find /data/ -name mysql|xargs ls -l           ß检查是否授权成功

-rwx------ 1 mysql mysql 1307 Jul 15  2013 /data/3306/mysql

-rwx------ 1 mysql mysql 1307 Jul 21  2013 /data/3307/mysql

1.7初始MySQL多实例的数据库文件

1、初始化命令为:

[root@mysql ~]# /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/data/3306/data/ --user=mysql    ß初始3306数据库

[root@mysql ~]# /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/data/3307/data/ --user=mysql    ß初始3307数据库

2、为什么要初始化数据库?

初始化的主要目的就是创建基础的数据库文件,例如:生成mysql库表等。

初始化后/data/{3306,3307}/data目录下就会有mysql等数据文件。

1.9授权MySQL多实例目录

[root@mysql ~]# chown -R mysql.mysql /data/                 ß授权mysql用户和组管理整个多实例目录/data

1.8配置MySQL命令全局使用路径

q   配置全局路径意义

如果不配置全局路径,就无法直接敲mysql等命令,也就是/application/mysql/bin/mysql

q   配置mysql路径方法

[root@mysql ~]# echo 'export PATH=/application/mysql/bin:$PATH' >/etc/profile.d/mysqld.sh

1.9启动MySQL多实例数据库

1、MySQL安装完成后,默认情况下,管理员账号root是无密码的。登录不同库需要指定不同库的sock路径,这个是在my.cnf里指定的。

启动数据库

[root@mysql ~]# /data/3306/mysql start                  ß启动3306mysql实例

[root@mysql ~]# /data/3307/mysql start                  ß启动3307mysql实例

关闭数据库,停止数据库需要密码(如果有密码,需要在脚本里面更改密码,否则报错)

[root@mysql ~]# /data/3306/mysql stop                   ß关闭3306 mysql实例

[root@mysql ~]# /data/3306/mysql stop                   ß关闭3307 mysql实例

连接数据库

[root@mysql ~]# mysql -S /data/3306/mysql.sock          ß通过指定sock来启动3306实例

[root@mysql ~]# mysql -S /data/3307/mysql.sock          ß通过指定sock来启动3307实例

1.10创建MySQL多实例的启动文件

多实例启动mysql服务实质,就是指定配置文件,通过mysqld_safe命令启动

[root@mysql ~]# /application/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &

[root@mysql ~]# /application/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf 2>&1 >/dev/null &

多实例停止mysql服务实质,指定sock,通过mysqladmin来shutdonwn,或者通过kill

[root@mysql ~]# /application/mysql/bin/mysqladmin -uroot -poldboy -S /data/3306/mysql.sock shutdown

[root@mysql ~]# /application/mysql/bin/mysqladmin -uroot -poldboy -S /data/3307/mysql.sock shutdown

MySQL多实例介绍的更多相关文章

  1. mysql多实例介绍及配置

    mysql多实例介绍及配置 1.mysql多实例介绍 1.1 什么是mysql多实例 mysql多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过 ...

  2. linux下mysql多实例安装

    1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的 ...

  3. linux下mysql多实例安装(转)

    转自:http://www.cnblogs.com/xuchenliang/p/6843990.html   1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上 ...

  4. linux运维、架构之路-MySQL多实例

    一.MySQL多实例介绍            一台服务器上开启多个不同的服务端口(3306,3307,3308),运行多个MySQL服务进程,共用一套MySQL安装程序,多实例MySQL在逻辑上看是 ...

  5. Mysql多实例数据库安装应用

    第1章 MySQL多实例数据库企业级应用实践 1.1 MySQL多实例介绍 前文已经讲了为什么选择MySQL数据库,以及MySQL数据库在Linux系统下的多种安装方式,同时以单实例讲解了编译方式安装 ...

  6. mysql系列之多实例介绍

    介绍: mysql多实例,简单理解就是在一台服务器上,mysql服务开启多个不同的端口(如3306.3307),运行多个服务进程.这些 mysql 服务进程通过不同的 socket来监听不同的数据端口 ...

  7. shell脚本连接、读写、操作mysql数据库实例

    本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...

  8. MySQL数据库引擎介绍、区别、创建和性能测试的深入分析

    本篇文章是对MySQL数据库引擎介绍.区别.创建和性能测试进行了详细的分析介绍,需要的朋友参考下   数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎 ...

  9. mysql多实例的配置和管理

    原文地址:mysql多实例的配置和管理 作者:飞鸿无痕 多实例mysql的安装和管理 mysql的多实例有两种方式可以实现,两种方式各有利弊.第一种是使用多个配置文件启动不同的进程来实现多实例,这种方 ...

随机推荐

  1. 实现Python代码发送邮件

    import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMETex ...

  2. css3实现对radio和checkbox的美化

    一,如何隐藏小程序中的很粗的滚动条,实现页面的美化?   tit: 在开发小程序的过程中,无论是横向或者纵向当产生滚动条时,系统默认的滚动条会很粗,效果展示十分难看,我们可以通过设置如下wxss代码实 ...

  3. C#与sqlserver开发问题

    最近不停的在考虑C#读取数据性能问题第一种使用ado拼接sql连接数据库第二种使用ado调用存储过程第三种使用entityframework加linq第四种使用反射IList<T> 1.从 ...

  4. java sundry tips

    1.关于Arrays 记得binarySearch方法返回的int 类型的数值的含义.    If the array contains multiple elements with the spec ...

  5. Codeforces 828C String Reconstruction【并查集巧妙运用】

    LINK 题目大意 给你n个串和在原串中的出现位置,问原串 思路 直接跑肯定是GG 考虑怎么优化 因为保证有解,所以考虑过的点我们就不再考虑 用并查集维护当前每个点之后最早的没有被更新过的点 然后就做 ...

  6. UWP 流畅设计中的光照效果(容易的 RevealBorderBrush 和不那么容易的 RevealBackgroundBrush)

    在 Windows 10.0.16299 中,RevealBrush 被引入,可以实现炫酷的鼠标滑过高亮效果和点击光照.本文将告诉大家如何完整地实现这样的效果. Reveal 的效果(自带) 在微软官 ...

  7. Quartz 2D编程指南(4) - 颜色和颜色空间

    不同的设备(显示器.打印机.扫描仪.摄像头)处理颜色的方式是不同的.每种设备都有其所能支持的颜色值范围.一种设备能支持的颜色可能在其它设备中无法支持.为了有效的使用颜色及理解Quartz 2D中用于颜 ...

  8. python3 升级 pip9.0.1 到pip-9.0.3

    首先试试 python -m pip install --upgrade pip python3.5 升级 pip-9.0.3报错 You are using pip version 9.0.1, h ...

  9. LeetCode 430. Flatten a Multilevel Doubly Linked List

    原题链接在这里:https://leetcode.com/problems/flatten-a-multilevel-doubly-linked-list/description/ 题目: You a ...

  10. Mac 中的sublime text3 如何安装插件

    Mac中sublime text安装插件的步骤: 在sublime text中顶部标签栏中View–>Show Console,或者按快捷键control+`打开. 在下面输入框中粘贴进以下代码 ...