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

yashandb教程FG121-YashanDB两地三中心

本文档风哥主要介绍YashanDB两地三中心架构的相关知识,包括YashanDB两地三中心的概念、架构原理、环境规划、部署步骤、配置详解、故障切换案例、灾备演练等内容,风哥教程参考YashanDB官方文档高可用与容灾相关内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 YashanDB两地三中心的概念

YashanDB两地三中心是一种高可用容灾架构,指的是在两个地理区域(两地)部署三个数据中心(三中心),包括一个主中心、一个同城灾备中心和一个异地灾备中心。这种架构可以提供更高的可用性和灾难恢复能力,学习交流加群风哥微信: itpux-com。

YashanDB两地三中心的核心概念:

  • 主中心:主要生产环境,处理所有业务请求
  • 同城灾备中心:与主中心位于同一城市,用于同城故障切换
  • 异地灾备中心:与主中心位于不同城市,用于异地灾难恢复
  • 数据同步:主中心与两个灾备中心之间的数据同步机制
  • 切换机制:当主中心发生故障时,自动或手动切换到灾备中心

1.2 YashanDB两地三中心架构原理

YashanDB两地三中心架构基于主备复制技术,通过日志同步实现数据一致性。主中心与同城灾备中心之间采用同步复制,确保数据实时一致性;主中心与异地灾备中心之间采用异步复制,平衡数据一致性和网络延迟。

# YashanDB两地三中心架构组成
– 主中心(Site A):生产环境,处理所有业务请求
– 同城灾备中心(Site B):与主中心同城市,距离较近,网络延迟低
– 异地灾备中心(Site C):与主中心不同城市,距离较远,网络延迟较高

# 数据同步策略
– 主中心 → 同城灾备中心:同步复制,确保数据实时一致
– 主中心 → 异地灾备中心:异步复制,平衡一致性和延迟
– 同城灾备中心 → 异地灾备中心:可选,作为数据同步的补充路径

# 切换策略
– 主中心故障:切换到同城灾备中心
– 同城灾备中心故障:切换到主中心或异地灾备中心
– 主中心和同城灾备中心同时故障:切换到异地灾备中心

1.3 YashanDB两地三中心的优势与特性

YashanDB两地三中心架构具有以下优势与特性:

  • 高可用性:提供多级别故障切换能力,确保业务连续运行
  • 灾难恢复:在发生区域性灾难时,可快速恢复业务
  • 数据安全:多中心数据备份,确保数据不丢失
  • 灵活性:支持多种切换策略,适应不同场景需求
  • 可扩展性:支持横向扩展,适应业务增长
风哥提示:YashanDB两地三中心架构是金融、政企等关键行业的首选容灾方案,能够有效应对各种级别的故障和灾难。学习交流加群风哥QQ113257174

Part02-生产环境规划与建议

2.1 YashanDB两地三中心环境规划

YashanDB两地三中心环境规划需要考虑以下因素:

# 地理规划
– 主中心(Site A):主要生产数据中心
– 同城灾备中心(Site B):与主中心距离不超过50公里
– 异地灾备中心(Site C):与主中心距离至少200公里

# 硬件规划
– 服务器配置:主中心和灾备中心配置相同
– 存储配置:主中心和灾备中心存储容量和性能相当
– 网络配置:主中心与同城灾备中心之间采用高速网络,异地灾备中心采用专线

# 软件规划
– YashanDB版本:所有中心使用相同版本
– 操作系统:所有中心使用相同版本
– 补丁级别:所有中心保持相同补丁级别

# 人员规划
– 运维人员:熟悉YashanDB两地三中心架构
– 应急响应团队:24小时待命
– 定期培训:确保运维人员熟悉切换流程

2.2 YashanDB两地三中心网络要求

YashanDB两地三中心网络要求:

# 网络带宽要求
– 主中心 ↔ 同城灾备中心:至少10Gbps
– 主中心 ↔ 异地灾备中心:至少2Gbps

# 网络延迟要求
– 主中心 ↔ 同城灾备中心:延迟 < 5ms - 主中心 ↔ 异地灾备中心:延迟 < 50ms # 网络稳定性要求 - 主中心 ↔ 同城灾备中心:99.99%可用性 - 主中心 ↔ 异地灾备中心:99.9%可用性 # 网络安全要求 - 所有中心之间使用专用网络 - 配置防火墙规则,只允许必要的端口通信 - 采用加密传输,确保数据安全

2.3 YashanDB两地三中心存储要求

YashanDB两地三中心存储要求:

  • 存储容量:所有中心存储容量至少为主中心数据量的1.5倍
  • 存储性能:灾备中心存储性能不低于主中心的80%
  • 存储类型:推荐使用SSD存储,提高IO性能
  • 存储冗余:所有中心采用RAID 10或更高冗余级别
