MYSQL集群-主从配置

《02_CentOS安装mysql数据库文档》

《03_Mysql主从配置文档》

《04_mysql主从知识点》

MYSQL集群-主从配置读写分离

参考工程文件

mysql的galera集群和主主复制 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:数据库服务器的搭建(集群)

主从配置:

读写分离:

自动化(容器):