1. 首页 > 国产数据库教程 > YashanDB教程 > 正文

yashandb教程FG041-YashanDB高可用架构选型

本文档风哥主要介绍YashanDB高可用架构选型相关知识,包括YashanDB高可用概念、高可用架构类型、高可用衡量指标、高可用架构规划、高可用架构选型、高可用架构考量因素、高可用架构部署、高可用架构配置、高可用架构监控、高可用架构实战案例等内容,风哥教程参考YashanDB官方文档高可用与容灾内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 YashanDB高可用概念

YashanDB高可用(High Availability,HA)是指数据库系统在面临各种故障时,能够保持服务的持续可用性,确保业务不中断或最小化中断时间。学习交流加群风哥微信: itpux-com

YashanDB高可用的核心目标:

  • 减少计划内和计划外停机时间
  • 确保数据的一致性和完整性
  • 提供故障自动检测和恢复机制
  • 支持平滑的主备切换和故障转移
  • 满足业务对服务可用性的要求

1.2 YashanDB高可用架构类型

YashanDB支持多种高可用架构类型,包括:

  • 主备架构:一主一备或一主多备,通过日志复制实现数据同步
  • 共享存储集群(YCS):多节点共享存储,实现多活架构
  • 分布式架构:数据分片存储,提高可用性和扩展性
  • 两地三中心:跨地域部署,实现异地容灾

1.3 YashanDB高可用衡量指标

YashanDB高可用的衡量指标包括:

  • 可用性:系统正常运行时间占总时间的比例,通常以99.9%、99.99%等表示
  • 恢复时间目标(RTO):系统从故障中恢复到正常运行所需的时间
  • 恢复点目标(RPO):系统从故障中恢复后,可能丢失的数据量
  • 故障检测时间:系统检测到故障所需的时间
  • 切换时间:从主节点故障到备节点接管所需的时间
风哥提示:高可用架构的选择需要根据业务需求、数据量、性能要求、预算等因素综合考虑,没有一种架构适合所有场景。学习交流加群风哥QQ113257174

Part02-生产环境规划与建议

2.1 YashanDB高可用架构规划

YashanDB高可用架构规划要点:

# 高可用架构规划步骤
1. 评估业务需求和SLA要求
2. 分析系统架构和数据特点
3. 确定RTO和RPO目标
4. 选择合适的高可用架构
5. 设计网络和存储架构
6. 制定故障切换和恢复策略
7. 规划监控和告警机制
8. 制定演练和测试计划

# 业务需求评估
– 业务连续性要求
– 数据安全要求
– 性能要求
– 预算限制
– 运维能力

# 架构选择考虑因素
– 数据量大小
– 并发访问量
– 地理分布
– 网络环境
– 存储成本
– 技术复杂度

2.2 YashanDB高可用架构选型

YashanDB高可用架构选型建议:

# 小型应用(数据量<100GB,并发<1000)
– 推荐架构:主备架构(一主一备)
– 优势:部署简单,维护成本低
– 适用场景:中小企业应用,非核心业务系统

# 中型应用(数据量100GB-1TB,并发1000-5000)
– 推荐架构:主备架构(一主多备)或共享存储集群
– 优势:较高可用性,较好的性能
– 适用场景:企业核心应用,金融非核心系统

# 大型应用(数据量>1TB,并发>5000)
– 推荐架构:共享存储集群或分布式架构
– 优势:高可用性,高扩展性,高性能
– 适用场景:金融核心系统,大型政企应用,互联网应用

# 跨地域部署
– 推荐架构:两地三中心
– 优势:异地容灾,多活架构
– 适用场景:金融核心系统,关键业务系统

2.3 YashanDB高可用架构考量因素

YashanDB高可用架构选型的考量因素:

  • 业务连续性要求:不同业务对可用性的要求不同,如金融核心系统要求99.999%的可用性
  • 数据安全性:确保数据不丢失,数据一致性
  • 性能要求:高可用架构不应显著影响系统性能
  • 成本因素:包括硬件、软件、网络、运维等成本
  • 技术复杂度:架构的复杂度应与运维能力匹配
  • 扩展性:架构应支持未来业务增长
  • 地理分布:考虑跨地域部署的需求
