版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
云计算集群技术与应用教学设计课程名称:云计算集群技术与应用__授课年级:_______________________授课学期:_______________________教师姓名:_______________________年月日课程名称第3章数据库集群计划学时4学时内容分析本章主要介绍数据库集群的相关知识,包含数据库简介、数据库集群简介、数据库集群架构、数据库主从复制实战、数据库读写分离实战。教学目标与教学要求【知识目标】理解数据库简介。理解数据库集群简介。理解数据库集群架构。【技能目标】掌握部署数据库主从复制。掌握部署数据库读写分离。【思政育人目标】引导学生认识学习的过程也是由简入难的逐步积累过程,并且学习的过程也需要秉承严谨、踏实、精益求精的大国工匠精神。引导学生树立科学严谨的架构精神,数据安全意识。培养学生项目开发的全局观和系统思维。教学重点数据库集群架构、数据库主从复制实战、数据库读写分离实战教学难点数据库集群架构、数据库主从复制实战、数据库读写分离实战教学方式课堂讲解配合ppt演示2学时,上机演练2学时教学过程第一学时(数据库简介、数据库集群简介、数据库集群架构)一、提出需求,导入学习任务(1)思考数据库集群的学习应该从何入手。通过MySQL宕机事故,引出数据库集群的重要性。事件一:2012年9月10-11日,GitHub服务中断,持续1.46小时。宕机的原因为GitHub将一对古老的、基于DRBD的MySQL服务器替换成一个拥有3个节点的集群。在合并到新系统时,“活动的”数据库自动出现了多个故障转移(failover),同时又因为集群管理软件的错误操作导致性能下降,最终造成网站宕机。事件二:2012年6月29日,AmazonRDS宕机事件,持续时间3小时。一个被称为derecho的强雷暴天气系统通过弗吉尼亚州北部,使得亚马逊在该地区的设施失去了动力,发电机不能正常运行,消耗应急电源的不间断电源(电源)系统,从而导致运行在AmazonRDS上的大概上千个MySQL数据库宕机。(2)明确学习方向。理解相关数据库。理解数据库集群。理解数据库集群架构。二、知识讲解(一)数据库简介1.概念数据库(Database)是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储及管理数据的仓库,可视为电子化的文件柜,用户可以对文件中的数据进行新增、查询、更新、删除等操作。2.数据库模型早期比较受欢迎的数据库模型有三种,分别为层次式数据库、网络式数据库、关系型数据库。而现代的互联网世界中,最常用的数据库模型只有两种,关系型数据库和非关系型数据库。关系型数据库关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。非关系型数据库非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“NotOnlySQL”,指的是非关系型数据库,而不是“NOSQL”的意思,因此,NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统数据库的一个有效补充。NoSQL数据库在特定的场景下可以发挥难以想象的高效率和高性能。(二)数据库集群简介1.概念数据库集群,顾名思义,配置若干(两台及以上)台数据库服务器组成一个系统,作为一个整体为客户端提供透明的数据服务。大量读写请求来临时,数据库集群可以将请求分发给不同的集群节点,这样的处理使得数据的读写速度更快,也更好地解决了高并发情况下单节点数据库的性能问题。2.分布式数据库分布式数据库是指利用网络将分散的数据存储节点连接起来组成一个整体提供数据库服务。用户通过分布式数据库系统的就近访问原则,可以访问就近的数据库节点,数据库各节点之间能够同步数据传输,实现了数据的一致性。3.数据库集群与分布式数据库系统的对比图4.数据库集群与分布式数据库系统的区别数据库可以具有多个相似或相同的数据集,分布式数据库系统一般具有完全不同的数据集。数据库集群的各节点使用相同的操作系统、数据库版本,以及相同版本的补丁包,而分布式数据库系统中各节点可以使用不同的操作系统和不同版本的数据库系统。数据库集群一般情况下是建立在高速局域网内,而分布式数据库系统还可以建立在异地远程网络。(三)数据库集群架构主从复制主从复制架构,顾名思义,分为主数据库和从数据库。从数据库要求与主数据库有完全相同数据库环境,当主数据库实时更新数据信息时,主数据库会将更新信息写入一个二进制文件binlog中,然后发送到从数据库中。从服务器成功连接主服务器后,读取主服务器的二进制文件,并执行相应的操作直至最后一次更新的位置,然后等待主服务器通知新的更新。数据的完整性依赖于主库保存的binlog,比如主库宕机了,还可以通过binlog把丢失的数据同步到从库中,以加强数据的安全性。一主多从复制的逻辑图。多级复制一主多从的复制架构可以解决大部分请求压力较大的场景需求,随着业务量的增大,主库发送binlog日志到从库的I/O访问频率过高,网络压力也会随着增大,这时多级复制架构可以解决主库额外的I/O线程压力和网络压力。MySQL的多级复制逻辑图。双主复制双主复制(DualMaster)又称为主主复制,即两个主数据库,且两个主库互为主从。主主复制架构常用于数据库管理员做维护时需要主从切换的场景,从而避免了重复搭建从库的麻烦。主主复制逻辑图。多源复制MySQL5.7版本开始支持多源(Multi-Source)复制,实现了多主一从复制,将多个数据库(Master)的数据集中发送到1台从库(Slave)上。多源复制结构要求至少包含两个主库和一个从库,常被用于复杂的业务需求,不但可以支撑OLTP(联机事务处理),又能够满足OLAP(联机分析处理)。多源复制的逻辑图。三、知识巩固(1)回顾上课前的学习目标,对本节课知识点进行总结。(2)使用第3章课后作业。第二学时(数据库主从复制实战、数据库读写分离实战)一、回顾上节课内容(1)对上节课布置的作业以及学生提出的问题进行答疑解惑。(2)回顾上节课内容,引出本节课主题。(3)明确学习方向。掌握部署数据库主从复制。掌握部署数据库读写分离。二、知识讲解(一)数据库主从复制实战1.MySQL主从复制原理MySQL的主从复制是一个异步的复制过程,数据将从一个MySQL数据库(Master)复制到另外一个MySQL数据库(Slave),是由三个线程参与完成了在Master与Slave之间数据复制的过程。其中有两个线程(SQL线程和I/O线程)在Slave端,另外一个线程(I/O线程)在Master端。要实现MySQL的主从复制,首先必须打开Master端的binlog记录功能,否则就无法实现。因为整个复制过程实际上就是Slave端从Master端获取binlog日志,然后再在Slave上以相同的顺序执行获取的binlog日志中所记录的各种SQL操作。要打开MySQL的binlog记录功能,可以通过在MySQL的配置文件f中的mysqld模块增加log_bin参数来实现。MySQL主从复制的工作过程。2.实验环境准备2台VM虚拟机(或者物理服务器),一台做主数据库(master1),一台从数据库(slave1),具体如表。配置项主服务器从服务器HostNamemaster1slave1IP4445ServerID144145版本号MySQL5.7MySQL5.73.部署MySQL(1)配置MySQL镜像源(2)下载并安装MySQL查看Yum仓库中提供的MySQL版本。市场中现在使用的是较稳定的5.7版本,这里借助Yum管理工具包关闭MySQL8.0版本,开启5.7版本进行实验。首先下载Yum管理工具包。[root@qfedu~]#yum-yinstallyum-utils使用yum-config-manager命令关闭MySQL8.0版本,并开启MySQL5.7版本。[root@qfedu~]#yum-config-manager--disablemysql80-community[root@qfedu~]#yum-config-manager--enablemysql57-community设置完成后再次确认目前仓库中提供的MySQL版本。[root@qfedu~]#yumrepolistenabled|grepmysqlmysql-connectors-community/x86_64MySQLConnectorsCommunity221mysql-tools-community/x86_64MySQLToolsCommunity135mysql57-community/x86_64MySQL5.7CommunityServer使用Yum命令下载并安装MySQL,具体如下所示。[root@qfedu~]#yum-yinstallmysql-community-server(3)初始化MySQL安装完成后,启动MySQL服务并设置开机自启。[root@qfedu~]#systemctlstartmysqld[root@qfedu~]#systemctlenablemysqld查看系统为root用户随机生成的临时密码。[root@qfedu~]#cat/var/log/mysqld.log|grep"temporarypassword"2020-01-03T07:22:33.997442Z1[Note]Atemporarypasswordisgeneratedforroot@localhost:g8R4#F*4l,WX临时密码为“g8R4#F*4l,WX”。使用root用户及临时密码,进入数据库。[root@qfedu~]#mysql-uroot-p'g8R4#F*4l,WX'……mysql>看见mysql>提示符,说明数据库登录成功。更改数据库的密码为“QianFeng@123”。mysql>ALTERUSER'root'@'localhost'IDENTIFIEDBY'qianfeng@123';ERROR1819(HY000):Yourpassworddoesnotsatisfythecurrentpolicyrequirements由上述结果可知,返回了一个错误提示,设置的密码不符合密码安全策略。针对以上问题,需要在配置文件中设置密码强度。[root@qfedu~]#vim/etc/f#在[mysqld]下添加如下内容[mysqld]validate_password=off然后重启数据库,重新登录数据库,修改密码。[root@qfedu~]#systemctlrestartmysqld[root@qfedu~]#mysql-uroot-p'g8R4#F*4l,WX'······此处省略部分代码······mysql>alteruser'root'@'localhost'identifiedby'qianfeng@123';QueryOK,0rowsaffected(0.11sec)使用root用户及设定的新密码登陆数据库,验证密码是否更改成功。[root@qfedu~]#mysql-uroot-p'QianFeng@123'······此处省略部分代码······mysql>由上述结果可知,密码更改成功,数据库初始化完成。4.部署主从复制集群(1)配置主服务器在配置主从复制集群时,需要在主服务器上开启二进制日志并配置唯一的服务器ID,配置完成后需要重新启动mysqld服务。编辑主服务器的配置文件f。[root@master1~]#vi/etc/f[mysqld]#添加如下代码log-bin=/var/log/mysql/mysql-binserver-id=144创建相关的日志目录并赋予权限。[root@master1~]#mkdir/var/log/mysql[root@master1~]#chownmysql.mysql/var/log/mysql目录创建完成后,重新启动mysqld服务。[root@master1~]#systemctlrestartmysqld为了保证在使用带事务的InnoDB进行复制设置时尽可能提高持久性和一致性,也需要在主服务器(master1)的f配置文件中加入以下配置项。innodb_flush_log_at_trx_commit=1sync_binlog=1在MySQL中查看skip_networking选项状态。mysql>showvariableslike'%skip_networking%';+-----------------+-------+|Variable_name|Value|+-----------------+-------+|skip_networking|OFF|+-----------------+-------+1rowinset(0.00sec)由上述结果可知,skip_networking选项为关闭状态。(2)创建指定用户创建一个专门用于复制数据的用户,每个从服务器需要使用MySQL主服务器上的用户名和密码连接到主服务器上。例如,在主服务上创建用户repl,并允许该用户可以从任何主机上连接到Master上进行复制操作。mysql>createuser'repl'@'%';QueryOK,0rowsaffected(0.02sec)mysql>grantreplicationslaveon*.*to'repl'@'%'identifiedby'qianfeng@123';QueryOK,0rowsaffected(0.02sec)用户和权限设置完成后,可以尝试在从服务器上使用刚才创建的用户进行测试连接。[root@slave1~]#mysql-urepl-p'qianfeng@123'-hmaster1……mysql>由上述结果可知,用户repl可以通过从服务器登陆主服务器。(3)拷贝数据在搭建主从复制集群时,主服务上可能会已经存在数据,为了模拟真实的生产环境,在主服务器上插入测试数据。mysql>createdatabasetest;mysql>createtabletest.t1(idint,namevarchar(50));mysql>insertintotest.t1values(1,"lucky"),(2,"Cookie"),(3,"Belle");在启动复制之前,需要将主服务器中现有的数据与从服务器保持同步,在进行相关操作时需要保持客户端的正常运行,以便锁定保持不变。将主服务器中现有的数据导出,并将导出的数据复制到每个从服务器上。本次实例将使用mysqldump工具创建要复制的所有数据库转储。[root@master1~]#mysqldump-uroot-p'qianfeng@123'--all-databases--master-data=1>dbdump.db查看备份中数据记录的二进制日志的位置,以便在从服务器配置中使用。[root@master1~]#vimdbdump.db……22CHANGEMASTERTOMASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1255;//省略部分内容//使用scp或者rsync工具将备份出来的数据传输到从服务器上。[root@master1~]#scpdbdump.dbroot@slave1:/root/(4)配置从服务器数据拷贝完成后,在从服务器的f配置文件中添加ServerID。[root@slave1~]#vi/etc/f[mysqld]server-id=145需要注意,配置修改完成后需要重新启动mysqld的服务。[root@slave1~]#systemctlrestartmysqld接下来,在从服务器的数据库中导入备份数据。mysql>source/root/dbdump.db从服务器上连接主服务器,注意相关信息的准确性。mysql>CHANGEMASTERTO->master_host='master1',->master_user='repl',->master_password='qianfeng@123',->master_log_file='mysql-bin.000001',->master_log_pos=1255;在从服务器开始复制线程。mysql>startslave;在从服务器执行如下操作可以验证线程是否工作正常。mysql>showslavestatus\G……Slave_IO_Running:YesSlave_SQL_Running:Yes……I/O线程和SQL线程的状态都为YES,证明主从复制线程启动成功。5.测试数据同步(详见第3章PPT)(1)复制状态验证(2)故障排除(3)加入新的从服务器(二)数据库读写分离实战1.数据库代理(1)代理服务器是网络信息的中转站,是信息“交流”的使者,常见的数据库代理架构。(2)代理服务器提供统一的入口供用户访问,当用户访问代理服务器时,代理服务器会将用户请求平均的分发到后端的服务器集群,并且其本身并不会做任何的数据处理。这样一来,代理服务器不仅起到负载均衡的作用,而且同时还提供了独立的端口和IP。当后端的服务器处理完请求后也会通过代理服务器返回给用户,基本的网络拓扑如图。数据库代理(DBProxy)又被称为数据库中间件,当面对大量的应用请求时,代理可以通过对数据进行分片以及自身的自动路由与聚合机制实现对不同请求的分发,以此来达到数据库的读写分离功能。2.Mycat读写分离原理Mycat是一款开源的数据库代理软件,由阿里巴巴在Cobar的基础上进行改良,不仅支持市场上主流的数据库(MySQL、Oracle、MongoDB等),而且还支持数据库中的事务操作。通过搭建Mycat代理,实现MySQL双主双从集群的读写分离。读写分离集群架构如图。3.实验环境读写分离集群中,各服务器的详细参数如表。主机名称主机IP系统Mycat40Centos7Master144Centos7Slave145Centos7Master241Centos7Slave242Centos74.部署流程(详见第3章PPT)(1)配置Java环境在Mycat服务器中使用Wget工具下载相应的JDK压缩包并解压。[root@mycat~]#lsjdk-8u311-linux-x64.tar.gz[root@mycat~]#tarxfjdk-8u311-linux-x64.tar.gz-C/usr/local/[root@mycat~]#ln-s/usr/localk1.8.0_311//usr/local/java解压完成后需要在全局配置文件内追加设置Java环境变量。[root@mycat~]#vim/etc/profileJAVA_HOME=/usr/local/javaPATH=$JAVA_HOME/bin:$PATHexportJAVA_HOMEPATH刷新全局变量,使环境变量生效。[root@mycat~]#source/etc/profile使用相关命令验证Java环境是否安装成功。[root@mycat~]#env|grepJAVAJAVA_HOME=/usr/local/java[root@mycat~]#java-versionjavaversion"1.8.0_311"Java(TM)SERuntimeEnvironment(build1.8.0_311-b11)JavaHotSpot(TM)64-BitServerVM(build25.311-b11,mixedmode)(2)配置MycatJava环境搭建完成后,即可部署Mycat服务。首先,为了让应用之间互不影响,可以为Mycat创建一个专属的用户。#查看是否已经存在Mycat用户[root@mycat~]#cat/etc/group|grepmycat[root@mycat~]#cat/etc/passwd|grepmycat#创建Mycat用户[root@mycat~]#groupaddmycat[root@mycat~]#useradd-gmycatmycat在Mycat服务器中使用wget工具进行下载,下载完成后将压缩包解压至指定路径即可。[root@mycat~]#wget//20190828135747/Mycat-server--release-20190828135747-linux.tar.gz[root@mycat~]#tarxfMycat-server--release-20190828135747-linux.tar.gz-C/usr/local/[root@mycat~]#ls/usr/local/mycat/bincatletconfliblogsversion.txt由上述结果可知,解压在/usr/local/目录下有一个mycat文件夹,将该文件夹的所有者设置为mycat用户。[root@mycat~]#chown-Rmycat:mycat/usr/local/mycatetc文件下的profile文件是设置系统级别的环境变量和启动程序的,其中的配置会对所有用户生效。此时只需修改单个用户的环境变量,编辑~/.bashrc文件。[root@mycat~]#vim~/.bashrc#添加如下代码exportMYCAT_HOME=/usr/local/mycatexportPATH=$PATH:$MYCAT_HOME/bin刷新全局变量,使环境变量生效。[root@mycat~]#source/etc/profile修改server.xml配置文件。修改schema.xml文件。(3)配置MySQL集群Mycat代理配置完成后,需要在后端的MySQL集群上设置mycatproxy的访问权限。例如,在Master1服务器上设置用户权限。mysql>grantallon*.*to'mycatproxy'@'40'identifiedby'QianFeng@123';需要注意,40为Mycat服务器的IP地址。(4)启动Mycat在MySQL服务器将权限开启完成后,在Mycat服务器上启动代理服务。[root@mycat~]#/usr/local/mycat/bin/mycatstartStartingMycat-server...当执行结果出现“StartingMycat-server”时,则表示代理服务正在启动。另外,也可以查看通过查看相应的端口来检查服务器是否正常运行。(5)配置mycat后端数据库当Mycat代理服务器启动起来后并不能直接使用,因为Mycat本身并不提供数据存储功能,所以还需要将Mycat中虚拟的数据库框架与后端真实的数据库进行绑定。为了方便读者理解,这里将在Mycat主机上安装MySQL服务,具体如下所示。[root@mycat~]#wget /get/mysql80-community-release-el7-4.noarch.rpm[root@mycat~]#yum-ylocalinstallmysql80-community-release-el7-4.noarch.rpm[root@mycat~]#yum-yinstallyum-utils[root@mycat~]#yum-config-manager--disablemysql80-community[root@mycat~]#yum-config-manager--enablemysql57-community[root@mycat~]#yumrepolistenabled|grepmysqlmysql-connectors-community/x86_64MySQLConnectorsCommunity221mysql-tools-community/x86_64MySQLToolsCommunity135mysql57-community/x86_64MySQL5.7CommunityServer544[root@mycat~]#yum-yinstallmysql-community-server[root@mycat~]#systemctlstartmysqld[root@mycat~]#systemctlenablemysqld[root@mycat~]#cat/var/log/mysqld.log|grep"temporarypassword"2022-01-21T08:54:26.713978Z1[Note]Atemporarypasswordisgeneratedforroot@localhost:&.XrF!?y,50F[root@mycat~]#vim/etc/f#添加以下内容validate_password=off[root@mycat~]#mysql-uroot-p'&.XrF!?y,50F'……mysql>ALTERUSER'root'@'localhost'IDENTIFIEDBY'qianfeng@123';QueryOK,0rowsaffected(0.00sec)mysql>\q[root@mycat~]#mysql-h-uroot-pqianfeng@123-P9066……mysql>showdatabases;+----------+|DATABASE|+----------+|TESTDB|+----------+1rowinset(0.00sec)由上述结果可知,Mycat部署成功后已经创建了虚拟数据库TESTDB,但此时的数据库中还不能插入数据,需要绑定后端的数据库才可以使用。此时,登录Master1数据库并创建与Mycat同名的数据库。[root@master1~]#mysql-uroot-p'q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职业教育学课程设计
- 2025版高压输电线路维护供电合同范本3篇
- 英语教学与课程设计
- 2024沈阳农膜产业园区生态环境保护与治理合同3篇
- 2024年行政人员劳动合同范本:合同解除与赔偿标准3篇
- 2024年版城市道路建设项目施工合同
- 法治课程设计方案
- 2024版公司保密协议制度
- 2024年甲乙双方关于二手房交易过程中协助办理手续合同
- 2024年特色养殖项目租赁与市场推广合作协议3篇
- 棚户区改造项目房屋拆除工程施工组织设计方案
- 流行病学知识考核试题题库与答案
- DB11-T212-2017园林绿化工程施工及验收规范
- 小学数学自制教具学具的研究及探讨
- 广东省幼儿园一日活动指引(试行)
- 光学材料-光学加工流程
- 奔驰卡车产品分析(课堂PPT)
- 反循环钻孔灌注桩施工方案
- 新能源小客车购车充电条件确认书
- 发明专利专利答辩模板
- 市政府副市长年道路春运工作会议讲话稿
评论
0/150
提交评论