1.数据库高可用实现

1.1 数据库读写分离实现

1.2 Mycat

1.2.1 Mycat介绍

1.2.2 上传安装包

1.2.3 解压安装包

1.2.4 移动安装文件

1.2.5 删除文件

1.2.6 编辑server.xml配置文件

server.xml标识的是用户与代理的关联关系

1.2.7 编辑schema.xml文件

说明: 该文件主要标识的是代理和数据库之间的关联关系.
要素: 数据库IP地址/端口号/数据库名称/用户名/密码.

1.2.8 上传文件

1.2.9 启动mycat服务

1.2.10 Mycat读写分离测试

修改从库中的title数据,之后查询检查是否实现负载均衡

1.2.11关于报错说明

如果出现问题 检查logs文件中的日志

1.2.12 修改数据源配置

1.3 实现数据库高可用

1.3.1 业务需求

说明: 如果数据库主库发生了宕机的现象,则直接影响整个系统的运行.
如何解决: 实现双机热备的形式

1.3.2 双机热备的原理

说明: 采用2台数据库 互为主从的结构 进行操作.

1.3.3 配置步骤

1).检查130 主库的状态

2).实现129挂载130

/*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=477;/*启动主从服务*/
START SLAVE;/*检查主从的状态*/
SHOW SLAVE STATUS;/*如果需要重新配置 则reset一下*/
RESET SLAVE;

1.3.4 编辑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.3.5 重启Mycat服务器


检查mycat状态:

1.3.6关于数据库高可用测试

1).关闭数据库主库
2).检查用户访问是否正常
3).操作数据库检查是否入库是否正常
4).重启数据库主库 检查数据是否实现同步

1.4 关于Mysql数据库高可用相关说明

1).检查2台Linux系统IP ip addr 主库:129 从库:130
2).检查数据库是否启动 mysql -u root -p root
3).检查数据库权限是否开放

4). 关闭防火墙

5).利用sqlYog工具 远程链接数据库

6).搭建主从服务
vim /etc/my.cnf 主机:server-id=1 从机:server-id=2
重启服务器: 检查 /var/lib/mysql 是否有二进制日志文件
实现互为主从的搭建 检查是否有2个yes

7).搭建mycat服务器
准备2个配置文件 之后上传到mycat目录下的conf文件中并且覆盖原有的文件.
重启mycat服务. ./mycat restart

8).实现数据库高可用测试…

1.5 系统还原

1).关闭主库和从库 systemctl stop mariadb
2).修改数据库链接地址

2. Redis

2.1 缓存机制说明

问题1: 为什么用户直接操作数据库效率低? 创建/销毁需要大量的时间 1 CURD操作花费的时间是"固定". 0.05S JDBC/数据库链接池.
问题2: 为什么创建链接耗时? 使用TCP协议 3次握手机制 4次挥手操作

说明: 缓存机制实质是为了降低用户访问物理设备的频次,减少用户的交互的时间,提高数据响应的能力.

2.2 实现缓存机制要素

  1. 数据结构应该采用什么类型? 采用K-V结构
  2. 内存特点断电即擦除如何防止? 将内存数据进行持久化操作(存到磁盘中)
  3. 内存容量有限,如何只保存热点数据? LRU算法/LFU算法/TTL算法/随机算法
  4. 为了与硬件交互性强,所以采用C语言的方式进行开发.

2.3 Redis

2.3.1 Redis介绍

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

数据: 读: 11.2万次/秒
写: 8.6万次/秒
平均 10万次/秒

2.3 Redis安装

2.3.1 上传安装包

2.3.2 解压安装包


整合目录:

2.3.3 安装redis

说明:跳入到redis根目录中执行 make make install命令
1).make 执行效果

2).make install效果

2.3.4 修改redis配置文件

1).将IP绑定注释

2).关闭保护模式

3).开启后台启动

2.3.5 Redis入门命令

1.启动命令: redis-server redis.conf
2.进入客户端: redis-cli -p 6379
3.关闭redis: redis-cli -p 6379 shutdown

作业

1).完成数据库高可用实现
2).了解Redis 8中数据类型的命令
3).复习AOP相关知识 AOP整合redis实现缓存处理