生产环境建议:根据业务需求和实际情况选择合适的高可用架构,不要盲目追求复杂架构。对于核心业务系统,建议采用主备架构或共享存储集群,确保数据安全和服务可用性。更多学习教程公众号风哥教程itpux_com

Part03-生产环境项目实施方案

3.1 YashanDB高可用架构部署

3.1.1 YashanDB主备架构部署

# 主备架构部署步骤
1. 准备服务器环境
2. 安装YashanDB软件
3. 配置网络环境
4. 创建主库实例
5. 配置备库实例
6. 建立主备复制关系
7. 验证主备同步状态
8. 配置监控和告警

# 服务器环境准备
$ hostname
fgedu.net.cn

$ nproc
32

$ free -h
total used free shared buff/cache available
Mem: 62G 2.1G 58G 9.8M 1.8G 59G

$ df -h /yashandb
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 500G 20G 450G 5% /yashandb

# 网络配置
$ cat /etc/hosts
192.168.1.100 fgedu-primary
192.168.1.101 fgedu-standby

# 防火墙配置
$ firewall-cmd –add-port=5432/tcp –permanent
$ firewall-cmd –reload

3.1.2 YashanDB共享存储集群部署

# 共享存储集群部署步骤
1. 准备服务器环境
2. 配置共享存储
3. 安装YashanDB软件
4. 配置网络环境
5. 创建集群实例
6. 配置集群参数
7. 启动集群服务
8. 验证集群状态

# 共享存储配置
$ ls -l /dev/mapper/
crw——-. 1 root root 10, 236 Apr 11 10:00 control
brw-rw—-. 1 root disk 253, 0 Apr 11 10:00 vg_shared-lv_data

# 集群配置
$ cat /yashandb/app/yasdb/etc/yasdb.conf
cluster_name = “fgedu-cluster”
node_list = “node1,node2”
shared_storage = “/dev/mapper/vg_shared-lv_data”

3.2 YashanDB高可用架构配置

3.2.1 YashanDB主备复制配置

# 主库配置
$ cat /yashandb/app/yasdb/etc/yasdb.conf
# 主库参数
listen_addresses = ‘0.0.0.0’
port = 5432
max_connections = 1000
shared_buffers = ’16GB’

# 复制参数
wal_level = ‘hot_standby’
max_wal_senders = 10
wal_keep_segments = 100
hot_standby = on

# 备库配置
$ cat /yashandb/app/yasdb/etc/yasdb.conf
# 备库参数
listen_addresses = ‘0.0.0.0’
port = 5432
max_connections = 1000
shared_buffers = ’16GB’

# 复制参数
wal_level = ‘hot_standby’
max_wal_senders = 10
wal_keep_segments = 100
hot_standby = on
primary_conninfo = ‘host=fgedu-primary port=5432 user=fgedu password=xxxx’
recovery_target_timeline = ‘latest’

3.2.2 YashanDB高可用参数配置

# 高可用相关参数
# 主备切换参数
failover_election = on
failover_election_timeout = 30

# 心跳检测参数
heartbeat_interval = 10
heartbeat_timeout = 60

# 复制模式
# 同步复制
replication_mode = ‘synchronous’

# 异步复制
# replication_mode = ‘asynchronous’

# 半同步复制
# replication_mode = ‘semi-synchronous’

3.3 YashanDB高可用架构监控

3.3.1 YashanDB高可用状态监控

# 查看主备状态
$ yassql -U fgedu -d fgedudb

fgedudb=# select * from pg_stat_replication;
pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | backend_xmin | state | sent_lsn | write_lsn | flush_lsn | replay_lsn | write_lag | flush_lag | replay_lag | sync_priority | sync_state
——-+———-+——–+——————+—————+—————–+————-+——————————-+————–+———–+———–+———–+———–+————+———–+———–+————+—————+————
12345 | 10001 | fgedu | walreceiver | 192.168.1.101 | fgedu-standby | 54321 | 2026-04-11 10:00:00.000000+08 | | streaming | 0/1234567 | 0/1234567 | 0/1234567 | 0/1234567 | | | | 1 | sync
(1 row)