生产环境建议:网络和存储是YashanDB两地三中心架构的关键因素,必须确保网络带宽足够、延迟低、稳定性高,同时存储性能和容量满足要求。更多学习教程公众号风哥教程itpux_com

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

3.1 YashanDB两地三中心部署步骤

3.1.1 准备工作

# 1. 环境检查
$ nproc
48

# 2. 检查系统架构
$ uname -m
x86_64

# 3. 检查操作系统版本
$ cat /etc/redhat-release
Oracle Linux Server release 9.3

# 4. 检查网络连通性
$ ping -c 3 site-b.fgedu.net.cn
PING site-b.fgedu.net.cn (192.168.2.10) 56(84) bytes of data.
64 bytes from site-b.fgedu.net.cn (192.168.2.10): icmp_seq=1 ttl=64 time=2.34 ms
64 bytes from site-b.fgedu.net.cn (192.168.2.10): icmp_seq=2 ttl=64 time=2.28 ms
64 bytes from site-b.fgedu.net.cn (192.168.2.10): icmp_seq=3 ttl=64 time=2.31 ms

$ ping -c 3 site-c.fgedu.net.cn
PING site-c.fgedu.net.cn (10.0.0.10) 56(84) bytes of data.
64 bytes from site-c.fgedu.net.cn (10.0.0.10): icmp_seq=1 ttl=64 time=35.4 ms
64 bytes from site-c.fgedu.net.cn (10.0.0.10): icmp_seq=2 ttl=64 time=35.6 ms
64 bytes from site-c.fgedu.net.cn (10.0.0.10): icmp_seq=3 ttl=64 time=35.3 ms

3.1.2 安装YashanDB

# 在所有中心安装YashanDB
# 1. 解压安装包
$ tar -xvf yashandb-23.4.0.0-linux-x86_64.tar.gz

# 2. 运行安装向导
$ cd yashandb-23.4.0.0-linux-x86_64
$ ./install.sh

# 3. 按照图形化向导完成安装
# 安装路径:/yashandb/app
# 数据路径:/yashandb/fgdata

# 4. 验证安装
$ /yashandb/app/bin/yasboot status
YashanDB instance is stopped.

3.2 YashanDB两地三中心配置详解

3.2.1 配置主中心(Site A)

# 1. 创建主数据库
$ /yashandb/app/bin/yasboot create -d fgedudb -p /yashandb/fgdata

# 2. 启动主数据库
$ /yashandb/app/bin/yasboot start -d fgedudb

# 3. 配置主库参数
$ /yashandb/app/bin/yassql -d fgedudb -u sys -p password
YashanDB SQL>
ALTER SYSTEM SET synchronous_standby_names = ‘site_b’;
ALTER SYSTEM SET wal_level = ‘logical’;
ALTER SYSTEM SET max_wal_senders = 10;
ALTER SYSTEM SET max_replication_slots = 10;
ALTER SYSTEM SET hot_standby = on;
ALTER SYSTEM SET max_connections = 1000;
ALTER SYSTEM SET shared_buffers = ’16GB’;
\q

3.2.2 配置同城灾备中心(Site B)

# 1. 从主库备份
$ /yashandb/app/bin/yas_dump -d fgedudb -u sys -p password -F c -f /backup/fgedudb_backup.dmp

# 2. 复制备份到同城灾备中心
$ scp /backup/fgedudb_backup.dmp site-b:/backup/

# 3. 在同城灾备中心恢复数据库
$ /yashandb/app/bin/yasboot create -d fgedudb -p /yashandb/fgdata
$ /yashandb/app/bin/yas_restore -d fgedudb -f /backup/fgedudb_backup.dmp

# 4. 配置备库参数
$ /yashandb/app/bin/yassql -d fgedudb -u sys -p password
YashanDB SQL>
ALTER SYSTEM SET standby_mode = on;
ALTER SYSTEM SET hot_standby = on;
ALTER SYSTEM SET primary_conninfo = ‘host=site-a port=5432 user=repl password=replpassword dbname=fgedudb’;
ALTER SYSTEM SET recovery_target_timeline = ‘latest’;
\q

# 5. 启动备库
$ /yashandb/app/bin/yasboot start -d fgedudb -c standby

3.2.3 配置异地灾备中心(Site C)

# 1. 从主库备份
$ /yashandb/app/bin/yas_dump -d fgedudb -u sys -p password -F c -f /backup/fgedudb_backup.dmp

# 2. 复制备份到异地灾备中心
$ scp /backup/fgedudb_backup.dmp site-c:/backup/

