mysql读写分离实战准备一

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 一目的 首先准备一个web网站,这里模拟一个网站的页面,主要对开源网页实现动态存取,之后将使用本页面进一步实现对mysql的读写分离功能 二架构 前台是开源网页的页面,具体例子可从如下网站下载 http://www.

一目的

首先准备一个web网站,这里模拟一个网站的页面,主要对开源网页实现动态存取,之后将使用本页面进一步实现对mysql的读写分离功能

二架构

前台是开源网页的页面,具体例子可从如下网站下载

http://www.superslide2.com/

后台采用springboot+thymeleaf开发

1前端页面整合

复制网站实例页面,到如下路径/template/case1page

  复制静态页面包括js文件到/static

2后台整合

Pom中加入相应jar包依赖,且未方便开发可以加入热部署相关依赖,例如

<build>

         <plugins>

              <plugin>

                   <groupId>org.springframework.boot</groupId>

                   <artifactId>spring-boot-maven-plugin</artifactId>

                   <dependencies>

                <!-- spring热部署-->

                <dependency>

                    <groupId>org.springframework</groupId>

                    <artifactId>springloaded</artifactId>

                    <version>1.2.1.RELEASE</version>

                </dependency>

              </dependencies>

              </plugin>

         </plugins>

     </build>

 

整合mybatis

Application中编写设置注入数据源和SqlSessionFactory的方法如下

@Bean

    @ConfigurationProperties(prefix="spring.datasource")

    public DataSource dataSource() {

        return new org.apache.tomcat.jdbc.pool.DataSource();

                 //com.alibaba.druid.pool.DruidDataSource();

    }

3 数据库设计

主要采用两个表SD_CATEGORYSD_LABLE_SWITCH,存放对应页面中标题和标题中相关的详细数据。具体建表和数据可见附件脚本

 

三实际功能

页面中实现了12demo的动态效果

已第11demo为例。说明实现方式

1静态页面中数据样式如下

<li class="nLi">

                                               <h3><a href="http://www.SuperSlide2.com" target="_blank">新闻

                                               <ul class="sub">

                                                        <li><a href="#">新闻首页</li>

                                                        <li><a href="#">新闻人物</li>

                                                        <li><a href="#">新闻电视</li>

                                                        <li><a href="#">新闻图片</li>

                                                        <li><a href="#">新闻视频</li>

                                                        <li><a href="# ">新闻专题</li>

                                               </ul>

                            </li>

                            <li class="nLi">

                                               <h3><a href="http://www.SuperSlide2.com" target="_blank">预告片

                                               <ul class="sub">

                                                        <li><a href="#">新闻首页</li>

                                                        <li><a href="#">新闻人物</li>

                                                        <li><a href="#">新闻电视</li>

                                                        <li><a href="#">新闻图片</li>

                                                        <li><a href="#">新闻视频</li>

                                                        <li><a href="# ">新闻专题</li>

                                               </ul>

                            </li>

根据上面数据显示方式确定现在后台存放数据的结构是,用一个对象存放标题和条目数据(List),然后再用一个组列表存放这些对象,已此来对应页面的结构

2页面显示方式如下

<li class="nLi" th:each="list:${grp11List}">

                            <h3><a href="http://www.SuperSlide2.com" target="_blank" th:text="${list.TP_NM}">新闻</a></h3>

                            <ul class="sub">

                                  <li th:each="lableList:${list.lable}">

                                    <a href="#">

                                     <p th:text="${lableList.LAB_NM}">新闻首页</p>

                                    </a>

                                   </li>

                                 

                            </ul>

                 </li>

 

后台存放方式

在处理对应demo实例的controller里组织数据的逻辑如下

