微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

京淘项目实战开发-11[Mycat、Redis缓存服务器概述]

1. 还原项目

1.1 修改端口号

在这里插入图片描述@H_502_11@@H_502_11@

1.2 修改图片路径

在这里插入图片描述@H_502_11@@H_502_11@

1.3 修改Nginx配置文件

1).反向代理到8091服务器

在这里插入图片描述
@H_502_11@ 2).修改hosts文件

在这里插入图片描述@H_502_11@@H_502_11@

1.4 启动Nginx

在这里插入图片描述@H_502_11@@H_502_11@

1.5 效果展现

在这里插入图片描述@H_502_11@@H_502_11@

2. 数据库优化

2.1 实现数据库读写分离

在这里插入图片描述@H_502_11@@H_502_11@

2.2 Mycat

2.2.1 Mycat介绍

活跃的、性能好的开源数据库中间件! 我们致力于开发高性能的开源中间件而努力!@H_502_11@

2.2.2 Mycat特性

支持前端作为MysqL通用代理@H_502_11@

后端JDBC方式支持Oracle,DB2,sql Server,mongodb,巨杉@H_502_11@

基于心跳的自动故障切换,支持读写分离@H_502_11@

支持MysqL Cluster,galera,Percona,cluster集群@H_502_11@

支持数据的多片自动路由与聚合@H_502_11@

支持sum,count,max等常用的聚合函数,支持跨库分页@H_502_11@

支持库内分表,支持单库内部任意join全局表,支持跨库2表join@H_502_11@

基于caltlet的多表join@H_502_11@

支持通过全局表,ER关系的分片策略,实现了高效的多表join查询@H_502_11@

2.2.3 上传Mycat安装包

1).上传安装包@H_502_11@

官网:http://www.mycat.org.cn/@H_502_11@

下载安装包:Mycat 微信搜索公众号:淡若清风丶

在这里插入图片描述@H_502_11@
回复Mycat 获取安装包(基本配置以完成)@H_502_11@

在这里插入图片描述@H_502_11@
2).解压Mycat安装包@H_502_11@

	tar  -xvf Mycat-server-1.7.0-DEV-20170416134921-linux.tar.gz

3).安装完成后删除安装包@H_502_11@

	rm -f Mycat-server-1.7.0-DEV-20170416134921-linux.tar.gz

2.2.4 编辑server.xml配置文件

在这里插入图片描述@H_502_11@@H_502_11@

说明: server.xml代表的是用户与mycat之间的配置关系。@H_502_11@

端口配置:@H_502_11@

<property name="serverPort">8066</property>

在这里插入图片描述@H_502_11@@H_502_11@

修改yml:

在这里插入图片描述@H_502_11@@H_502_11@

用户配置:@H_502_11@

<!--用户标签-->
	<user name="root">
		<property name="password">root</property>
		<!--与schema.xml中的配置相同 注意数据库的大小写-->
		<!--<property name="schemas">jtdb,db1,db2,db3</property>-->
		<property name="schemas">jtdb</property>
	</user>

	<user name="user">
		<property name="password">user</property>
		<property name="schemas">jtdb</property>
		<!-- 只读的用户 -->
		<property name="readOnly">true</property>
	</user>

在这里插入图片描述@H_502_11@@H_502_11@

2.2.5 编辑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>

2.2.6 上传配置文件

删除之前的,把我们配置好的,导入

在这里插入图片描述@H_502_11@@H_502_11@

2.2.7 Mycat发布

1).校验JDK

在这里插入图片描述@H_502_11@
2).进入bin目录

在这里插入图片描述@H_502_11@
3).启动mycat

在这里插入图片描述@H_502_11@
4).状态检查

在这里插入图片描述@H_502_11@@H_502_11@

5).运行测试:

在这里插入图片描述@H_502_11@@H_502_11@

6).如果报错:日志检查 根据报错提示 检查问题@H_502_11@

命令:@H_502_11@

  • cat wrapper.log
  • cat mycat.log

权限不够解决方法:@H_502_11@

命令:@H_502_11@

  • sudo ./mycat restart

2.2.8 Mycat负载均衡测试

说明: 修改数据库从库的数据 之后启动服务器检查是否有负载均衡的效果
注意事项: 最后将数据保证一致即可.@H_502_11@

2.3 实现数据库高可用

2.3.1 业务说明

数据库主库发生宕机的现象,则直接影响用户的使用. 最好的解决的策略 实现数据库高可用。@H_502_11@

