`
阅读更多

参考:
1.【已实践】Mysql安装配置.txt

2.【已实践】MySQL  主从复制的配置.txt

3.【已实践】读写分离-分库分表-sharding-jdbc

实践案例1:订单表的分库分表
例如平台业务系统的订单表:每天会产生80万比交易,每个月将近2000万,作如下的设计:
>> 按一年12个月分成12张表,设计3个数据库,这样3个库每个库12张表;
>> 实际上每个月最高2500的数据,会被平摊到3个库的当月表里,每个库800万数据量,每天每个库表20-30万次插入
数据库和表的路由策略是:
库ID = 订单号%库数量;
表ID = 订单号%表数量

设计:
(1) 库表设计
CREATE SCHEMA IF NOT EXISTS `CFSP_ORDER_01`;
CREATE SCHEMA IF NOT EXISTS `CFSP_ORDER_02`;
CREATE SCHEMA IF NOT EXISTS `CFSP_ORDER_03`;

CREATE TABLE IF NOT EXISTS `CFSP_ORDER_01`.`t_order_201701`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20)   ,PRIMARY KEY (`order_id`));
....
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_01`.`t_order_201712`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20)   ,PRIMARY KEY (`order_id`));

CREATE TABLE IF NOT EXISTS `CFSP_ORDER_02`.`t_order_201701`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20)   ,PRIMARY KEY (`order_id`));
....
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_02`.`t_order_201712`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20)   ,PRIMARY KEY (`order_id`));

CREATE TABLE IF NOT EXISTS `CFSP_ORDER_03`.`t_order_201701`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20)   ,PRIMARY KEY (`order_id`));
....
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_03`.`t_order_201712`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20)   ,PRIMARY KEY (`order_id`));

这里需用root用户建库,然后给xmtest用户相应的权限
CREATE SCHEMA IF NOT EXISTS `CFSP_ORDER_01`;
CREATE SCHEMA IF NOT EXISTS `CFSP_ORDER_02`;
CREATE SCHEMA IF NOT EXISTS `CFSP_ORDER_03`;

grant all privileges on CFSP_ORDER_01.* to 'xmtest'@'%' identified by '123456' WITH GRANT OPTION;
grant all privileges on CFSP_ORDER_02.* to 'xmtest'@'%' identified by '123456' WITH GRANT OPTION;
grant all privileges on CFSP_ORDER_03.* to 'xmtest'@'%' identified by '123456' WITH GRANT OPTION;

注:在这里每个库建一张逻辑表
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_01`.`t_order`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20)   ,PRIMARY KEY (`order_id`));
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_02`.`t_order`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20)   ,PRIMARY KEY (`order_id`));
CREATE TABLE IF NOT EXISTS `CFSP_ORDER_03`.`t_order`
(`order_id` INT NOT NULL, `user_id` INT NOT NULL, `status` VARCHAR(50), `transDate` VARCHAR(20)   ,PRIMARY KEY (`order_id`));




(2) 基于sharding-jdbc-mybatis的开发
参考工程:
sharding-jdbc-example-mybatis
sharding-jdbc-example-config-spring-masterslave

实践步骤:
(1) 通过maven构建spring框架 参考:构建SSH框架.txt
新构建项目:YJR-demo-Sharding-jdbc

(2) 在工程中配置:shanrding-jdbc
(3) 实践案例:按不同月份和不同订单号进行分表分库,读写分离测试


配置过程主要做的是:
1.spring-mabatis文件拆分成applicationContext.xml 和 Mybatis配置文件applicationContext-mybatis.xml
2.配置applicationContext-mybatis.xml和jdbc.properties(稍后提取公共部分)
2.1 这里配置库就行了,3个主库,伴随着读的2个从库(也分3个库)


order_01_master  order_01_slave_0  order_01_slave_1

order_02_master  order_02_slave_0  order_02_slave_1

order_03_master  order_03_slave_0  order_03_slave_0




不要忘记:
(1) 提取公共部分(1.提取公共部分 2.使用durid数据源);
(2) 实践中的分页查询
(3) 全局主键/强制使用主库读写
(4) 使用全局ID











4.【已实践】读写分离-分库分表-基于中间件-Mycat

分享到:
评论