# 3. 在异地灾备中心恢复数据库
$ /yashandb/app/bin/yasboot create -d fgedudb -p /yashandb/fgdata
$ /yashandb/app/bin/yas_restore -d fgedudb -f /backup/fgedudb_backup.dmp

# 4. 配置备库参数(异步复制)
$ /yashandb/app/bin/yassql -d fgedudb -u sys -p password
YashanDB SQL>
ALTER SYSTEM SET standby_mode = on;
ALTER SYSTEM SET hot_standby = on;
ALTER SYSTEM SET primary_conninfo = ‘host=site-a port=5432 user=repl password=replpassword dbname=fgedudb application_name=site_c’;
ALTER SYSTEM SET recovery_target_timeline = ‘latest’;
ALTER SYSTEM SET synchronous_commit = ‘off’;
\q

# 5. 启动备库
$ /yashandb/app/bin/yasboot start -d fgedudb -c standby

3.3 YashanDB两地三中心切换测试

3.3.1 手动切换测试

# 1. 在主库(Site A)执行切换
$ /yashandb/app/bin/yassql -d fgedudb -u sys -p password
YashanDB SQL>
SELECT pg_is_in_recovery();
pg_is_in_recovery
——————-
f
(1 row)

SELECT pg_switch_wal();
pg_switch_wal
—————-
0/1234567
(1 row)

SELECT pg_start_backup(‘switchover’);
pg_start_backup
—————-
0/1234568
(1 row)
\q

# 2. 在同城灾备库(Site B)执行切换
$ /yashandb/app/bin/yassql -d fgedudb -u sys -p password
YashanDB SQL>
SELECT pg_is_in_recovery();
pg_is_in_recovery
——————-
t
(1 row)

SELECT pg_promote();
pg_promote
————
t
(1 row)

SELECT pg_is_in_recovery();
pg_is_in_recovery
——————-
f
(1 row)
\q

# 3. 验证新主库状态
$ /yashandb/app/bin/yasboot status -d fgedudb
YashanDB instance is running.

风哥提示:切换测试是确保YashanDB两地三中心架构可靠性的关键步骤,建议定期进行切换测试,确保在真正发生故障时能够快速、准确地完成切换。from yashandb视频:www.itpux.com

Part04-生产案例与实战讲解

4.1 YashanDB两地三中心故障切换案例

4.1.1 主中心故障场景

# 故障现象:主中心(Site A)发生网络中断

# 1. 检查主中心状态
$ ping -c 3 site-a.fgedu.net.cn
ping: site-a.fgedu.net.cn: Name or service not known

# 2. 检查同城灾备中心状态
$ /yashandb/app/bin/yasboot status -d fgedudb
YashanDB instance is running.

# 3. 检查同城灾备中心复制状态
$ /yashandb/app/bin/yassql -d fgedudb -u sys -p password
YashanDB SQL>
SELECT slot_name, status, restart_lsn FROM pg_replication_slots;
slot_name | status | restart_lsn
———–+——–+————-
site_b | active | 0/1234567
(1 row)

# 4. 执行故障切换
$ /yashandb/app/bin/yassql -d fgedudb -u sys -p password
YashanDB SQL>
SELECT pg_is_in_recovery();
pg_is_in_recovery
——————-
t
(1 row)

SELECT pg_promote();
pg_promote
————
t
(1 row)

# 5. 验证新主库状态
$ /yashandb/app/bin/yasboot status -d fgedudb
YashanDB instance is running.

$ /yashandb/app/bin/yassql -d fgedudb -u sys -p password
YashanDB SQL>
SELECT pg_is_in_recovery();
pg_is_in_recovery
——————-
f
(1 row)

# 6. 更新应用连接配置,指向新主库
# 修改应用连接字符串为:jdbc:yashan://site-b.fgedu.net.cn:5432/fgedudb

4.2 YashanDB两地三中心灾备演练案例

4.2.1 全流程灾备演练

# 演练目标:模拟主中心和同城灾备中心同时故障,切换到异地灾备中心

# 1. 模拟主中心和同城灾备中心故障
# 停止主中心和同城灾备中心的数据库服务

# 2. 检查异地灾备中心状态
$ /yashandb/app/bin/yasboot status -d fgedudb
YashanDB instance is running.

# 3. 检查异地灾备中心数据同步状态
$ /yashandb/app/bin/yassql -d fgedudb -u sys -p password
YashanDB SQL>
SELECT slot_name, status, restart_lsn FROM pg_replication_slots;
slot_name | status | restart_lsn
———–+——–+————-
site_c | active | 0/1234567
(1 row)

# 4. 执行故障切换到异地灾备中心
$ /yashandb/app/bin/yassql -d fgedudb -u sys -p password
YashanDB SQL>
SELECT pg_is_in_recovery();
pg_is_in_recovery
——————-
t
(1 row)

