风哥教程参考DB2官方文档PureScale、Distributed Database等内容,详细介绍分布式架构扩展、PureScale集群、数据分片等。更多视频教程www.fgedu.net.cn
目录大纲
Part01-分布式架构概述
1.1 分布式架构优势
分布式架构优势:
- 水平扩展能力
- 高可用性
- 负载均衡
- 容灾能力
1.2 架构模式
- 共享磁盘:PureScale架构
- 共享无:分库分表
- 混合架构:读写分离+分片
Part02-PureScale集群
2.1 PureScale架构
# – CF (Cluster Facility)
# – Member (数据库成员)
# – GPFS (共享文件系统)
# 查看集群成员
SELECT
MEMBER,
HOST_NAME,
STATE
FROM SYSIBMADM.DB2_MEMBER;
# 查看CF状态
SELECT
CF_ID,
HOST_NAME,
STATE
FROM SYSIBMADM.DB2_CF;
# 查看集群状态
db2pd -pureScale -status
# 成员管理
# 添加成员
db2iupdt -add -m db2member3 db2inst1
# 删除成员
db2iupdt -drop -m db2member3 db2inst1
# 查看成员配置
db2pd -pureScale -members
2.2 负载均衡
# JDBC连接字符串
jdbc:db2://host1:50000,host2:50000,host3:50000/FGEDB:enableClientAffinitiesList=1;
# 配置WLM
CREATE SERVICE CLASS OLTP_CLASS
SOFT CPU SHARES 100
SOFT MEMORY SHARES 100;
CREATE SERVICE CLASS BATCH_CLASS
SOFT CPU SHARES 50
SOFT MEMORY SHARES 50;
# 创建工作负载
CREATE WORKLOAD OLTP_WORKLOAD
APPLNAME(‘OLTP_APP’)
SERVICE CLASS OLTP_CLASS;
CREATE WORKLOAD BATCH_WORKLOAD
APPLNAME(‘BATCH_APP’)
SERVICE CLASS BATCH_CLASS;
# 监控成员负载
SELECT
MEMBER,
TOTAL_CPU_TIME,
TOTAL_WAIT_TIME,
TOTAL_SORTS
FROM SYSIBMADM.APPLICATIONS
ORDER BY MEMBER;
Part03-数据分片
3.1 分库分表
# 订单库
CREATE DATABASE ORDERDB;
# 用户库
CREATE DATABASE USERDB;
# 商品库
CREATE DATABASE PRODUCTDB;
# 按时间分表
CREATE TABLE ORDERS_202601 (
ORDER_ID VARCHAR(32) NOT NULL,
CUSTOMER_ID VARCHAR(32),
TOTAL_AMOUNT DECIMAL(18, 2),
CREATE_TIME TIMESTAMP,
CONSTRAINT PK_ORDERS_202601 PRIMARY KEY (ORDER_ID)
);
CREATE TABLE ORDERS_202602 (
ORDER_ID VARCHAR(32) NOT NULL,
CUSTOMER_ID VARCHAR(32),
TOTAL_AMOUNT DECIMAL(18, 2),
CREATE_TIME TIMESTAMP,
CONSTRAINT PK_ORDERS_202602 PRIMARY KEY (ORDER_ID)
);
# 使用视图统一访问
CREATE VIEW V_ORDERS AS
SELECT * FROM ORDERS_202601
UNION ALL
SELECT * FROM ORDERS_202602
UNION ALL
SELECT * FROM ORDERS_202603;
3.2 哈希分片
CREATE TABLE ORDERS_HASH (
ORDER_ID VARCHAR(32) NOT NULL,
CUSTOMER_ID VARCHAR(32),
TOTAL_AMOUNT DECIMAL(18, 2),
CREATE_TIME TIMESTAMP,
CONSTRAINT PK_ORDERS_HASH PRIMARY KEY (ORDER_ID)
) DISTRIBUTE BY HASH(ORDER_ID);
# 查看分片信息
SELECT
TABSCHEMA,
TABNAME,
DISTRIBUTION
FROM SYSCAT.TABLES
WHERE TABNAME = ‘ORDERS_HASH’;
# 查询特定分片数据
SELECT * FROM ORDERS_HASH
WHERE ORDER_ID = ‘O001’;
Part04-分布式查询
4.1 联邦查询
UPDATE DATABASE MANAGER CONFIGURATION USING FEDERATED YES;
db2stop
db2start
# 创建包装器
CREATE WRAPPER DRDA;
# 创建远程服务器
CREATE SERVER ORDERDB_SERVER
TYPE DB2/UDB
VERSION 12.1
WRAPPER DRDA
AUTHORIZATION “remote_user”
PASSWORD “remote_password”
OPTIONS (ADD DBNAME ‘ORDERDB’);
# 创建用户映射
CREATE USER MAPPING FOR LOCAL_USER
SERVER ORDERDB_SERVER
OPTIONS (ADD REMOTE_AUTHID ‘remote_user’, ADD REMOTE_PASSWORD ‘remote_password’);
# 创建昵称
CREATE NICKNAME REMOTE_ORDERS FOR ORDERDB_SERVER.ORDERS;
# 联邦查询
SELECT * FROM REMOTE_ORDERS
WHERE CREATE_TIME > ‘2026-04-01’;
4.2 分布式事务
# 准备阶段
PREPARE TRANSACTION ‘tx001’;
# 提交阶段
COMMIT TRANSACTION ‘tx001’;
# 回滚阶段
ROLLBACK TRANSACTION ‘tx001’;
# 监控分布式事务
SELECT
XID,
STATUS,
PARTICIPANTS
FROM SYSIBMADM.TRANSACTIONS
WHERE XID IS NOT NULL;
# 分布式事务示例
BEGIN ATOMIC
INSERT INTO LOCAL_ORDERS VALUES (‘O001’, ‘C001’, 1000.00);
INSERT INTO REMOTE_ORDERS VALUES (‘O002’, ‘C002’, 2000.00);
END;
Part05-风哥经验总结与分享
5.1 分布式架构设计要点
- 选择合适的分片键
- 合理规划分片数量
- 考虑数据倾斜问题
- 设计跨分片查询方案
- 考虑分布式事务开销
- 建立完善的监控体系
5.2 性能优化建议
| 场景 | 优化方案 |
|---|---|
| 跨分片查询 | 减少跨分片,使用联邦查询 |
| 数据倾斜 | 调整分片键,重新分片 |
| 分布式事务 | 减少跨库事务,最终一致性 |
| 负载不均 | 调整分片策略,增加分片 |
5.3 运维要点
- 监控集群状态
- 监控分片负载
- 定期平衡数据
- 监控分布式事务
- 建立完善的备份方案
- 定期故障演练
学习交流加群风哥微信: itpux-com
风哥Oracle/MySQL/PostgreSQL/Greenplum/DB2/Redis等数据库培训课程,10年一线实战经验,企业级培训,真正掌握数据库核心技术!
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
