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的多实例有两种方式可以实现,两种方式各有利弊.第一种是使用多个配置文件启动不同的进程来实现多实例,这种方 ...
随机推荐
- C# ASP.NET MVC 之 SignalR 学习 实时数据推送显示 配合 Echarts 推送实时图表
本文主要是我在刚开始学习 SignalR 的技术总结,网上找的学习方法和例子大多只是翻译了官方给的一个例子,并没有给出其他一些经典情况的示例,所以才有了本文总结,我在实现推送简单的数据后,就想到了如何 ...
- Wireshark小技巧
抓头部: 时间格式设置: 自定义颜色: 快速过滤TCP/UDP: 过滤一个TCP/UDP Stream: 根据感兴趣内容生成表达式:如果右击的是Apply as Filter则生成表达式并自动执行
- yum安装php5.5,php5.6和php7.0
本文主要介绍在CentOS系统下的php多个版本的安装使用 1.清理系统上的旧版本php 1)查询已安装的php软件 rpm -qa|grep php* yum list installed | gr ...
- Sublime Text 2 设置文件详解(转)
Sublime Text 2是那种让人会一眼就爱上的编辑器,不仅GUI让人眼前一亮,功能更是没的说,拓展性目前来说也完全够用了,网上介绍软件的文章和推荐插件的文章也不少,而且很不错,大家可以去找找自己 ...
- 在mac os x 下升级emacs
大概是09年的时候接触到emacs这个编辑器,当时我们c语言老师用的,他自信满满,而那时我是个vimer,所以每次看他按那么多组合键我就替他感觉手指头累啊. 再后来我用了几年vim写代码,再后来用了许 ...
- 【转载】VMware vSphere 5 HA详解 1
很久没有动笔写博客了.总算最近的几项工作告一段落,对iOS和Android的折腾也兴趣稍退,该写点技术博客了. 想写一篇关于VMware HA的博客由来已久,曾经做了些功课,查了不少资料,写了点笔记, ...
- hdu1575 Tr A 矩阵初识
A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n(2 <= n <= ...
- 一个简洁、好用的Pytorch训练模板
一个简洁.好用的Pytorch训练模板 代码地址:https://github.com/KinglittleQ/Pytorch-Template 怎么使用 1) 更改template.py 替换 __ ...
- JanusGraph Server配置
转自:https://www.cnblogs.com/jiyuqi/p/320267ff0b5052fad4613945e58ea1f1.html JanusGraph使用Gremlin Server ...
- linux vi详解
刚开始学着用linux,对vi命令不是很熟,在网上转接了一篇. vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 ...