相关推荐

    mysql5的使用 mysql实践

    本篇文章将基于“mysql5的使用 mysql实践”的主题,深入探讨MySQL的基础知识、安装配置、数据操作以及简单的性能优化,帮助初学者快速上手。 首先,我们来了解MySQL的基本概念。MySQL是一个开源、免费的SQL数据库...

    mysql实践学习文档.zip

    本文档旨在提供一系列MySQL实践学习的关键知识点,帮助读者深入理解并掌握其核心功能。 一、安装与配置 在开始学习MySQL之前,你需要在你的计算机上安装MySQL服务器。这通常涉及到下载适合你操作系统的MySQL安装包...

    大数据量下58同城MySQL实践-技术方案

    总的来说,这份58同城的大数据量下MySQL实践技术方案,涵盖了从存储策略、索引优化、缓存管理、监控调优到分布式架构的全面内容,是理解如何在大数据环境下驾驭MySQL的宝贵资料。通过对这些知识点的学习和实践,可以...

    云原生Mysql实践.pdf

    为了提高数据库服务的可用性、弹性和可维护性,一种名为“云原生Mysql实践”的技术应运而生,它将数据库服务与云服务紧密集成,以实现更高的服务水平。 云原生Mysql实践的云化目标主要包括四个方面:高可用、数据...

    hadoop_hive_python_mysql实践完整包.rar

    本实践项目通过一个网站的运营日志,利用hadoop/hive/sqoop/mysql/python等一系列组件联合实践分析挖掘网站运营数据。是不可多得的完整的学习、讲课案例资源。本资源包含ppt、代码、文档及所需数据。

    mysql实践任务.sql

    mysql实践任务.sql

    秒杀场景下的MySQL实践.pdf

    秒杀场景下的MySQL实践.pdf

    MySQL实践总结PPT教案学习.pptx

    MySQL实践总结PPT教案学习.pptx

    MySQL 最佳SQL优化实践手册

    接下来,我将详细介绍《MySQL 最佳SQL优化实践手册》中提到的核心知识点。 首先,关于索引的优化,手册提到了多种索引类型,包括B-tree索引、hash索引、聚簇索引和非聚簇索引。B-tree索引由于其平衡树的特性,适合...

    MySQL数据库查询优化

    第3课 查询优化技术理论与MySQL实践(一)------子查询的优化(一) 第4课 查询优化技术理论与MySQL实践(二)------子查询的优化(二) 从理论看,子查询包括的内容和范围,建立清晰的概念 从实践看,MySQL的子查询...

    mysql练习10.24

    MySQL 实践指南 本文档旨在提供 MySQL 实践指南,涵盖 MySQL 基础知识、数据类型、表结构操作、数据操作语言(DML)等方面的内容。 一、MySQL 基础知识 MySQL 是一种关系型数据库管理系统,用于存储和管理数据。...

    MySQL实践

    MySQL实践第1章SQL데이터 201007 SELECT * FROM copang_main . member ; -- copang_main이라는 db의 member table을 가져온다.DATETIME에 年月DAYOFMONTH DATEDIFF 训练DATE_ADD DATE_SUB UNIX_TIMESTAMP FROM_UNIX...

    MySQL开发最佳实践

    ### MySQL开发最佳实践 在IT领域,特别是数据库管理和应用开发中,MySQL因其高效、稳定以及易用性而被广泛采用。然而,在实际的应用过程中,如何有效地利用MySQL,并避免常见的问题和陷阱,则是每个开发者和数据库...

    Mysql最佳实践32条

    本文将围绕知数堂吴炳锡所提出的MySQL最佳实践32条,针对硬件、MySQL版本、开发、安全、操作系统、MySQL配置和运维事项等几个方面,进行详细的知识点梳理。 首先,从硬件层面来看,BIOS的配置优化是非常重要的一个...

    MySQL性能优化和高可用架构实践.pptx

    "MySQL性能优化和高可用架构实践" 本书《MySQL性能优化和高可用架构实践》是一本详细介绍MySQL性能优化和高可用架构实践的书籍,旨在帮助读者提升MySQL数据库的性能和可靠性。本书的内容涵盖了查询优化的基本原则和...

    mysql面试题,mysql文档教程

    MySQL面试题与数据库...* MySQL 实践问题:数据备份、数据恢复、数据库性能优化等。 MySQL 面试题涵盖了数据库设计、SQL 语句、事务处理等多方面的知识点,对于一个 Java 工程师来说,掌握这些知识点是非常重要的。

    MySQL入门实践,适合初学者

    ### MySQL入门实践,适合初学者 #### 一、MySQL简介及安装 MySQL是一种关系型数据库管理系统,被广泛用于Web应用程序的开发中。它以其高性能、可靠性和易用性而著称,非常适合初学者入门学习。 - **安装过程**: ...

    MySQL官方文档是学习MySQL的最佳资源之一.docx

    #### 二、MySQL实践案例分析 ##### 1. 个人博客系统 - **背景**: 个人博客系统是一种常见的应用场景,涉及到用户管理、文章发布等功能。 - **数据库设计**: 设计数据库存储用户信息、文章信息、评论信息等。 - **...

Global site tag (gtag.js) - Google Analytics