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的多实例有两种方式可以实现,两种方式各有利弊.第一种是使用多个配置文件启动不同的进程来实现多实例,这种方 ...
随机推荐
- linux c++ 服务器端开发面试必看书籍
摘自别人博客,地址:http://blog.csdn.net/qianggezhishen/article/details/45951095 打算从这开始一本一本开始看 题外话: 推荐一个 githu ...
- EP-N8530S USB WIFI 驱动移植
/*********************************************************************** * EP-N8530S USB WIFI 驱动移植 * ...
- MySQL中的锁理解
1.目的:解决客户端并发访问的冲突问题 2.锁的分类 1.锁类型 1.读锁(共享锁) 查询(select):加读锁之后,别人不能更改表记录,但是可以进行查询. 2.写锁(互斥锁,排他锁) 更新(upd ...
- BZOJ - 3223 Tyvj 1729 文艺平衡树 (splay/无旋treap)
题目链接 splay: #include<bits/stdc++.h> using namespace std; typedef long long ll; ,inf=0x3f3f3f3f ...
- jquery动态增加或删除tr和td【实际项目】
难点: (1)动态增加.删除tr和td (2)每天tr和td都有下标,且下标要动态变化, (3)tr和td为什么下标不能随便写,原因是此处需要把所有tr中的数据以list的形式发送到后台对象中,所有每 ...
- 每天一个linux命令:【转载】pwd命令
Linux中用 pwd 命令来查看”当前工作目录“的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置. ...
- HDU2896 病毒侵袭 【AC自动机】
HDU2896 病毒侵袭 Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋--我们能在有生之年看到500年一 ...
- 自动化测试时Ios设备无法调出键盘问题
- 如何将常规的web 应用程序转化为云上多租户 SaaS 解决方案
如何将web 应用程序转化为多租户 SaaS 解决方案 https://www.ibm.com/developerworks/cn/cloud/library/cl-multitenantsaas/i ...
- 《DSP using MATLAB》示例Example7.24
代码: ws1 = 0.2*pi; wp1 = 0.35*pi; wp2 = 0.65*pi; ws2 = 0.8*pi; Rp = 1.0; As = 60; [delta1, delta2] = ...