# 查看数据库状态
fgedudb=# select pg_is_in_recovery();
pg_is_in_recovery
——————-
f
(1 row)

# 查看复制延迟
fgedudb=# select now() – pg_last_xact_replay_timestamp() as replication_lag;
replication_lag
—————–
00:00:00.000000
(1 row)

3.3.2 YashanDB高可用监控脚本

#!/bin/bash
# ha_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`

# 监控主备状态
function check_replication() {
echo “=== 检查主备复制状态 ===”
yassql -U fgedu -d fgedudb -c “select * from pg_stat_replication;”
echo “”
}

# 监控数据库状态
function check_db_status() {
echo “=== 检查数据库状态 ===”
yassql -U fgedu -d fgedudb -c “select pg_is_in_recovery();”
echo “”
}

# 监控复制延迟
function check_replication_lag() {
echo “=== 检查复制延迟 ===”
yassql -U fgedu -d fgedudb -c “select now() – pg_last_xact_replay_timestamp() as replication_lag;”
echo “”
}

# 执行监控
check_replication
check_db_status
check_replication_lag

# 保存监控日志
echo “$(date ‘+%Y-%m-%d %H:%M:%S’) – 高可用监控完成” >> /yashandb/log/ha_monitor.log

风哥提示:定期监控高可用架构的状态,及时发现和解决问题,确保系统的稳定性和可用性。from yashandb视频:www.itpux.com

Part04-生产案例与实战讲解

4.1 YashanDB主备架构实战案例

某金融科技公司部署YashanDB主备架构,确保核心业务系统的高可用性。

# 案例背景
– 业务系统:核心交易系统
– 数据量:500GB
– 并发用户:2000
– 可用性要求:99.99%
– RTO要求:<1分钟
– RPO要求:0

# 架构设计
– 主库:192.168.1.100
– 备库:192.168.1.101
– 复制模式:同步复制
– 监控:Zabbix+Grafana

# 部署步骤
1. 安装YashanDB软件
2. 创建主库实例
3. 配置备库实例
4. 建立主备复制关系
5. 配置监控和告警
6. 进行故障切换演练

# 故障切换测试
# 模拟主库故障
$ ssh root@fgedu-primary “systemctl stop yasdb”

# 查看备库状态
$ yassql -U fgedu -d fgedudb -h fgedu-standby
fgedudb=# select pg_is_in_recovery();
f pg_is_in_recovery
——————-
t
(1 row)

# 执行故障切换
$ yasboot promote standby

# 查看备库状态(已提升为主库)
fgedudb=# select pg_is_in_recovery();
pg_is_in_recovery
——————-
f
(1 row)

# 验证业务连续性
$ yassql -U fgedu -d fgedudb -c “insert into fgedu_test values (1, ‘test’);”
INSERT 0 1

$ yassql -U fgedu -d fgedudb -c “select * from fgedu_test;”
id | name
—-+——
1 | test
(1 row)

4.2 YashanDB共享集群实战案例

某大型企业部署YashanDB共享存储集群,满足高并发业务需求。

# 案例背景
– 业务系统:ERP系统
– 数据量:2TB
– 并发用户:5000
– 可用性要求:99.99%
– RTO要求:<30秒
– RPO要求:0

# 架构设计
– 节点1:192.168.1.200
– 节点2:192.168.1.201
– 共享存储:SAN存储
– 集群模式:YCS

# 部署步骤
1. 配置共享存储
2. 安装YashanDB软件
3. 创建集群实例
4. 配置集群参数
5. 启动集群服务
6. 验证集群状态

# 集群状态检查
$ yasboot cluster status
Cluster Name: fgedu-cluster
Nodes:
node1: RUNNING
node2: RUNNING

# 负载均衡测试
$ for i in {1..10}; do yassql -U fgedu -d fgedudb -c “select pg_backend_pid();”; done
pg_backend_pid
—————-
12345
12346
12347
12348
12349
12350
12351
12352
12353
12354
(10 rows)

