Mysql
搭建主从集群
可以使用宝塔面板安装【简化操作】
或者用de
可以缓解数据访问的压力
主节点Master打开binary log, Slave I/O thread
其他也可以用binlog,做缓存,如kafaka
主节点配置
less /etc/my.cnf
-- 查看主节点状态
show master status;
show slave status \G;
slave节点
主从同步,数据单向同步,只能从主库同步到从库,所以只能在主库写数据,否则数据不一致
可以限制slave数据库只读, set global
互相配置主从,双主
配置文件配置
双主,一旦一个节点挂了,另一个还能用
另:也可以配置成环状,多主多从
GTID同步集群
集群扩容
- 首先要将现有数据导入新数据库【需要暂停业务】
Mysql异步复制,可能丢数据
半同步复制【同步加了一个超时时间】
延迟问题解决:Mysql5.7之后已经支持并行复制
常用的Mysql高可用方案
MMM MHA MGA
MMM不支持GTID,比较老,已经不建议用了
目前MHA用的多
这3种尽可能自己搭一下。
应用做读写分离
分库分表
数据主从同步是实现读写分离的一个必要条件
分为分库、分表,
拆分数据:
垂直分片
根据业务逻辑来份
水平分片:
- 如一个user表分到两个表里 id%2 = 1 一个表
这个扩容比较麻烦,适合数据比较稳定 - 按时间分片
- 按男女分:不推荐,区分度不大
分片带来问题:分布式事务是大问题,通常不解决,可以事后对账,绕开这个问题
什么时候分库分表
分库分表组件
shardingsphere
mycat