1.mysql分库分表
1).分库
A.水平分库(冷热数据拆分)
B.垂直分库(模块化 业务碎片化)
2).分表
A.水平分表(套表)
a).ID值域划分
b).ID取模划分
B.垂直分表(大表拆小表)
3).分库分表问题
A.跨库join
a).冗余字段
b).全局表
c).代码层面数据组装
B.跨库事务
a).分布式事务【XA协议(消息事务-数据库事务) 两阶段提交 】
b).最终一致性【事务补偿】
4).分库分表中间件
2.mysql主从(读写分离)
1).过程
A.主将更改操作记录记录到binlog【log dump线程】
B.从将主binlog事件(sql)同步到本机上并记录在relaylog(中继日志)【I/O线程、SQL线程】
C.从根据relaylog的sql按顺序执行
2).配置
A.主服务配置(conf配置a)和b))【binlog-do-db |binlog_ignore_db】
a).log-bin=mysql-bin //开启二进制日志
b).server-id=1 //设置server-id
c).创建一个用于slave和master通信的用户账号【REPLICATION SLAVE ON】
d).SHOW MASTER STATUS; //获得master二进制日志文件名及位置
B.从服务配置
a).server-id=2 //设置server-id,必须唯一
b).CHANGE MASTER TO
-> MASTER_HOST='host',
-> MASTER_USER='user',
-> MASTER_PASSWORD='pwd',
-> MASTER_LOG_FILE='binlogName',
-> MASTER_LOG_POS=xxx; //使用master分配的用户账号读取master二进制日志
c).start slave //启用slave服务【start、stop】
d).SHOW SLAVE STATUS\G //查看slave状态【Slave_IO_Running、Slave_SQL_Running】