cgb2008-京淘day10

大兔子大兔子 提交于 2020-12-09 15:41:16

1.数据库高可用(HA)

1.1 实现数据库读写分离/负载均衡

在这里插入图片描述

1.1 Mycat代理

1.1.1 Mycat 介绍

在这里插入图片描述

1.1.2 Mycat代理

在这里插入图片描述

1.2 MyCat配置

1.2.1 上传安装包

在这里插入图片描述

1.2.2 解压Mycat

1).解压Mycat
[root@localhost src]# tar -xvf Mycat-server-1.7.0-DEV-20170416134921-linux.tar.gz

2).移动Mycat文件
在这里插入图片描述

1.2.3 编辑Server.xml

说明: 用户与代理数据库之间的链接,通过Server.xml进行配置.
1).默认端口
在这里插入图片描述
2).编辑server.xml
在这里插入图片描述



1.2.4 编辑schemas.xml

说明:该文件表示代理与数据库的配置 HOST:PORT:用户名:密码:数据库名称

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
	
	<!--name属性是自定义的  dataNode表示数据库的节点信息  jtdb表示逻辑库-->
	<schema name="jtdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="jtdb"/>

	<!--定义节点名称/节点主机/数据名称-->
	<dataNode name="jtdb" dataHost="localhost1" database="jtdb" />
		<!--参数介绍 UTF-8 中文报错  使用单行注释 -->
		<!--balance 0表示所有的读操作都会发往writeHost主机 -->  
		<!--1表示所有的读操作发往readHost和闲置的主节点中-->
		<!--writeType=0 所有的写操作都发往第一个writeHost主机-->	
		<!--writeType=1 所有的写操作随机发往writeHost中-->
		<!--dbType 表示数据库类型 mysql/oracle-->
		<!--dbDriver="native"  固定参数 不变-->
		<!--switchType=-1 表示不自动切换, 主机宕机后不会自动切换从节点-->
		<!--switchType=1  表示会自动切换(默认值)如果第一个主节点宕机后,Mycat会进行3次心跳检测,如果3次都没有响应,则会自动切换到第二个主节点-->
		<!--并且会更新/conf/dnindex.properties文件的主节点信息 localhost1=0 表示第一个节点.该文件不要随意修改否则会出现大问题-->

		
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select 1</heartbeat>

		<!--配置第一台主机主要进行写库操作,在默认的条件下Mycat主要操作第一台主机在第一台主机中已经实现了读写分离.因为默认写操作会发往137的数据库.读的操作默认发往141.如果从节点比较忙,则主节点分担部分压力.
		-->
		<writeHost host="hostM1" url="192.168.126.129:3306" user="root" password="root">
			<!--读数据库1-->
			<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
			<!--读数据库2-->
			<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
		</writeHost>

			<!--定义第二台主机 由于数据库内部已经实现了双机热备.-->
			<!--Mycat实现高可用.当第一个主机137宕机后.mycat会自动发出心跳检测.检测3次.-->
			<!--如果主机137没有给Mycat响应则判断主机死亡.则回启东第二台主机继续为用户提供服务.-->
			<!--如果137主机恢复之后则处于等待状态.如果141宕机则137再次持续为用户提供服务.-->
			<!--前提:实现双机热备.-->
		
		<!--<writeHost host="hostM2" url="192.168.126.130:3306" user="root" password="root">
			
			<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
			
			<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
		</writeHost>-->
		
	</dataHost>
</mycat:schema>

1.2.5 上传安装文件

将课前资料中的文件上传到指定的位置: /usr/local/src/mycat/conf
在这里插入图片描述

1.2.6 Mycat命令

在这里插入图片描述

1.2.7 报错检查

在这里插入图片描述

1.2.8 负载均衡测试

将从数据库信息,手动的进行修改. 效果:主库和从库的数据暂时不一致(存在风险)
在这里插入图片描述
2).如果测试成功,则将数据进行修改保存.检查读写分离是否成功.
在这里插入图片描述


1.3 实现数据库双机热备

1.3.1 原理说明

说明: 实现数据库高可用的前提条件是实现主从的备份.

之前的操作:
主库 :192.168.126.129
从库 : 192.168.126.130
现在的配置:
主库 :192.168.126.130
从库 : 192.168.126.129
在这里插入图片描述





1.3.2 实现双主模式配置

1).检查主库状态
在这里插入图片描述
2).实现主从配置

show MASTER status


# 我是129 之前是主库,今天当从库
CHANGE MASTER to MASTER_HOST="192.168.126.130",
MASTER_PORT=3306,
MASTER_user="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=700;

#启动主从服务
start slave	

#检查状态
show slave status;

在这里插入图片描述

1.4 实现数据库高可用