CGB2009-京淘项目DAY10相关推荐

  1. boot sprint 项目结构_京淘项目03 08.28

    JSP动态web资源,打war包 ##spring boot整合JSP 创建项目 spring SpringBoot整合web资源,, 在main文件下,新建webapp文件夹,,把WEBINF目录粘 ...

  2. 京淘项目实战开发-01

    1.京淘项目架构设计 1.1电商网站行业特点 1.1.1 高并发 概念: 同一时间内,有大量的用户访问服务器. 常识: tomcat服务器能够支持的并发链接数 220个/秒 (软件依赖硬件设备) 生产 ...

  3. Lesson9 【LINUX】将京淘项目发布到Linux系统上

    前言 将京淘项目发布到Linux系统上 我在windows系统中已经用IDEA编写好了京淘项目的代码,并且打好了war包. 现在我就想把这个京淘项目发布到linux系统上. 因为在工作中,都是要将项目 ...

  4. 2003京淘项目Day-03京淘后台项目搭建

    1.SpringBoot 整合JSP 1.1 创建项目 1.1.1 创建项目 1.1.2 编辑POM.xml文件 添加继承/依赖/插件 <!--parent标签作用:管理所有被springBoo ...

  5. 京淘项目Day-04

    1.关于项目打包/发布问题说明 1.1 利用maven工具项目打包 说明: 父级JT 其中包含了2个子级项目 jt-manager 依赖于jt-common.所以项目打包是有顺序的. 1.2 mave ...

  6. 【后端结合】新程序猿笔记Day13(京淘项目)

    1. 用户模块管理 1.1 用户列表展现 1.1.1 业务接口文档 请求路径: /user/list 请求类型: GET 请求参数: 后台使用PageResult对象接收 请求案例: http://l ...

  7. 京淘项目业务接口文档

    一 用户登陆 1 用户登录验证接口 请求路径: /user/login 请求方式: POST 请求参数 参数名称 参数说明 备注 username 用户名 不能为空 password 密码 不能为空 ...

  8. 京淘项目模块分析:用户登;三级列表展现

    文章目录 用户登录 用户登录验证接口 返回的SysResult对象 用户登录业务流程 MD5说明 编辑UserController 编辑UserService UserServiceImpl User ...

  9. 关于京淘项目虚拟机IP修改说明

    0. 修改虚拟机MAC地址 当新建虚拟机时,修改mac网络地址. 0.Window 配置IP地址 1).修改IP地址 2).设定IP租用时间 3).检查windowsIP地址 4).检查LinuxIP ...

最新文章

  1. 租约-分布式缓存一致性的高效容错机制
  2. 算法笔记-桶排序代码与原理、非比较排序、计数排序、基数排序、C#代码
  3. 「3D视觉从入门到精通」知识星球
  4. td不显示边框_FANUC Series 0i Mate-TD系统上电显示SP1241 (S)D/A变换器异常维修,FANUC主板SP1_维修中心...
  5. SAP QM初阶之事务代码CR05查询QM Work Center List
  6. Windows - Windows批处理
  7. 算法 排序 python 实现--快速排序
  8. 五分钟学会悲观乐观锁-java vs mysql vs redis三种实现
  9. Spring Boot 返回 JSON 数据,一分钟搞定!
  10. jQuery1.3.2 源码学习 -1 $ 是什么?jQuery 又是什么?
  11. python程序设计搜题软件下载_智慧职教云课堂APPPython程序设计答案搜题公众号
  12. js自定义信息提示框
  13. 万用表使用_如何使用万用表
  14. CSS强制图像调整大小并保持纵横比
  15. TREG(Transformed Regression for Accurate Tracking)
  16. 常用测试工具和框架归类
  17. Activity onDestroy方法未能及时执行原因
  18. 渗透测试-pdf文件上传-XSS
  19. php isset()和empty()的使用区别
  20. 使用busybox快速制作initramfs

热门文章

  1. 移动端电影院成为 票房新黑马
  2. redis服务器配置(redis服务器篇)
  3. 爱因斯坦的三种学术自由
  4. 什么是单例模式?单例模式的举例
  5. Python判断字符串相等
  6. 微信小程序之引入使用Vant Weapp组件
  7. 拼多多店群AB链玩法,无货源店群全套玩法培训
  8. python ks曲线_sklearn——逻辑回归、ROC曲线与KS曲线
  9. layui时间选择30分钟为单位_招1879人 l 黔南事业单位,大专学历可报,7月30日8月3日报名...
  10. python使用wx绘界面,布局自已的toolbar,使控件右对齐