4.3 YashanDB分布式架构实战案例

某互联网公司部署YashanDB分布式架构,满足海量数据存储和高并发访问需求。

# 案例背景
– 业务系统:用户行为分析系统
– 数据量:10TB
– 并发用户:10000
– 可用性要求:99.9%
– RTO要求:<5分钟
– RPO要求:<5分钟

# 架构设计
– 管理节点:192.168.1.300
– 数据节点1:192.168.1.301
– 数据节点2:192.168.1.302
– 数据节点3:192.168.1.303
– 分片策略:哈希分片

# 部署步骤
1. 安装YashanDB软件
2. 配置管理节点
3. 配置数据节点
4. 创建分布式数据库
5. 配置分片策略
6. 验证分布式架构

# 分片状态检查
$ yassql -U fgedu -d fgedudb
fgedudb=# select * from pg_dist_shard;
logicalrelid | shardid | shardstorage | shardminvalue | shardmaxvalue
————–+———+————–+—————+—————
fgedu_user | 1 | t | 0 | 1000000
fgedu_user | 2 | t | 1000001 | 2000000
fgedu_user | 3 | t | 2000001 | 3000000
(3 rows)

# 数据分布检查
fgedudb=# select shardid, count(*) from fgedu_user group by shardid;
shardid | count
———+——-
1 | 100000
2 | 100000
3 | 100000
(3 rows)

Part05-风哥经验总结与分享

5.1 YashanDB高可用架构最佳实践

YashanDB高可用架构最佳实践:

  • 根据业务需求选择合适的架构:不同业务场景适合不同的高可用架构
  • 合理配置复制模式:根据RPO要求选择同步、异步或半同步复制
  • 定期进行故障切换演练:确保故障切换流程顺畅
  • 建立完善的监控体系:及时发现和解决问题
  • 制定详细的故障处理流程:明确故障处理步骤和责任
  • 保持软件版本一致:主备节点使用相同版本的YashanDB
  • 合理规划存储和网络:确保存储和网络的可靠性
  • 定期备份数据:即使有高可用架构,也要定期备份数据
持续改进:高可用架构的设计和维护是一个持续的过程,需要根据业务发展和技术进步不断优化。建议定期review高可用架构的有效性,及时调整和改进。

5.2 YashanDB高可用架构检查清单

# YashanDB高可用架构检查清单
– [ ] 高可用架构是否符合业务需求
– [ ] 复制模式是否合理配置
– [ ] 主备节点网络连接是否正常
– [ ] 复制状态是否正常
– [ ] 复制延迟是否在可接受范围内
– [ ] 监控和告警是否配置完善
– [ ] 故障切换演练是否定期执行
– [ ] 备份策略是否合理
– [ ] 软件版本是否一致
– [ ] 存储和网络是否可靠

# 日常检查项
– [ ] 主备复制状态检查
– [ ] 复制延迟检查
– [ ] 数据库状态检查
– [ ] 监控告警检查
– [ ] 日志文件检查
– [ ] 存储空间检查
– [ ] 系统资源使用情况检查

5.3 YashanDB高可用架构推荐方案

YashanDB高可用架构推荐方案:

# 小型系统(数据量<100GB)
– 架构:主备架构(一主一备)
– 复制模式:异步复制
– 监控:基础监控
– 优势:部署简单,成本低

# 中型系统(数据量100GB-1TB)
– 架构:主备架构(一主多备)
– 复制模式:半同步复制
– 监控:完善的监控体系
– 优势:较高可用性,较好的性能

# 大型系统(数据量>1TB)
– 架构:共享存储集群或分布式架构
– 复制模式:同步复制
– 监控:全面的监控和告警体系
– 优势:高可用性,高扩展性,高性能

# 跨地域部署
– 架构:两地三中心
– 复制模式:异步复制(跨地域),同步复制(本地)
– 监控:跨地域监控
– 优势:异地容灾,多活架构

风哥提示:高可用架构的选择需要综合考虑业务需求、技术能力、成本等因素,没有放之四海而皆准的解决方案。建议在实施前进行充分的评估和测试,确保架构的可行性和有效性。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息