前提条件: 必须实现数据库主从同步@H_502_11@

2.3.2 数据库同步策略

以前:@H_502_11@

1.主机: 192.168.126.129
2.从机: 192.168.126.130@H_502_11@

现在:@H_502_11@

1.主机: 192.168.126.130
2.从机: 192.168.126.129@H_502_11@

2.3.3 双击热备

说明:2台数据库同时互为主从结构,称之为双机热备的形式,(2台数据库同时都是主机/从机)

在这里插入图片描述@H_502_11@@H_502_11@

配置步骤:@H_502_11@

1).检查主库状态:

在这里插入图片描述@H_502_11@@H_502_11@

2).开始进行主从挂载:@H_502_11@

/* 之前是主机 今天是从机   */
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=245;

/*2.启动主从服务*/
START SLAVE;	

/*3.检查主从状态*/
SHOW SLAVE STATUS;

/*但凡有报错信息 检查日志 io_error 数据库记得重启*/
STOP SLAVE;
/*重置主从结构*/
RESET SLAVE;

/*重新挂载服务*/

在这里插入图片描述@H_502_11@@H_502_11@

2.4 Mycat实现数据库高可用

2.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>

2.4.2 上传配置文件

说明: 将文件上传到服务器中,重启mycat服务器.检查结果

在这里插入图片描述@H_502_11@@H_502_11@

2.4.3 数据库高可用测试

1).关闭129的主数据库.

在这里插入图片描述@H_502_11@@H_502_11@

2).测试用户链接是否正常.

在这里插入图片描述@H_502_11@@H_502_11@

3).重启主数据,检查数据是否同步.

在这里插入图片描述@H_502_11@@H_502_11@

3.Redis缓存服务器

3.1 业务说明

在这里插入图片描述@H_502_11@@H_502_11@

3.2 关于缓存机制说明

说明: 缓存中的数据都是数据库中的记录. 引入缓存机制之后,主要的目的为了降低用户访问物理设备的频次.提高服务器响应效率.
维度说明:
1).开发语言: C语言开发
2).数据结构问题: K-V结构 map/properties key不能重复
3).内存数据 断电及擦除: 定期将内存数据持久化操作
4).内存资源有效: 如何有效的维护内存大小? 定期清理内存. LRU算法/LFU算法/TLL算法@H_502_11@

3.3 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)。@H_502_11@

速度: 读: 11.2万次/秒 写: 8.6万次/秒 平均10万次/秒@H_502_11@

3.4 Redis安装

3.4.1 上传Redis安装包

!),关闭mycat

在这里插入图片描述@H_502_11@
2).修改yml

在这里插入图片描述@H_502_11@@H_502_11@

3).上传压缩包

在这里插入图片描述@H_502_11@@H_502_11@

3.4.2 解压文件

1).解压命令@H_502_11@

[root@localhost src]# tar -xvf redis-5.0.4.tar.gz

2).删除安装包、修改文件名为:redis

在这里插入图片描述@H_502_11@@H_502_11@

3.4.2 安装redis

步骤: 进入redis根目录中

在这里插入图片描述@H_502_11@@H_502_11@

命令1: make

在这里插入图片描述@H_502_11@@H_502_11@

命令2: make install

在这里插入图片描述@H_502_11@@H_502_11@

3.4.3修改redis配置文件

命令: vim redis.conf
shift+: 输入set nu
展现行号:

在这里插入图片描述@H_502_11@

在这里插入图片描述@H_502_11@
1).关闭IP绑定

在这里插入图片描述@H_502_11@
2).关闭保护模式

在这里插入图片描述@H_502_11@@H_502_11@

3).开启后台运行

在这里插入图片描述@H_502_11@
4).最后wq保存退出@H_502_11@

3.4.4 Redis启动命令

1).启动redis命令@H_502_11@

redis-server redis.conf

在这里插入图片描述@H_502_11@
端口号为:6379

在这里插入图片描述@H_502_11@@H_502_11@

2).进入redis客户端@H_502_11@

redis-cli -p 6379

在这里插入图片描述@H_502_11@@H_502_11@

3).关闭redis@H_502_11@

方式一:@H_502_11@

redis-cli -p 6379 shutdown

在这里插入图片描述@H_502_11@
方式二:@H_502_11@

ps -ef | grep redis
kill -9 8307

在这里插入图片描述@H_502_11@@H_502_11@

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