SELECT pg_promote();
pg_promote
————
t
(1 row)

# 5. 验证异地灾备中心成为新主库
$ /yashandb/app/bin/yassql -d fgedudb -u sys -p password
YashanDB SQL>
SELECT pg_is_in_recovery();
pg_is_in_recovery
——————-
f
(1 row)

# 6. 验证业务数据完整性
$ /yashandb/app/bin/yassql -d fgedudb -u fgedu -p password
YashanDB SQL>
SELECT count(*) FROM fgedu_user;
count
——-
10000
(1 row)

SELECT count(*) FROM fgedu_order;
count
——-
50000
(1 row)

4.3 YashanDB两地三中心性能优化

YashanDB两地三中心性能优化措施:

# 1. 网络优化
– 使用高速网络设备
– 优化网络路由
– 配置QoS,确保复制流量优先

# 2. 存储优化
– 使用SSD存储
– 配置适当的RAID级别
– 优化存储缓存策略

# 3. 数据库参数优化
$ /yashandb/app/bin/yassql -d fgedudb -u sys -p password
YashanDB SQL>
— 优化复制参数
ALTER SYSTEM SET wal_sender_timeout = ’60s’;
ALTER SYSTEM SET wal_receiver_timeout = ’60s’;
ALTER SYSTEM SET max_wal_size = ‘1GB’;
ALTER SYSTEM SET min_wal_size = ’80MB’;

— 优化内存参数
ALTER SYSTEM SET shared_buffers = ’16GB’;
ALTER SYSTEM SET work_mem = ’64MB’;
ALTER SYSTEM SET maintenance_work_mem = ‘1GB’;

— 优化查询参数
ALTER SYSTEM SET random_page_cost = 1.1;
ALTER SYSTEM SET effective_cache_size = ’32GB’;
\q

# 4. 应用优化
– 合理设计应用架构
– 使用连接池
– 优化SQL语句
– 减少大事务

生产环境建议:性能优化是YashanDB两地三中心架构的重要组成部分,需要从网络、存储、数据库参数、应用等多个层面进行优化,确保系统性能满足业务需求。

Part05-风哥经验总结与分享

5.1 YashanDB两地三中心最佳实践

YashanDB两地三中心最佳实践:

  • 定期演练:每季度至少进行一次灾备演练,确保切换流程顺畅
  • 监控体系:建立完善的监控体系,实时监控各中心状态
  • 自动化:实现切换流程自动化,减少人为错误
  • 文档完善:详细记录部署、配置、切换流程,确保可操作性
  • 培训到位:对运维人员进行定期培训,熟悉架构和操作

5.2 YashanDB两地三中心常见问题

# 常见问题及解决方案

## 1. 复制延迟
– 原因:网络带宽不足、网络延迟高、主库负载高
– 解决方案:增加网络带宽、优化网络路由、调整复制参数、优化主库性能

## 2. 切换失败
– 原因:网络中断、权限不足、参数配置错误
– 解决方案:检查网络连接、确保权限正确、验证参数配置

## 3. 数据不一致
– 原因:复制中断、网络故障、硬件故障
– 解决方案:定期验证数据一致性、设置合适的复制模式、及时处理复制错误

## 4. 性能下降
– 原因:网络延迟、存储性能不足、参数配置不合理
– 解决方案:优化网络、升级存储、调整数据库参数

## 5. 监控盲区
– 原因:监控覆盖不全、告警设置不合理
– 解决方案:完善监控体系、设置合理的告警阈值、定期检查监控有效性

5.3 YashanDB两地三中心维护建议

# 日常维护建议

## 每日维护
– 检查各中心数据库状态
– 检查复制延迟
– 检查存储空间
– 检查网络连通性

## 每周维护
– 备份所有中心的数据库
– 检查数据库日志
– 分析性能指标
– 验证数据一致性

## 每月维护
– 进行切换测试
– 检查系统补丁
– 优化数据库参数
– 清理过期日志

## 季度维护
– 进行全面灾备演练
– 评估系统性能
– 调整资源配置
– 更新维护文档

# 维护工具推荐
– YashanDB监控工具(YCM)
– 第三方监控工具(Zabbix、Prometheus)
– 自动化运维脚本
– 日志分析工具

风哥提示:YashanDB两地三中心架构的维护是一个持续的过程,需要定期检查、测试和优化,确保系统在各种情况下都能正常运行。更多视频教程www.fgedu.net.cn

总结:YashanDB两地三中心架构是一种高可用、高可靠的容灾方案,能够有效应对各种级别的故障和灾难。通过合理的规划、部署和维护,可以确保业务的连续性和数据的安全性。学习交流加群风哥微信: itpux-com

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

联系我们

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

微信号:itpux-com

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