金昌大型网站建设费用,小制作小发明大全,智诚外包网,vue做pc网站目录
MySQL多实例管理
单实例
什么是多实例
多实例的好处
多实例的弊端
MySQL多实例用在哪些场景
资金紧张的公司
用户并发访问量不大的业务
大型网站也有用多实例
部署MySQL多实例
rpm和源码的优缺点
二进制方式安装mysql
准备二进制mysql运行所需的环境
准备多…目录
MySQL多实例管理
单实例
什么是多实例
多实例的好处
多实例的弊端
MySQL多实例用在哪些场景
资金紧张的公司
用户并发访问量不大的业务
大型网站也有用多实例
部署MySQL多实例
rpm和源码的优缺点
二进制方式安装mysql
准备二进制mysql运行所需的环境
准备多个实例的配置文件
3306---mysql启停脚本
3307---mysql启停脚本
用户、组授权
PATH配置
3306、3307错误日志创建
创建多个实例对应的数据目录
见证mysql的多实例初始化
初始化3306的数据
初始化3307的数据
启动登录3306数据库
启动登录3307数据库实例 MySQL多实例管理
前面已经针对MySQL数据库进行了介绍并说明了为什么选择MySQL数据库以及MySQL数据库在Linux系统下的多种安装方式同时以单实例讲解了如何以编译方式安装MySQL和基础安全优化等内容本章将为大家讲解更为实用的MSQL多实例安装百度、淘宝、阿里、新浪等大公司无一例外地都会使用多实例的方式部署数据库那么是什么原因促使他们选择多实例数据库的部署方式呢?
单实例
数据库架构师之道MySQL安装与系统整合指南-CSDN博客https://blog.csdn.net/Srlua/article/details/136144160?spm1001.2014.3001.5501 单实例也就是Srlua前面带着大家在一台linux上某个目录下安装了一个mysql且启动了这个mysql这就表示这个机器上有单独的一个mysql个体一个实例。 单实例 什么是多实例
一句话 多实例就是一台linux上同时运行多个mysql当然是区别了不同的端口例如3306、3307、3308。 运行三个mysql数据库 这三个mysql就相当于三个独立的卧室互相没关系在linux上的呈现区别就是 不同的端口 不同的数据目录不同的配置文件 不同的mysql进程不同的pid 打个比方吧MySQL多实例就相当于房子的多个卧室每个实例可以看作是一间卧室整个服务器就是一套房子服务器的硬件资源(cpu、
mem、disk)、软件资源(CentOS操作系统)可以看作是房子的卫生间、厨房、客厅是房子的公用资源。若你是北漂的小伙伴与朋友一起租
房相信对此能有更好地理解大家蜗居在一起休息时在自己的卧室但出来活动肯定是要共用上述公共资源的。图是MySQL多实例形象示意
图。 因此这个多实例的概念也就是一个程序被我们运行了多个单独的个体这就不限于mysql了 nginx、apache、redis、memcached都可以多实例只要他们的端口、数据文件、进程都是单独的就好 多实例的好处
可有效利用服务器资源。当单个服务器资源有剩余时可以充分利用剩余的资源提供更多的服务且可以实现资源的逻辑隔离。
节约服务器资源。若公司资金紧张但是数据库又需要各自尽量独立地提供服务而且还需要用到主从复制等技术那么选择多实例就再好不过了。
例如公司有多个业务需要用到好几套mysql数据库都得单独的部署数据区分开
多实例的弊端
MySQL多实例有它的好处也有其弊端比如会存在资源互相抢占的问题。当某个数据库实例并发很高或者有SQL慢查询时整个实例会消耗大量的系统CPU、磁盘I/0等资源导致服务器上的其他数据库实例提供服务的质量一起下降。
这就相当于大家住在一个房子的不同卧室中早晨起来上班都要刷牙、洗脸等这样卫生间就会长期处于占用状态其他人则必须要等待。
不同实例获取的资源是相对独立的无法像虚拟化一样完全隔离。(毕竟大家都是在同一个文件系统下)
我们可以通过学习使用虚拟化后就可以实现完全隔离。
MySQL多实例用在哪些场景
资金紧张的公司
若公司资金紧张公司业务访问量不太大但又希望不同业务的数据库服务各自能够尽量独立地提供服务而互相不受影响或者还有需要主从复制等技术提供备份或读写分离服务的需求那么多实例就再好不过了。
比如:可以通过3台服务器部署9~15个实例交叉做主从复制、数据备份及读写分离这样就可以等同于9~15台服务器每个只装一个数据库才有的效果。(很省钱了)这里需要强调的是所谓的尽量独立是相对的。
用户并发访问量不大的业务
当公司业务访问量不太大的时候服务器的资源基本上都是浪费的这时就很适合多实例的应用如果对SQL语句的优化做得比较好MVSQL多实例会是一个很值得使用的技术即使并发很大合理分配好系统资源以及搭配好服务也不会有太大的问题。 例如某古董、古玩展示的网站比起电商网站并发量会小一些更多追求稳定而不是高性能、高并发。 大型网站也有用多实例
门户网站通常都会使用多实例因为配置硬件好的服务器可以节省IDC机柜空间同时运行多实例也会减少硬件资源占用率不满的浪费。 比如百度公司的很多数据库都是多实例的不过一般是 从库 采用多实例例如某部门中使用的IBM服务器为48核CPU内存96GB一台服务器运行3~4个实例;
此外新浪网也有采用多实例的情况内存48GB左右 专门运行数据库的服务器一般要求性能较高、因为数据库大多时候是网站性能的瓶颈。 要求CPU、内存、磁盘都得很强大。 部署MySQL多实例 基于一个mysql应用 初始化三次生成3个独立的mysql数据目录即为三个mysql独立的实例 我们采用的形式是 每个实例都有单独的 配置文件 启动脚本 数据目录 安装方式有如下几种 二进制安装(软件包名字较长、带有版本号、平台信息、等) 代码已经被编译过下载、解压后可以直接在对应的系统平台上运行二进制包比较大使用比较简单。 如mysql-5.0.45-linux-x86_64-glibc23.tar.gz。 源代码安装(软件包基本只是一个携带版本号的tar包) 需要在机器上重新编译安装时间较久对于系统环境依赖性比较重 如mysql-5.0.45.tar.gz RPM包安装 rpm是红泡的一个软件包管理系统 rpm包也是二进制包的一种但是也分为两种 源码rpm包源代码被打包成了rpm格式(看不到源代码了tar包可以看到源代码)还得重新编译 rpmbuild --rebuild name-version-release.arch.src.rpm 二进制rpm包可以直接安装rpm包使用 name-version-release.arch.rpm
rpm和源码的优缺点
RPM包优点: 1)RPM包管理简单只需要通过几个简单的命令就可以实现软件包的安装升级卸载和查询 2)安装速度比源码包形式快(源码包主要是make编译花费时间较长)
RPM包缺点: 1)RPM包是事先已经经过编译的二进制包可以直接安装使用因此无法再看到源码 2)如上所述功能已经被固定无法灵活的删除或新增功能 3)RPM包存在很强的依赖性大部分RPM包的顺利安装需要安装很多个依赖RPM包 4)卸载软件包的时候如果不小心会卸载涉及到依赖关系很有可能就会卸载移除掉系统所需软件导致系统奔溃 对于已经编译成二进制的rpm包由于操作系统环境不同一般不能混用。 二进制方式安装mysql
二进制代码包
https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
下载安装
wget https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz 把文件剪切到/home/Srlua/tools目录下或者直接在/home/Srlua/tools目录下下载安装
安装mysql运行所需的基础依赖
yum install ncurses-devel libaio-devel gcc make cmake -y
清空之前编译安装的mysql配置的环境的清理
清空PATH有关的mysql 去到/etc/profile中 停止当前linux的mysql(如果存在mysql端口的话) 创建mysql用户
这里我们上次创建了所以无需创建 准备好mysql多实例的数据目录 解压缩二进制的mysql软件包
-C 指定目录解压缩
[rootsrlua001 tools]# tar -zxxvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz -C /application
解压缩最后一步查看mysql的安装包信息 准备二进制mysql运行所需的环境 准备mysql多实例的各个配置文件 3306 3307 准备各个启停管理脚本 数据初始化生成mysql的初始化data数据
准备多个实例的配置文件
确认路径 3306实例的my.cnf [client]
[mysqld]
port3306
socket/my_mysql/3306/mysql.sock
basedir/application/mysql-5.6.40-linux-glibc2.12-x86_64/
datadir/my_mysql/3306/data
log-bin/my_mysql/3306/mysql-bin
server-id1
[mysqld_safe]
log-error/my_mysql/3306/mysql_3306_error.log
pid-file/my_mysql/3306/mysqld_3306.pid :wq保存退出 注意修改如下参数 第一个是所有的3306换成3307 server-id一定不能和3306实例重复 3307 第二个实例的配置文件 [client]
[mysqld]
port3307
socket/my_mysql/3307/mysql.sock
basedir/application/mysql-5.6.40-linux-glibc2.12-x86_64/
datadir/my_mysql/3307/data
log-bin/my_mysql/3307/mysql-bin
server-id2
[mysqld_safe]
log-error/my_mysql/3307/mysql_3307_error.log
pid-file/my_mysql/3307/mysqld_3307.pid
3306---mysql启停脚本 注意3307和3306 这2个实例配置文件也得区别开 自行手动修改 3306/mysqld_3306 port3306
mysql_usermysql
Cmdpath/application/mysql-5.6.40-linux-glibc2.12-x86_64/bin/
mysql_sock/my_mysql/${port}/mysql.sock
mysqld_pid_file_path/my_mysql/${port}/mysqld_${port}.pid
start(){
if [ ! -e $mysql_sock ];thenprintf Starting MySQL...\n/bin/sh ${Cmdpath}/mysqld_safe --defaults-file/my_mysql/${port}/my.cnf --pid-file$mysqld_pid_file_path 21 /dev/null sleep 3
elseprintf MySQL is running...\nexit 1
fi
}
stop(){
if [ ! -e $mysql_sock ];thenprintf MySQL is stopped...\nexit 1
elseprintf Stoping MysQL...\nmysqld_pidcat $mysqld_pid_file_path
if(kill -0 $mysqld_pid 2/dev/null)thenkill $mysqld_pidsleep 2fi
fi
}
restart(){printf Restarting MysQL...\nstopsleep 2start
}
case $1 in
start)start
;;
stop)stop
;;
restart)restart
;;
*)printf Usage: /data/${port}/mysql{start|stop|restart}\n
esac 赋予可执行权限 chmod x mysql_3306 3307---mysql启停脚本
port3307
mysql_usermysql
Cmdpath/application/mysql-5.6.40-linux-glibc2.12-x86_64/bin/
mysql_sock/my_mysql/${port}/mysql.sock
mysqld_pid_file_path/my_mysql/${port}/mysqld_${port}.pid
start(){
if [ ! -e $mysql_sock ];thenprintf Starting MySQL...\n/bin/sh ${Cmdpath}/mysqld_safe --defaults-file/my_mysql/${port}/my.cnf --pid-file$mysqld_pid_file_path 21 /dev/null sleep 3
elseprintf MySQL is running...\nexit 1
fi
}
stop(){
if [ ! -e $mysql_sock ];thenprintf MySQL is stopped...\nexit 1
elseprintf Stoping MysQL...\nmysqld_pidcat $mysqld_pid_file_path
if(kill -0 $mysqld_pid 2/dev/null)thenkill $mysqld_pidsleep 2fi
fi
}
restart(){printf Restarting MysQL...\nstopsleep 2start
}
case $1 in
start)start
;;
stop)stop
;;
restart)restart
;;
*)printf Usage: /data/${port}/mysql{start|stop|restart}\n
esac 赋予可执行权限 chmod x mysql_3307
用户、组授权 降低权限全部赋予给mysql chown -R mysql.mysql /my_mysql/ PATH配置
vim /etc/profile 3306、3307错误日志创建 创建多个实例对应的数据目录 分别创建 3306 3307 2个实例的数据目录 见证mysql的多实例初始化
初始化3306的数据 执行初始化生成mysql运行所需的初始数据 /application/mysql-5.6.40-linux-glibc2.12-x86_64/scripts/mysql_install_db --defaults-file/my_mysql/3306/my.cnf --basedir/application/mysql-5.6.40-linux-glibc2.12-x86_64/ --datadir/my_mysql/3306/data/ --usermysql 初始化3307的数据
/application/mysql-5.6.40-linux-glibc2.12-x86_64/scripts/mysql_install_db --defaults-file/my_mysql/3307/my.cnf --basedir/application/mysql-5.6.40-linux-glibc2.12-x86_64/ --datadir/my_mysql/3307/data/ --usermysql 出现两个OK
启动登录3306数据库
确保当前没有其他mysql
netstat -tunlp |grep mysql 用如下命令登录使用sock套接字文件登录
mysql -S /my_mysql/3306/mysql.sock 启动登录3307数据库实例
用如下命令登录使用sock套接字文件登录
mysql -S /my_mysql/3307/mysql.sock 安装过程翻车了很多次/(ㄒoㄒ)/~~支持一下呗mua! (*╯3╰)~
希望对你有帮助加油
若您认为本文内容有益请不吝赐予赞同并订阅以便持续接收有价值的信息。衷心感谢您的关注和支持