# PanguHA
**Repository Path**: cty901/pangu-ha
## Basic Information
- **Project Name**: PanguHA
- **Description**: Windows双机热备工具,Windows Keepalived(IP漂移),进程切换,文件同步,Mariadb/Mysql双主复制,Sqlserver双向同步,邮件提醒,高可用解决方案
- **Primary Language**: C#
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2024-07-11
- **Last Updated**: 2024-07-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
|[专业版购买链接](https://item.taobao.com/item.htm?ft=t&id=741000477408)| [企业版购买链接](https://item.taobao.com/item.htm?ft=t&id=761842414982) |[至尊版购买链接](https://item.taobao.com/item.htm?ft=t&id=767670160378) |
|---|---|---|
| 500元/套 | 2000元/套 |8000元/套 |
| 应用热备 | Mysql数据镜像(基于数据库) |Mysql/Sqlserver数据镜像(基于软件) |
| 备注2个序列号 | 备注2个序列号 | 备注2个序列号 |
### :tw-1f608: 为了防止盗版,软件有做混淆,导致部分杀毒软件误报,添加白名单即可
|瑞星 |火绒 | 腾讯管家 |2345 |金山 |360(建议卸载) |
|---|---|---|---|---|---|
|:tw-2705:|:tw-2705: | :tw-2705: |:tw-2705: | :tw-2705: | 可能误报 |
| **Avast** | **卡巴斯基** | **BitDefender** | **ESET-NOD32** | **AVG** | **Windows Defender** |
|:tw-2705:|:tw-2705: | :tw-2705: | :tw-2705: | :tw-2705: |可能误报 |
### :tw-2b50: 某大型医院云胶片热备案例: https://www.bilibili.com/video/BV14x4y167A2/?spm_id_from=333.999.0.0&vd_source=8db0f4c511ee648e595718cb636c8df7
# PanguHA
### :tw-1f335: 1. 简介
PanguHA是Windows平台的双机热备集群系统,是提供系统高可用性的解决方案,一般由两个节点构成,分为活动节点及备用节点。
通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。


### :tw-1f47a: 2. 数据镜像(基于软件)的侵入影响
| 侵入式方式 | :tw-2b50: 优点 | :tw-1f6b7: 影响 |
|---|---|---|
| 必须有主键 | 提高性能 |源端不要修改主键值,修改主键值会导致目标端多出一条旧记录 |
| 源和目标自动增加时间戳字段(以C开头)| 支持多种同步模式 |应用不要主动设置时间戳的值,insert语句必须指定字段,类似INSERT INTO 表名 VALUES(值1,值2,…)语句会报错 |
| 自动增加删除触发器(以Tri开头)和辅助库(以PanguSync结尾,与源表隔离)| 弥补时间戳方式不能同步删除 |无影响,不要自行修改删除触发器和辅助库表,除非你懂原理 |
### :tw-1f530: 3. 授权购买
||试用版|专业版|企业版|至尊版|
|---|---|---|---|---|
|价格 |免费|500元/套 | 2000元/套 |8000元/套|
|签订合同【非必须】([合同模板](https://pan.baidu.com/s/1U7jMJv-76q36T6diGwAVug?pwd=ABCD)) |/|可签 | 可签 |可签|
|授权期限| 永久| 永久 | 永久 | 永久|
|授权数量| 无限制 | 1套(2台电脑) | 1套(2台电脑) | 1套(2台电脑) |
|免费指导| :tw-274c: | :tw-2705: | :tw-2705: | :tw-2705: |
|远程支持(非必须)| :tw-274c: | +5000元 | +5000元 | +5000元|
|时间限制|2h/次| 不限 | 不限 | 不限|
| **自启动** |:tw-274c: | :tw-2705: | :tw-2705: | :tw-2705: |
| **IP漂移** 【[单独购买详见此链接,无硬件绑定,适合个人](https://gitee.com/AaronE_2890620459/pangu-vip)】| :tw-2705: | :tw-2705: | :tw-2705: | :tw-2705: |
| **执行管理** | :tw-2705: | :tw-2705: | :tw-2705: | :tw-2705: | :tw-2705: |
| **文件同步** 【[单独购买详见此链接,无硬件绑定,适合个人](https://gitee.com/AaronE_2890620459/pangu-flow)】| :tw-2705: | :tw-2705: | :tw-2705: | :tw-2705: |
| **邮件提醒** | :tw-2705: | :tw-2705: | :tw-2705: | :tw-2705: |
| **Mysql数据镜像(基于数据库)** | :tw-274c: | :tw-274c: | :tw-2705: | :tw-2705: |
| **Mysql/Sqlserver数据镜像(基于软件)** 【[单独购买详见此链接](https://gitee.com/AaronE_2890620459/pangu-sync)】| :tw-2705: | :tw-274c: | :tw-274c: | :tw-2705: |
|提供发票([发票样例](https://pan.baidu.com/s/1U7jMJv-76q36T6diGwAVug?pwd=ABCD))| / | 增值税普票 | 增值税普票|增值税普票|
|购买方式| / | [淘宝(备注2个序列号)](https://item.taobao.com/item.htm?ft=t&id=741000477408)/微信/支付宝/银行卡 | [淘宝(备注2个序列号)](https://item.taobao.com/item.htm?ft=t&id=761842414982)/微信/支付宝/银行卡 |[淘宝(备注2个序列号)](https://item.taobao.com/item.htm?ft=t&id=767670160378)/微信/支付宝/银行卡|
|收到货如何激活| /| 替换cc.license文件 | 替换cc.license文件 |替换cc.license文件|
微信:

### :tw-1f4d8: 4. 软著
### :loudspeaker: 5. 注意事项
- 操作系统: **Windows7 SP1** 及以上、**Windows Server 2008R2 SP1** 及以上
- 平台: **x86/x64**
- 环境: **.NET Framework 4.6.1** 及以上
- 点击 **HA.exe** 运行
- :tw-1f534: **数据库不推荐双写,因为自增ID极限情况下会冲突,推荐一写多读或只做热备**
- :tw-1f534: **多机热备时(3台及以上),软件支持Vip漂移、但不提供数据库多节点同步配置**
- :tw-1f534: **【数据同步】模块是侵入式增量同步,表必须要有主键,会自动添加辅助字段,应用中不要去主动设置辅助字段的值,不要修改主键值**
- :tw-1f534: **【数据同步】模块初次部署如果数据量较大,比如有上亿的初始数据,如果初始化超时请执行以下脚本:https://blog.csdn.net/sss899000/article/details/138615017**
### :cyclone: 6. 功能概述
- 故障转移(Windows Keepalived)
- 执行管理
- 文件同步
- Mysql数据镜像【基于数据库】(已测试版本:Mysql-5.6.10、Mysql-5.7.42、Mysql-8.0.16、Mysql-8.3.0、Mariadb-10.2.38)
- Mysql/Sqlserver数据镜像【基于软件】(已测试版本:Mysql5.6.4及以上/Sqlserver2008R2及以上)
- 邮件提醒
### :tw-1f504: 7. 数据库同步方式对比
| | 基于数据库| 基于软件 |
|---|---|---|
| 同步结构 | :tw-2705: | 半自动,需手动在两边数据库做同样的修改,软件将自动更新映射配置,不丢失新字段数据 |
| 非侵入式 | :tw-2705: | :tw-274c: |
| 增量同步 | :tw-2705: | :tw-2705: |
| 初始化全量同步 | :tw-274c: | :tw-2705: |
| 自动处理主键冲突 | :tw-274c: | :tw-2705: |
| 自动处理外键约束冲突 | :tw-274c: | :tw-2705: |
| 自动处理唯一索引冲突 | :tw-274c: | :tw-2705: |
| 运维难度 | 困难 | 简单 |
### :books: 8. 教程
- [双机热备软件PanguHA说明书(新)](https://pan.baidu.com/s/1qSeCwWtnsEge32QpF2MRwA?pwd=abcd)
### :tw-1f4fa: 9. 视频
- [Web应用高可用配置](https://www.bilibili.com/video/BV1iK421v7Dv/?vd_source=8db0f4c511ee648e595718cb636c8df7)
- [Mysql高可用配置](https://www.bilibili.com/video/BV1Mi421R7FP/?vd_source=8db0f4c511ee648e595718cb636c8df7)
- [文件实时同步配置](https://www.bilibili.com/video/BV1fy421v7Mh/?vd_source=8db0f4c511ee648e595718cb636c8df7)
- [Sqlserver高可用配置(旧)【可参考】](https://www.bilibili.com/video/BV1tZ421871n/?vd_source=8db0f4c511ee648e595718cb636c8df7)
### :alien: 10. 功能说明
#### 10.1 故障转移(Windows Keepalived)
- 对外提供一个集群IP(虚拟IP/VIP),并且该IP始终只会设置在活动节点上(主节点),当活动节点宕机,
该IP会自动漂移到未宕机的节点上,系统站点和数据库的IP可以设置为VIP,代码层面无需改动
用于提高系统可用性,对业务无感知。(网卡中需使用静态ip,不可设置为动态获取,节点之间能互相ping通,VIP是同网段内无人使用的IP)

- 可配置对方IP,用于检测对方节点,异常发送邮件提醒,需要开放ICMP和监听端口
- 可配置Web服务Url,如果是主节点,发现web服务异常【30s内重试3次】会进行故障转移并发送邮件。如果是备节点,发现Web服务异常会发送邮件提醒
- 可配置Windows服务,如果是主节点,发现Windows服务异常会先进行重启,重启失败【30s内重试3次】则进行故障转移。如果是备节点,重启失败发送邮件提醒

##### 主节点出现以下情况将进行故障转移:
- 宕机
- 网卡异常
- Web服务Url异常
- Windows服务异常
#### 10.2 执行管理
- 在两个节点上配置相同的进程或windows服务,在运行时主节点(集群IP绑定节点)上会打开配置的进程或windows服务,在备节点上会kill配置的进程或windows服务

#### 10.3 文件同步
- 基于文件系统监听器,能快速捕获路径下文件或文件夹的变更,从而快速同步到目标端
- 不同电脑之间同步需先设置共享文件,保证IP形式的路径可访问
- 主节点的变更可以实时同步到备节点,备节点的变更不同步到主节点,而是根据镜像周期恢复到和主节点一样(比如备节点不小心删除了文件可以恢复)
- 主节点和备节点都需要配置源路径和目标路径并启动,但只在主节点运行同步任务

#### 10.4 Mysql数据镜像(基于数据库)
- 一键部署双主复制,部署之前请先确认两台主机IP,3306端口是否连接正常,mysql用户是否可远程访问
- 开启健康检测后,自动检测mysql服务,如果mysql服务挂掉,会重新启动
- 同时开启IP漂移和健康检测后,VIP节点上的mysql服务如果挂掉,会先进行重启,如果重启失败,则切换VIP绑定节点

#### 10.5 Mysql/Sqlserver数据镜像(基于软件)
- 如果你不想配置Mysql主从,【数据同步】模块同样可实现Mysql的双主同步
- 仅同步数据,不同步结构,适合已经开发完成需求变动不大的应用
- 结构同步为半自动方式,即结构的变动需要在源和目标数据库手动执行,软件将自动更新映射配置,无需重新编辑任务
- 侵入式增量同步,每个表必须要有主键,会自动添加辅助字段,应用中不要主动去设置辅助字段的值
- 数据同步异常时可发送邮件
- 初次部署做全量同步如果数据量较大,会比较占用CPU,全量同步完成后CPU占用会大幅下降,提高睡眠时间和字段检测间隔可以降低数据库对CPU的占用,专为性能低下的服务器设计
- 选库不选表可批量生成任务
- 配置数据双主同步、Sqlserver服务监控、IP漂移,即可搭建sqlserver高可用


#### 10.6 邮件提醒
- 在邮件提醒界面保存配置(可先进行测试)
- VIP切换后,会发送邮件提醒
- 在添加对方IP后,主节点会对它们进行检测,检测到对方IP连接异常时会发送邮件提醒(防止主节点宕机没有备节点可以切换)
- 在添加本机web服务Url后,备节点上监测到自己的web服务异常后,会发送邮件提醒(防止主节点web服务异常没有备节点可以切换)
- 在添加windows服务后,备节点上监测到自己的windows服务异常后,会发送邮件提醒(防止主节点windows服务异常后没有备节点可以切换)
- 在开启Mysql健康检测的情况下,备节点断联或同步异常,会发送邮件提醒(防止主节点宕机切换后数据异常)
- Sqlserver数据同步异常停止任务时会发送邮件


### :secret: 11. 关于开机自启动
- 在【IP漂移】点击运行成功后,会保存相关信息,下次打开软件将自动运行
- 在【执行管理】配置后,下次打开将自动运行
- 在【文件同步】配置后,下次打开将自动运行
- 在【mysql主从配置】开启健康检测成功后,会保存mysql设置的相关信息,下次打开软件将自动开启健康检测
- 在【数据同步】添加任务后,下次打开将自动运行
- 将软件设置为快捷方式,然后Win+R输入shell:startup,将快捷方式拖入该目录
- Win+R输入gpedit.msc打开组策略,依次展开计算机配置--->Windows设置--->安全设置--->本地策略--->安全选项--->用户账户控制:以管理员批准模式运行所有管理员,设置为已禁用