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】