MySQL_分库分表

分库分表:

原来数据库是单机服务器,随着业务数据越来越多,表越来越大,读写的性能都会下降,这时就要考虑进行分库分表了。

划分的方式有:①按业务进行垂直划分,不同的业务数据划分在不同的表;②按某种规则将大表拆分成小表

拆分之后可能会面临的问题:①分布式事务问题,原来一个库就能完成的事情,现在分多个库后要保证多个库的一致性 ②跨库join的问题,原来一次查询能够完成的事情,现在要分多次查询才能完成

一、数据切分的方式有哪些?

1、垂直切分:把不同的业务数据放在不同的数据服务器上,一个服务器崩了不影响其他服务

2、水平切分:将数据按分区分片存储在不同服务器,使得单个表的数据量变小。

分库分表的演进:单裤单表、单裤多表、多库多表、

二、带来的问题以及如何解决?

1、分布式事务一致性问题:XA协议、两阶段提交

2、跨节点查询Join问题:全局数据字典表、字段冗余、数据组装、ER分片

3、跨节点分页、排序、函数问题:

4、全局主键重复问题:UUID、简历sequence表维护主键ID

3、支持分库分表的中间件有哪些?

Cobar(阿里巴巴)、Vitess(谷歌

4、如何分库分表部署上线?

1、停机部署

2、不停机:

①数据分为历史数据和部署时产生的增量数据

②历史数据直接通过程序分库分表

③增量数据,通过程序重写这段时间的数据库的binlog进行分库分表、

④检查数据一致性,通过主键id检查,通过关键字段进行拼接后md5检查

1、mysql怎么选择存储器的?

①MyISAM:以select、insert为主的应用采用这个表,不支持事务、也不支持外溅

②InnoDB:行级锁和外健约束,支持事务。能够自动从灾难中恢复

③Memory:速度快,逻辑存储介质是系统内存

2、怎么让mysql读写分离?

本质上是:主数据库处理增、删、改操作,从数据库完成读操作

3、慢查询是什么?

①慢查询、全名叫慢查询日志,是mysql提供的一种日志记录,用来记录在mysql中响应时间超过阀值的语句。

运行时间超过long_query_time值的SQL语句,都会被记录 在慢查询日志

MySQL数据库并不启动慢查询日志,需要手动来设置这个参数。

如果不是调优需要的话,一般不建议启动该参数

一、mysql复制过程:

(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

(2) slave将master的binary log events拷贝到它的中继日志(relay log);

(3) slave重做中继日志中的事件,将改变反映它自己的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值