运行数据库服务的服务器能备份吗?Synology ABB 安全备份方案
在企业 IT 运维中,很多管理员会困惑:“正在运行 MySQL、SQL Server 等数据库服务的服务器,能直接备份吗?会不会导致数据损坏?”—— 答案是可以备份,但需用支持 “数据一致性保障” 的工具,比如 Synology Active Backup for Business(简称 ABB)。若直接用普通备份工具拷贝数据库文件,易因数据读写冲突导致备份文件损坏,而 ABB 通过 VSS(卷影副本)、预备份脚本等技术,可在不中断数据库服务的前提下,实现安全备份。
一、核心答案:运行数据库服务的服务器能备份,但需满足 2 个关键条件
并非所有备份工具都能安全备份运行中的数据库服务器,用 Synology ABB 实现有效备份,需满足以下 2 个核心条件,缺一不可:
- 数据库服务支持 “在线一致性备份”:需数据库本身提供快照、事务日志等机制(如 SQL Server 的 VSS Writer、MySQL 的 binlog),或通过脚本临时冻结数据写入,避免备份时数据碎片化;
- 使用 ABB 的 “物理服务器整机备份” 或 “系统卷备份”:仅支持对服务器整机或包含数据库文件的系统卷进行备份,不支持单独备份数据库文件(文件级备份无法保障一致性)。
简单来说:只要你的数据库属于 ABB 支持范围(如下文清单),且配置了一致性保障方案,就能在数据库正常运行的情况下完成安全备份,无需停机。
二、明确范围:ABB 支持备份的数据库类型与版本
Synology 官方明确了支持备份的数据库类型及版本,若你的数据库不在清单内,需先迁移到兼容版本或采用其他备份方案(如数据库原生工具):
数据库类型 | 支持版本 | 一致性保障方案 | 关键限制 |
Microsoft SQL Server | 2008 R2/2012/2014/2016/2019/2022 | VSS 卷影副本(推荐)、事务日志备份 | 需启用 SQL Server VSS Writer 服务 |
MySQL | 5.5/5.6/5.7/8.0 | 预备份脚本(冻结表)、binlog 增量 | 仅支持 InnoDB 引擎,MyISAM 需停机备份 |
PostgreSQL | 9.6/10/11/12/13/14 | pg_start_backup () 函数、预脚本 | 需修改 pg_hba.conf 允许备份账户访问 |
Oracle Database | 11g R2/12c R1/R2/18c/19c | RMAN 备份集成、预脚本 | 需 Oracle 管理员权限(SYSDBA) |
MongoDB | 3.6/4.0/4.2/4.4/5.0 | fsyncLock () 锁定、预脚本 | 副本集环境需备份主节点 |
特别提醒:MyISAM 引擎的 MySQL 数据库因不支持事务,无法通过在线方式保障一致性,需临时停止 mysqld 服务后再备份(或迁移到 InnoDB 引擎);Oracle 数据库需提前安装 RMAN 工具,并在 ABB 中配置 RMAN 备份参数。
三、前提准备:备份前必须完成的 4 项配置(避免失败)
在启动 ABB 备份任务前,需先完成数据库服务器与 NAS 的环境配置,这些步骤是保障备份成功的基础:
1. 配置数据库服务器的一致性保障方案
根据数据库类型选择对应方案,以下为 3 种主流数据库的配置步骤:
(1)SQL Server:启用 VSS Writer 服务(推荐)
- 登录 SQL Server 所在的 Windows 服务器,按下Win+R输入services.msc,打开 “服务” 窗口;
- 在服务列表中找到 “SQL Server VSS Writer”,确认 “启动类型” 为 “自动”,“状态” 为 “正在运行”(若未运行,右键点击 “启动”);
- 右键点击该服务→“属性”→“登录”,确认登录账户为 “Local System” 或具备 SQL Server 管理员权限的账户;
- 打开 “SQL Server Management Studio”,连接数据库后执行命令SELECT name, state_desc FROM sys.databases,确认所有数据库状态为 “ONLINE”(无 “RESTORING” 或 “OFFLINE”)。
(2)MySQL:创建预备份脚本(冻结表)
- 在 MySQL 服务器上新建文本文件,命名为mysql_pre_backup.bat(Windows)或mysql_pre_backup.sh(Linux);
- 写入以下脚本内容(根据实际账户密码修改):
# Windows脚本示例(需配置mysql环境变量)mysql -u root -p123456 -e "FLUSH TABLES WITH READ LOCK;" # 冻结所有表,禁止写入mysql -u root -p123456 -e "SET GLOBAL read_only = ON;" # 开启全局只读模式
# Linux脚本示例#!/bin/bashmysql -u root -p123456 -e "FLUSH TABLES WITH READ LOCK;"mysql -u root -p123456 -e "SET GLOBAL read_only = ON;"
- 给脚本添加执行权限(Linux:chmod +x mysql_pre_backup.sh;Windows:右键→“以管理员身份运行” 测试是否报错)。
(3)PostgreSQL:修改访问权限与备份函数
- 找到 PostgreSQL 配置文件pg_hba.conf(默认路径:C:Program FilesPostgreSQL14datapg_hba.conf);
- 添加备份账户的访问权限:在文件末尾添加host all backup_user 0.0.0.0/0 scram-sha-256(backup_user 为新建的备份账户);
- 重启 PostgreSQL 服务(Windows:服务中重启 “postgresql-x64-14”;Linux:systemctl restart postgresql-14);
- 登录 PostgreSQL:psql -U postgres,执行CREATE USER backup_user WITH SUPERUSER PASSWORD '123456';,创建具备超级权限的备份账户。
2. 安装 ABB 代理程序(数据库服务器端)
- 登录 Synology DSM→打开 Active Backup for Business→进入 “物理服务器” 页面;
- 点击 “添加服务器”→选择 “Windows/Linux 物理服务器”→下载对应系统的 ABB 代理程序(如 “ActiveBackupforBusiness_Agent_Windows_x64.exe”);
- 在数据库服务器上运行代理程序,按向导安装(默认下一步即可),安装完成后输入 NAS 的 IP、ABB 管理员账户密码,完成服务器添加。
3. 确认 NAS 存储空间充足
备份文件大小≈数据库服务器的系统卷 / 数据卷大小(含数据库文件),需确保 NAS 存储池可用空间≥备份目标卷大小的 1.2 倍(预留增量备份空间):
- 查看方法:DSM→“存储管理器”→“存储空间”→查看目标存储池的 “可用容量”。
4. 测试数据库连接与权限
在 NAS 上通过 ABB 测试数据库服务器的访问权限:
- ABB→“物理服务器”→找到目标服务器→点击 “更多”→“测试连接”;
- 若提示 “数据库服务可访问”,说明权限正常;若提示 “拒绝访问”,需重新检查数据库账户权限(如 MySQL 的 root 账户是否允许远程连接)。
四、分数据库实操:用 ABB 备份运行中的数据库服务器(全步骤)
以下以 “备份运行 SQL Server 2019 的 Windows 服务器” 和 “备份运行 MySQL 8.0 的 Linux 服务器” 为例,详细讲解操作流程,其他数据库可参考适配。
场景 1:备份运行 SQL Server 2019 的 Windows 服务器(VSS 保障一致性)
步骤 1:创建 ABB 备份任务
- 打开 ABB→“物理服务器”→点击 “创建任务”→选择目标 Windows 服务器;
- 选择备份类型:勾选 “整个机器”(若仅需备份包含 SQL Server 的卷,可选择 “特定卷” 并勾选系统卷 + 数据卷);
- 设置备份目标:选择 NAS 上的备份共享文件夹(如 “ActiveBackupforBusiness”),建议新建子文件夹(如 “SQL_Server_Backup”)单独存储。
步骤 2:配置一致性保障(启用 VSS)
- 进入 “高级设置” 页面→勾选 “启用卷影副本 (VSS)”;
- 在 “VSS 组件” 下拉框中,勾选 “Microsoft SQL Server”(确保仅备份 SQL Server 相关组件,减少备份体积);
- 其他设置保持默认(如 “压缩备份”“加密备份” 可按需勾选),点击 “下一步”。
步骤 3:设置备份计划(避免业务高峰期)
- 勾选 “启用备份计划”→选择备份频率:“每日”(推荐)或 “每周”;
- 设置备份开始时间:选择数据库访问量低的时段(如凌晨 2:00-4:00);
- 增量备份设置:勾选 “启用增量备份”→设置增量频率(如 “每 6 小时”),基于全量备份生成差异数据。
步骤 4:启动备份并验证
- 点击 “完成”→在任务列表中找到该任务→点击 “运行”,手动触发首次全量备份;
- 备份过程中,可在 “日志中心” 查看进度(“备份日志”→“正在运行”),SQL Server 服务会正常运行(VSS 自动创建数据快照,不影响业务);
- 备份完成后,查看日志状态为 “成功”,且 SQL Server 数据库可正常读写(无 “备份导致卡顿” 问题)。
场景 2:备份运行 MySQL 8.0 的 Linux 服务器(预脚本保障一致性)
步骤 1:创建备份任务并关联预脚本
- ABB→“物理服务器”→“创建任务”→选择目标 Linux 服务器→选择 “特定卷”(勾选包含 MySQL 数据的卷,如/var/lib/mysql所在的/卷);
- 进入 “高级设置”→“预备份脚本”→点击 “浏览”,选择之前在 Linux 服务器上创建的mysql_pre_backup.sh脚本;
- 配置 “后备份脚本”(备份完成后恢复写入):新建mysql_post_backup.sh,写入mysql -u root -p123456 -e "SET GLOBAL read_only = OFF;",在 ABB 中关联该脚本;
- 勾选 “脚本执行超时时间”→设置为 “300 秒”(避免脚本卡住导致备份失败)。
步骤 2:设置备份计划与存储
- 备份计划:同场景 1,选择凌晨时段启动全量备份,每 8 小时增量备份;
- 存储设置:选择 NAS 的 ext4 格式存储池(支持快照,提升恢复速度),勾选 “启用备份验证”(自动检测备份文件完整性)。
步骤 3:运行备份与验证一致性
- 手动运行备份,查看 “日志中心”:确认 “预备份脚本执行成功”(显示 “FLUSH TABLES WITH READ LOCK 执行完成”);
- 备份完成后,登录 MySQL 执行SHOW GLOBAL VARIABLES LIKE 'read_only';,确认read_only值为 “OFF”(写入已恢复);
- 测试恢复:在 ABB 中选择该备份版本→“恢复”→“恢复到指定路径”(如/tmp/mysql_backup),查看恢复的ibdata1(InnoDB 共享表空间)文件大小与原文件一致,说明备份有效。
五、关键注意事项:避免备份风险的 5 个核心要点
- 禁止中断备份过程:备份时若强制停止 ABB 代理或重启数据库服务器,会导致数据库文件损坏(需用原生工具修复,如 MySQL 的mysqlcheck);
- 定期清理旧备份:通过 ABB “保留策略” 设置 “保留最近 30 天全量备份,最近 7 天增量备份”,避免 NAS 存储占满;
- 区分增量与差异备份:MySQL、PostgreSQL 建议用 “增量备份”(基于 binlog/pg_wald),SQL Server 用 “差异备份”(基于 VSS 快照差异),平衡备份速度与存储占用;
- 测试恢复流程:每月至少执行 1 次恢复测试(恢复到测试服务器),确认备份数据可正常启动数据库(避免 “备份成功但无法恢复” 的隐患);
- 升级 ABB 与代理:及时更新 ABB 套件(DSM “套件中心”→“更新”)和数据库服务器的代理程序,修复兼容性问题(如旧版本不支持 MySQL 8.0 的read_only参数)。
六、常见问题:备份运行中数据库服务器的 6 类故障解决
1. 备份 SQL Server 时提示 “VSS Writer 服务未响应”
- 原因:VSS 服务依赖的 Windows 模块损坏,或 SQL Server 实例异常;
- 解决:1. 重启 “SQL Server VSS Writer” 和 “Volume Shadow Copy” 服务;2. 执行vssadmin list writers,若显示 “SQL Server Writer” 状态为 “稳定”,重新运行备份;若状态异常,修复 SQL Server(控制面板→卸载程序→“更改”→“修复”)。
2. MySQL 备份后恢复的数据库无法启动
- 原因:预备份脚本未正确执行FLUSH TABLES WITH READ LOCK,导致 InnoDB 表空间不一致;
- 解决:1. 重新配置预脚本,在脚本中添加sleep 10(等待锁表生效);2. 恢复时使用 MySQL 的innodb_force_recovery=1参数(临时启动,导出数据后重建数据库)。
3. 备份 PostgreSQL 时提示 “pg_start_backup () 权限不足”
- 原因:备份账户未授予 “SUPERUSER” 权限;
- 解决:登录 PostgreSQL 执行ALTER USER backup_user WITH SUPERUSER;,重启 PostgreSQL 服务后重试。
4. 备份速度慢(低于 50MB/s)
- 原因:数据库服务器与 NAS 网络带宽不足,或数据库正执行大量写入(如批量插入数据);
- 解决:1. 升级网络至 10Gbps(NAS 与服务器直连);2. 调整备份时间,避开写入高峰期(如 SQL Server 的 ETL 任务时段)。
5. ABB 提示 “备份验证失败”
- 原因:备份过程中网络丢包,或 NAS 存储块损坏;
- 解决:1. 检查 NAS “存储管理器”→“硬盘”,确认无 “坏道”;2. 重新执行全量备份,勾选 “启用校验和”(增加数据完整性检测)。
6. Oracle 数据库备份时 RMAN 报错 “无法连接目标数据库”
- 原因:ABB 中配置的 Oracle 账户无 SYSDBA 权限,或 TNS 监听未启动;
- 解决:1. 执行grant sysdba to backup_user;授予权限;2. 启动 TNS 监听:lsnrctl start,在 ABB 中重新配置数据库连接字符串(如(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl))))。
总结:运行数据库服务的服务器备份的核心逻辑
用 Synology ABB 备份运行中的数据库服务器,核心逻辑是 “先保障一致性,再执行备份”—— 通过 VSS、预脚本等技术冻结数据写入(或创建快照),避免备份时的读写冲突;再结合合理的备份计划与恢复测试,确保备份数据可用。
只要你严格按照本文的 “支持清单→前提配置→分步骤实操→注意事项” 操作,无论是 SQL Server、MySQL 还是 PostgreSQL,都能在不中断业务的情况下完成安全备份。若遇到复杂问题(如 Oracle RAC 集群备份),可参考 Synology 官方知识库原文,或联系技术支持提供数据库版本与 ABB 日志,获取针对性方案。