MySQL多实例介绍
我们前面已经做了MySQL数据库的介绍以及为什么选择MySQL数据库,最后介绍了MySQL数据库在Linux系统下的多种安装方式,以及讲解了MySQL的二进制方式单实例安装、基础优化等,下面给大家讲解更为实用的MySQL多实例安装、主从复制集群等重要应用实践。
1.1什么是MySQL多实例?
这些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*600g、sas15k、2-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多实例介绍的更多相关文章
- mysql多实例介绍及配置
mysql多实例介绍及配置 1.mysql多实例介绍 1.1 什么是mysql多实例 mysql多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过 ...
- linux下mysql多实例安装
1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的 ...
- linux下mysql多实例安装(转)
转自:http://www.cnblogs.com/xuchenliang/p/6843990.html 1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上 ...
- linux运维、架构之路-MySQL多实例
一.MySQL多实例介绍 一台服务器上开启多个不同的服务端口(3306,3307,3308),运行多个MySQL服务进程,共用一套MySQL安装程序,多实例MySQL在逻辑上看是 ...
- Mysql多实例数据库安装应用
第1章 MySQL多实例数据库企业级应用实践 1.1 MySQL多实例介绍 前文已经讲了为什么选择MySQL数据库,以及MySQL数据库在Linux系统下的多种安装方式,同时以单实例讲解了编译方式安装 ...
- mysql系列之多实例介绍
介绍: mysql多实例,简单理解就是在一台服务器上,mysql服务开启多个不同的端口(如3306.3307),运行多个服务进程.这些 mysql 服务进程通过不同的 socket来监听不同的数据端口 ...
- shell脚本连接、读写、操作mysql数据库实例
本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...
- MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
本篇文章是对MySQL数据库引擎介绍.区别.创建和性能测试进行了详细的分析介绍,需要的朋友参考下 数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎 ...
- mysql多实例的配置和管理
原文地址:mysql多实例的配置和管理 作者:飞鸿无痕 多实例mysql的安装和管理 mysql的多实例有两种方式可以实现,两种方式各有利弊.第一种是使用多个配置文件启动不同的进程来实现多实例,这种方 ...
随机推荐
- java List 学习
要学习List<E>接口,首先,我知道它还有一个父接口Collection<E>.而Collection<E>又有一个超级接口Iterable<T>. ...
- JavaScript class 使用
/********************************************************************* * JavaScript class 使用 * 说明: * ...
- axios如何使用
我们知道,vue2.0以后,vue就不再对vue-resource进行更新,而是推荐axios,而大型项目都会使用 Vuex 来管理数据,所以这篇博客将结合两者来发送请求 1.安装axios cnpm ...
- JPA级联(一对一 一对多 多对多)注解【实际项目中摘取的】并非自己实际应用
下面把项目中的用户类中有个:一对一 一对多 多对多的注解对应关系列取出来用于学习 说明:项目运行正常 问题类:一对多.一对一.多对多 ============一对多 一方的设置 @One ...
- Loj 538 递推数列
Loj 538 递推数列 出题人:这题提高难度吧.于是放在了%你赛的 \(D1T2\) . 递推式为 \(a_i=k*a_{i-1}+a_{i-2}\) , 注意到 \(k\in \mathbb{N_ ...
- POJ3068 "Shortest" pair of paths 【费用流】
POJ3068 "Shortest" pair of paths Description A chemical company has an unusual shortest pa ...
- tableau-基本函数
一.数据术语 维度——包含诸如文本和日期等类别数据的字段. 度量——包含可以聚合的数字的字段. 二.字段图标 Abc 蓝色图标->离散字段 # 绿色图标->连续字段 =Abc = ...
- XML 的 XPath 语法
XPath 是 XML 路径语言(XML Path Language),用来确定XML文档中某部分位置的语言.无论是什么语言什么框架,几乎都可以使用 XPath 来高效查询 XML 文件. 本文将介绍 ...
- wpf Tree
code using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...
- counting elements--codility
lesson 4: counting elements 1. FrogRiverOne 2. PermCheck 3. MissingInteger 4. MaxCounters lesson 4: ...