//查找标题

      List<GrpTitle> grpTitle = userService.getGrpTitle(caseId);

      //查找每个标题时,找出所有对应lable数据并放入一个grplist

      for (GrpTitle title : grpTitle) {

            List<Lable> lable = userService.getLableInfo(title.getGRP_ID());

            FullContent cont = new FullContent();

            cont.setTP_NM(title.getTP_NM());

            cont.setLable(lable);

            //把所有grplist放到一个list

            grpList.add(cont);

           }

      //加入case1 返回需要的结果

      model.addAttribute("grp11List", grpList);

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
31 2
zabbix agent集成percona监控MySQL的插件实战案例
|
22天前
|
关系型数据库 MySQL Java
MySQL主从复制实现读写分离
MySQL主从复制(二进制日志)、 Sharding-JDBC实现读写分离
MySQL主从复制实现读写分离
|
2月前
|
SQL 关系型数据库 MySQL
干货!python与MySQL数据库的交互实战
干货!python与MySQL数据库的交互实战
|
2月前
|
存储 关系型数据库 MySQL
实战!MySQL主从复制一键搭建脚本分享
实战!MySQL主从复制一键搭建脚本分享
31 2
|
2月前
|
SQL 存储 关系型数据库
MySQL备份:mydumper 备份恢复工具生产实战
MySQL备份:mydumper 备份恢复工具生产实战
|
2月前
|
关系型数据库 MySQL Linux
【一键解锁神秘力量!】CentOS 7 通过编译源码方式安装 MySQL 数据库 —— 从零到英雄的数据库安装实战秘籍!
【8月更文挑战第9天】随着业务增长,对数据库的需求日益提高。在 CentOS 7 中,通过编译源码安装 MySQL 可提供更高定制性和灵活性。本文详细介绍从准备环境、下载源码、配置编译参数到安装 MySQL 的全过程,并对比 RPM 包安装方法,帮助读者根据需求选择合适方案。实践时需注意备份数据、选择合适版本、确保安全性和调优性能等要点。
151 1
|
2月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶实战:解锁性能飙升秘籍,从菜鸟到高手的华丽蜕变,让数据操作如行云流水!
【8月更文挑战第5天】MySQL是最流行的开源关系型数据库之一,在Web开发与数据分析等领域广泛应用。本文通过实战代码示例,深入探讨MySQL进阶技能:包括索引优化以提升查询性能;利用JOIN与子查询处理多表关联数据;通过事务处理确保数据一致性;使用存储过程与函数封装复杂逻辑以便重用;设置触发器自动执行特定任务以维护数据完整性。掌握这些技能能显著提高数据处理效率与系统性能。
44 5
|
2月前
|
SQL 关系型数据库 MySQL
mysql读写分离,主从同步
本文介绍了如何在Laravel项目中配置数据库读写分离,并实现MySQL主从同步。主要步骤包括:在`config/database.php`中设置读写分离配置;为主机授予从机访问权限;配置各MySQL服务器的`/etc/my.cnf`文件以确保唯一的`server-id`;以及通过SQL命令设置主从关系并启动从服务。文章还针对一些常见错误提供了排查方法。最后通过验证确认主从同步是否成功。[原文链接](https://juejin.cn/post/6901581801458958344)。版权所有者为作者佤邦帮主,转载请遵循相关规定。
|
2月前
|
canal 关系型数据库 MySQL
"揭秘阿里数据同步黑科技Canal:从原理到实战,手把手教你玩转MySQL数据秒级同步,让你的数据处理能力瞬间飙升,成为技术界的新晋网红!"
【8月更文挑战第18天】Canal是一款由阿里巴巴开源的高性能数据同步系统,它通过解析MySQL的增量日志(Binlog),提供低延迟、可靠的数据订阅和消费功能。Canal模拟MySQL Slave与Master间的交互协议来接收并解析Binary Log,支持数据的增量同步。配置简单直观,包括Server和Instance两层配置。在实战中,Canal可用于数据库镜像、实时备份等多种场景,通过集成Canal Client可实现数据的消费和处理,如更新缓存或写入消息队列。
374 0
|
2月前
|
存储 关系型数据库 MySQL
MySQL中的DISTINCT与GROUP BY:效率之争与实战应用
【8月更文挑战第12天】在数据库查询优化中,DISTINCT和GROUP BY常常被用来去重或聚合数据,但它们在实现方式和性能表现上却各有千秋。本文将深入探讨两者在MySQL中的效率差异,结合工作学习中的实际案例,为您呈现一场技术干货分享。
242 0
下一篇
无影云桌面