MYSQL集群-主从配置

《02_CentOS安装mysql数据库文档》
《03_Mysql主从配置文档》
《04_mysql主从知识点》



MYSQL集群-主从配置读写分离
参考工程文件



数据库分库分表、跨库查询

分库:

1:涉及到多数据源可以进行分库
2:项目部署是分布式系统,可以进行分库
3:涉及到大量的数据存储,需要分库

跨库查询:

1:必须要配置多数据源
2:在jdbc属性文件中增加多个数据库配置信息,key值保持唯一
3:在创建数据源的bean,需要搭建多个bean组件,id保持唯一
4:在dao层需要查询数据的时候,调用bean对应的templatement就可以了

分表:

应用场景:

1:设计到大量的数据存储,并且数据需要查询的时候

如何分表:

1:首先保证分表之后,表结构、索引、引擎、编码字符、视图等一致性
2:表名不能一样

第一种方式:

    按照表容量大小进行分表(可以实现,不建议使用)
    假设表容量最大200M(配置表的触发器)

    tablename1-----199.9M----200.1M---数据丢失
    tablename2-----0.1M-----数据不全、脏数据
    tablename3.....

第二种方式:

    按照时间进行分表(推荐使用)
        建议每个月的20-25号左右,提前复制一张表
        写(监听)

    tablename_20171020
    tablename_20171120
    tablename_20171220
    tablename_20180120

    要写动态sql了


第三种,使用算法,判断表名称

    用户ID必须使用的是UUID生成的字符
        UUID对3取模/10,取余数1-6
    那么此时可以使用这种方式,不过这种方式最多可以创建6张表
    tablename1
    tablename2
    tablename...6



数据库触发器、监听器、视图、存储过程


你是如何对数据库做优化的?
1:数据库设计
    数据库表:字段类型、字段长度、注释、字段命名规范
    数据库索引:外键、关联字段、查询频率比较高的字段、
            如果数据表字段>20,则最多支持16个索引
            如果数据表字段<20,则根据查询频率字段来定
    数据库视图:相当于一张临时表,业务中,尽量少使用
    数据库引擎:根据业务,选择对应的表引擎技术
    数据库存储过程:尽量少用
    数据库字符:UTF-8、或者和页面字符保持一致
    数据库监听器/触发器:一般用于调度任务或者备份还原

2:业务调用的sql语句优化
    xml:
    尽量少关联表,效率最高关联4张表,如果多于4张表,则需要开启两个链接事务,但是这两个事务,必须在一个service当中。
    如果是查询语句,则不建议使用*
    如果是查询语句,where条件后面,最好使用索引字段进行关联

3:数据库服务器的搭建(集群)
    主从配置:
    读写分离:
    自动化(容器):