1.4.1 修改schema.xml配置文件

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
	
	<!--name属性是自定义的  dataNode表示数据库的节点信息  jtdb表示逻辑库-->
	<schema name="jtdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="jtdb"/>

	<!--定义节点名称/节点主机/数据名称-->
	<dataNode name="jtdb" dataHost="localhost1" database="jtdb" />
		<!--参数介绍 UTF-8 中文报错  使用单行注释 -->
		<!--balance 0表示所有的读操作都会发往writeHost主机 -->  
		<!--1表示所有的读操作发往readHost和闲置的主节点中-->
		<!--writeType=0 所有的写操作都发往第一个writeHost主机-->	
		<!--writeType=1 所有的写操作随机发往writeHost中-->
		<!--dbType 表示数据库类型 mysql/oracle-->
		<!--dbDriver="native"  固定参数 不变-->
		<!--switchType=-1 表示不自动切换, 主机宕机后不会自动切换从节点-->
		<!--switchType=1  表示会自动切换(默认值)如果第一个主节点宕机后,Mycat会进行3次心跳检测,如果3次都没有响应,则会自动切换到第二个主节点-->
		<!--并且会更新/conf/dnindex.properties文件的主节点信息 localhost1=0 表示第一个节点.该文件不要随意修改否则会出现大问题-->

		
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select 1</heartbeat>

		<!--配置第一台主机主要进行写库操作,在默认的条件下Mycat主要操作第一台主机在第一台主机中已经实现了读写分离.因为默认写操作会发往137的数据库.读的操作默认发往141.如果从节点比较忙,则主节点分担部分压力.
		-->
		<writeHost host="hostM1" url="192.168.126.129:3306" user="root" password="root">
			<!--读数据库1-->
			<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
			<!--读数据库2-->
			<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
		</writeHost>

			<!--定义第二台主机 由于数据库内部已经实现了双机热备.-->
			<!--Mycat实现高可用.当第一个主机137宕机后.mycat会自动发出心跳检测.检测3次.-->
			<!--如果主机137没有给Mycat响应则判断主机死亡.则回启东第二台主机继续为用户提供服务.-->
			<!--如果137主机恢复之后则处于等待状态.如果141宕机则137再次持续为用户提供服务.-->
			<!--前提:实现双机热备.-->
		
		<writeHost host="hostM2" url="192.168.126.130:3306" user="root" password="root">
			
			<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
			
			<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
		</writeHost>
		
	</dataHost>
</mycat:schema>

1.4.2 上传文件

1).停止mycat服务
在这里插入图片描述
2).删除配置文件
在这里插入图片描述
3).上传文件
将配置文件上传到指定的目录中
在这里插入图片描述
4).启动Mycat
在这里插入图片描述







1.4.3 数据库高可用的测试

1.首先应该将129的数据库宕机(关闭)
2.启动程序,通过数据库代理检查是否访问正确(查). 入库是否正常(写)
3.重启129的数据库. 检查数据是否真的同步了.

2.Redis缓存

2.1 系统优化策略

说明:引入缓存机制可以有效的降低用户访问物理设备的频次,从而提高响应速度.
在这里插入图片描述

2.2 如何设计缓存

1.缓存数据如何存储? 应该采用什么样的数据结构呢? K-V key的唯一性
2.缓存数据的容量大小 应该动态维护缓存数据,将不需要的数据提前删除. LRU算法/LFU算法/随机算法/TTL算法
3.缓存数据保存到内存中,但是内存的特点断电即擦除. 定期将内存数据持久化(写入磁盘中)
4.单台缓存服务器性能不足,所以一般需要搭建集群(实现高可用).
5.使用C语言开发.



2.3 Redis缓存服务

2.3.1 什么是Redis

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

速度: 读: 11.2万/秒 写:8.6万/秒 50万/秒

2.3.2 上传Redis

1).上传redis
在这里插入图片描述
2).解压redis服务
[root@localhost src]# tar -xvf redis-5.0.4.tar.gz


3).移动文件/修改文件名称
在这里插入图片描述

2.3.3 安装Redis

说明:在Redis根目录中执行如下命令

1).make
在这里插入图片描述
2). make install
在这里插入图片描述


2.3.4 修改redis配置文件

修改redis根目录下的redis.conf文件
1).去除IP绑定
在这里插入图片描述
2).修改保护模式
在这里插入图片描述
3).开启后台启动
在这里插入图片描述





2.4 Redis服务器命令

说明: Redis服务在运行时,必须依赖于配置文件 redis.conf. 操作redis时最好在根目录中操作

1).启动redis
redis-server redis.conf
在这里插入图片描述
2).进入redis客户端
redis-cli -p 6379
ctrl + c 退出客户端
在这里插入图片描述
3).关闭redis服务器
在这里插入图片描述
方法二:








 redis-cli -p 6379 shutdown

补充说明: 如果操作的端口号是默认端口6379 则可以省略不写.

作业

1.熟悉redis命令
2.完成当天的课堂任务
3.熟练掌握 基础Linux命令

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!