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] mysql的安装和使用
1.安装 sudo apt-get install mysql-server sudo apt-get install mysql-client 安装的时候会提示设置密码 2.使用 (1)mysql操 ...
- HDU 1043
http://acm.hdu.edu.cn/showproblem.php?pid=1043 http://www.cnblogs.com/goodness/archive/2010/05/04/17 ...
- discuz数据库迁移,改密码后,相关配置文件修改
网上看到这篇文章,觉得有用就收藏下 网站系统需要修改的位置有两处 Discuz 和 UC-center ①路径:/wwwroot/config/config_global.php 这个根据你网站安装的 ...
- 写一个Python的windows服务
1. 安装pywin32和pyinstaller pip install pywin32 pip install pyinstaller 2.写一个服务Demo # -*- coding: utf-8 ...
- Filter学习(一)
一.Filter简介 Filter:可以对web服务器管理的所有web资源(如Jsp, Servlet, 静态图片文件或静态 html 文件等)进行拦截,从而实现一些特殊的功能.例如实现URL级别的权 ...
- pat乙级 1091 N-自守数 (15 分)
如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3×922=25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守 ...
- testem方便的web tdd 测试框架使用
备注: 单元测试,对于日常的开发是比较重要的,testem 简化了我们的代码编写,以及运行. 主要特性: a. 支持的测试框架有:jasmine quint mocha buster ...
- Hyper-V 手动导入虚机配置实例(转载)
原文转载:http://blog.51cto.com/bobzy/980241 Hyper-V提供了很方便的虚机导入和导出功能.平时假如我们想导出虚机,先选中虚机,然后鼠标右键在出现菜单列表中选中“导 ...
- 解决EditPlus的默认编码方式有关问题(转)
http://blog.csdn.net/hzhsan/article/details/7911660 最近在使用英文版的Editplus写代码的时候,发现中文字符在调试过程中都变成了乱码, 发现是E ...
- 12.Python使用requests发送post请求
1.我们使用postman进行接口测试的时候,发现POST请求方式的编码有3种,具体的编码方式如下: A:application/x-www-form-urlencoded ==最常见的post提交数 ...