NetBackup教程FG038-NetBackup数据库备份(Oracle/MySQL)实战案例
本文档风哥主要介绍NetBackup数据库备份的实战案例,包括Oracle和MySQL数据库的备份方法、配置和恢复操作等内容,风哥教程参考NetBackup官方文档NetBackup Database Backup Guide,适合备份管理员和数据库工程师在学习和测试中使用。学习交流加群风哥微信: itpux-com
Part01-基础概念与理论知识
1.1 数据库备份概述
数据库备份是保护数据库数据安全的重要手段,通过定期备份数据库,可以在数据丢失或损坏时快速恢复。数据库备份的主要类型包括:
- 全量备份:备份数据库的所有数据
- 增量备份:备份自上次备份以来变化的数据
- 差异备份:备份自上次全量备份以来变化的数据
- 热备份:在数据库运行时进行备份
- 冷备份:在数据库关闭时进行备份
1.2 Oracle数据库备份概念
Oracle数据库备份的主要概念包括:
1.2.1 Oracle备份类型
- RMAN备份:使用Oracle Recovery Manager进行备份
- 用户管理备份:使用操作系统命令进行备份
- 数据泵导出:使用expdp命令导出数据
1.2.2 Oracle备份模式
- 归档模式:数据库运行在归档模式,支持热备份
- 非归档模式:数据库运行在非归档模式,仅支持冷备份
1.3 MySQL数据库备份概念
MySQL数据库备份的主要概念包括:
1.3.1 MySQL备份类型
- 物理备份:备份数据库文件
- 逻辑备份:备份SQL语句
- 增量备份:备份自上次备份以来变化的数据
1.3.2 MySQL备份工具
- mysqldump:逻辑备份工具
- mysqlpump:并行逻辑备份工具
- xtrabackup:物理备份工具
Part02-生产环境规划与建议
2.1 数据库备份规划
数据库备份规划应考虑以下因素:
– [ ] 备份策略:确定备份类型和频率
– [ ] 备份窗口:确定备份的时间段
– [ ] 存储位置:确定备份数据的存储位置
– [ ] 备份保留:确定备份数据的保留期限
– [ ] 恢复测试:定期测试备份的可恢复性
– [ ] 监控告警:配置备份监控和告警机制
– [ ] 灾难恢复:制定灾难恢复计划
2.2 Oracle数据库备份要求
Oracle数据库备份的系统要求:
– NetBackup版本:10.0或更高
– Oracle版本:11g, 12c, 19c, 21c
– 操作系统:
– Linux (RHEL 7.x/8.x/9.x, Oracle Linux 7.x/8.x/9.x)
– Windows Server 2016/2019/2022
– 权限要求:
– Oracle用户:具有SYSDBA权限
– NetBackup用户:具有备份权限
– 网络要求:
– 网络带宽:至少1Gbps
– 网络延迟:低于100ms
2.3 MySQL数据库备份要求
MySQL数据库备份的系统要求:
– NetBackup版本:10.0或更高
– MySQL版本:5.7, 8.0
– 操作系统:
– Linux (RHEL 7.x/8.x/9.x, Oracle Linux 7.x/8.x/9.x)
– Windows Server 2016/2019/2022
– 权限要求:
– MySQL用户:具有RELOAD, LOCK TABLES, SELECT权限
– NetBackup用户:具有备份权限
– 网络要求:
– 网络带宽:至少1Gbps
– 网络延迟:低于100ms
Part03-生产环境项目实施方案
3.1 Oracle数据库备份实施
3.1.1 配置NetBackup for Oracle
$ sudo /NetBackup/app/netbackup/bin/install_oracle_client
# 2. 配置Oracle备份策略
$ sudo /NetBackup/app/netbackup/bin/admincmd/bp政策 -add OraclePolicy -stype Oracle -residence Default-Unit
# 3. 配置Oracle备份计划
$ sudo /NetBackup/app/netbackup/bin/admincmd/bpplsched OraclePolicy -add -schedule “Full Backup” -stype Full -frequency 7 -starttime 20:00
$ sudo /NetBackup/app/netbackup/bin/admincmd/bpplsched OraclePolicy -add -schedule “Incremental Backup” -stype Incremental -frequency 1 -starttime 22:00
# 4. 配置Oracle备份选择
$ sudo /NetBackup/app/netbackup/bin/admincmd/bpplinclude OraclePolicy -add “ORACLE_SID=fgedudb”
# 5. 验证Oracle备份策略
$ sudo /NetBackup/app/netbackup/bin/admincmd/bpplinfo OraclePolicy -U
3.1.2 配置Oracle RMAN
$ sqlplus / as sysdba
# 2. 配置RMAN
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO ‘SBT_TAPE’;
RMAN> CONFIGURE CHANNEL DEVICE TYPE ‘SBT_TAPE’ PARMS ‘SBT_LIBRARY=/NetBackup/app/netbackup/bin/libobk.so64, ENV=(NB_ORA_SERV=master-server.fgedu.net.cn,NB_ORA_CLIENT=client1.fgedu.net.cn)’;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE ‘SBT_TAPE’ TO ‘%F’;
# 3. 验证RMAN配置
RMAN> SHOW ALL;
# 4. 退出RMAN
RMAN> EXIT;
3.2 MySQL数据库备份实施
3.2.1 配置NetBackup for MySQL
$ sudo /NetBackup/app/netbackup/bin/install_mysql_client
# 2. 配置MySQL备份策略
$ sudo /NetBackup/app/netbackup/bin/admincmd/bp政策 -add MySQLPolicy -stype MySQL -residence Default-Unit
# 3. 配置MySQL备份计划
$ sudo /NetBackup/app/netbackup/bin/admincmd/bpplsched MySQLPolicy -add -schedule “Full Backup” -stype Full -frequency 7 -starttime 20:00
$ sudo /NetBackup/app/netbackup/bin/admincmd/bpplsched MySQLPolicy -add -schedule “Incremental Backup” -stype Incremental -frequency 1 -starttime 22:00
# 4. 配置MySQL备份选择
$ sudo /NetBackup/app/netbackup/bin/admincmd/bpplinclude MySQLPolicy -add “MYSQL_DATABASE=fgedudb”
# 5. 验证MySQL备份策略
$ sudo /NetBackup/app/netbackup/bin/admincmd/bpplinfo MySQLPolicy -U
3.2.2 配置MySQL备份参数
$ sudo vi /etc/my.cnf
# 添加以下内容
[mysqld]
log-bin=mysql-bin
server-id=1
# 2. 重启MySQL服务
$ sudo systemctl restart mysqld
# 3. 创建备份用户
$ mysql -u root -p
CREATE USER ‘backup’@’localhost’ IDENTIFIED BY ‘backup123’;
GRANT RELOAD, LOCK TABLES, SELECT, SHOW DATABASES, SHOW VIEW, REPLICATION CLIENT ON *.* TO ‘backup’@’localhost’;
FLUSH PRIVILEGES;
EXIT;
3.3 数据库备份自动化
3.3.1 创建备份脚本
# database_backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# Oracle数据库备份
/NetBackup/app/netbackup/bin/bpbackup -w -p OraclePolicy -s “Full Backup” “ORACLE_SID=fgedudb”
# MySQL数据库备份
/NetBackup/app/netbackup/bin/bpbackup -w -p MySQLPolicy -s “Full Backup” “MYSQL_DATABASE=fgedudb”
# 记录备份日志
echo “$(date) – Database backup completed” >> /NetBackup/app/netbackup/logs/database_backup.log
3.3.2 配置定时任务
$ sudo crontab -e
# 2. 添加定时任务
# 每天20:00执行全量备份
0 20 * * * /NetBackup/app/netbackup/scripts/database_backup.sh
# 每天22:00执行增量备份
0 22 * * * /NetBackup/app/netbackup/scripts/database_incremental_backup.sh
Part04-生产案例与实战讲解
4.1 Oracle数据库备份实战案例
4.1.1 案例1:Oracle全量备份
$ /NetBackup/app/netbackup/bin/bpbackup -w -p OraclePolicy -s “Full Backup” “ORACLE_SID=fgedudb”
Backup started, job id = 12345
Waiting for job to complete…
Job 12345 completed successfully
# 2. 验证备份状态
$ /NetBackup/app/netbackup/bin/bpjobinfo -jobid 12345 -detailed
Job ID: 12345
Status: 0 (successful)
Policy: OraclePolicy
Schedule: Full Backup
Client: client1.fgedu.net.cn
Backup ID: client1.fgedu.net.cn_1620000000
Files: 1
Bytes: 10737418240 (10GB)
Start time: 2021-05-03 20:00:00
End time: 2021-05-03 20:30:00
# 3. 查看RMAN备份信息
$ rman target /
RMAN> LIST BACKUP;
List of Backup Sets
==================
BS Key Type LV Size Device Type Elapsed Time Completion Time
——- —- — ———- ———– ———— —————
1 Full 10.00G SBT_TAPE 00:30:00 2021-05-03:20:30:00
BP Key: 1, Status: AVAILABLE, Compressed: NO, Tag: TAG20210503T200000
Piece Name: NetBackup_12345
List of Datafiles in backup set 1
File LV Type Ckp SCN Ckp Time Name
—- — —- ———- ——————- —-
1 Full 123456789 2021-05-03:20:00:00 /NetBackup/fgdata/fgedudb/system01.dbf
2 Full 123456789 2021-05-03:20:00:00 /NetBackup/fgdata/fgedudb/sysaux01.dbf
3 Full 123456789 2021-05-03:20:00:00 /NetBackup/fgdata/fgedudb/undotbs01.dbf
4 Full 123456789 2021-05-03:20:00:00 /NetBackup/fgdata/fgedudb/users01.dbf
5 Full 123456789 2021-05-03:20:00:00 /NetBackup/fgdata/fgedudb/fgedutbs01.dbf
# 4. 退出RMAN
RMAN> EXIT;
4.1.2 案例2:Oracle增量备份
$ /NetBackup/app/netbackup/bin/bpbackup -w -p OraclePolicy -s “Incremental Backup” “ORACLE_SID=fgedudb”
Backup started, job id = 12346
Waiting for job to complete…
Job 12346 completed successfully
# 2. 验证备份状态
$ /NetBackup/app/netbackup/bin/bpjobinfo -jobid 12346 -detailed
Job ID: 12346
Status: 0 (successful)
Policy: OraclePolicy
Schedule: Incremental Backup
Client: client1.fgedu.net.cn
Backup ID: client1.fgedu.net.cn_1620086400
Files: 1
Bytes: 104857600 (100MB)
Start time: 2021-05-04 22:00:00
End time: 2021-05-04 22:05:00
# 3. 查看RMAN备份信息
$ rman target /
RMAN> LIST BACKUP;
List of Backup Sets
==================
BS Key Type LV Size Device Type Elapsed Time Completion Time
——- —- — ———- ———– ———— —————
1 Full 10.00G SBT_TAPE 00:30:00 2021-05-03:20:30:00
BP Key: 1, Status: AVAILABLE, Compressed: NO, Tag: TAG20210503T200000
Piece Name: NetBackup_12345
List of Datafiles in backup set 1
File LV Type Ckp SCN Ckp Time Name
—- — —- ———- ——————- —-
1 Full 123456789 2021-05-03:20:00:00 /NetBackup/fgdata/fgedudb/system01.dbf
2 Full 123456789 2021-05-03:20:00:00 /NetBackup/fgdata/fgedudb/sysaux01.dbf
3 Full 123456789 2021-05-03:20:00:00 /NetBackup/fgdata/fgedudb/undotbs01.dbf
4 Full 123456789 2021-05-03:20:00:00 /NetBackup/fgdata/fgedudb/users01.dbf
5 Full 123456789 2021-05-03:20:00:00 /NetBackup/fgdata/fgedudb/fgedutbs01.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
——- —- — ———- ———– ———— —————
2 Incr 0 100.00M SBT_TAPE 00:05:00 2021-05-04:22:05:00
BP Key: 2, Status: AVAILABLE, Compressed: NO, Tag: TAG20210504T220000
Piece Name: NetBackup_12346
List of Datafiles in backup set 2
File LV Type Ckp SCN Ckp Time Name
—- — —- ———- ——————- —-
5 Incr 123467890 2021-05-04:22:00:00 /NetBackup/fgdata/fgedudb/fgedutbs01.dbf
# 4. 退出RMAN
RMAN> EXIT;
4.2 MySQL数据库备份实战案例
4.2.1 案例1:MySQL全量备份
$ /NetBackup/app/netbackup/bin/bpbackup -w -p MySQLPolicy -s “Full Backup” “MYSQL_DATABASE=fgedudb”
Backup started, job id = 12347
Waiting for job to complete…
Job 12347 completed successfully
# 2. 验证备份状态
$ /NetBackup/app/netbackup/bin/bpjobinfo -jobid 12347 -detailed
Job ID: 12347
Status: 0 (successful)
Policy: MySQLPolicy
Schedule: Full Backup
Client: client1.fgedu.net.cn
Backup ID: client1.fgedu.net.cn_1620000000
Files: 1
Bytes: 5368709120 (5GB)
Start time: 2021-05-03 20:00:00
End time: 2021-05-03 20:15:00
# 3. 查看MySQL备份文件
$ ls -l /NetBackup/app/netbackup/db/images/
-rw-r–r– 1 root root 5368709120 May 3 20:15 client1.fgedu.net.cn_1620000000.fgedudb.full
4.2.2 案例2:MySQL增量备份
$ /NetBackup/app/netbackup/bin/bpbackup -w -p MySQLPolicy -s “Incremental Backup” “MYSQL_DATABASE=fgedudb”
Backup started, job id = 12348
Waiting for job to complete…
Job 12348 completed successfully
# 2. 验证备份状态
$ /NetBackup/app/netbackup/bin/bpjobinfo -jobid 12348 -detailed
Job ID: 12348
Status: 0 (successful)
Policy: MySQLPolicy
Schedule: Incremental Backup
Client: client1.fgedu.net.cn
Backup ID: client1.fgedu.net.cn_1620086400
Files: 1
Bytes: 52428800 (50MB)
Start time: 2021-05-04 22:00:00
End time: 2021-05-04 22:02:00
# 3. 查看MySQL备份文件
$ ls -l /NetBackup/app/netbackup/db/images/
-rw-r–r– 1 root root 5368709120 May 3 20:15 client1.fgedu.net.cn_1620000000.fgedudb.full
-rw-r–r– 1 root root 52428800 May 4 22:02 client1.fgedu.net.cn_1620086400.fgedudb.incr
4.3 数据库恢复实战案例
4.3.1 案例1:Oracle数据库恢复
$ /NetBackup/app/netbackup/bin/bprestore -w -p OraclePolicy -s “Full Backup” “ORACLE_SID=fgedudb”
Restore started, job id = 12349
Waiting for job to complete…
Job 12349 completed successfully
# 2. 验证恢复状态
$ /NetBackup/app/netbackup/bin/bpjobinfo -jobid 12349 -detailed
Job ID: 12349
Status: 0 (successful)
Policy: OraclePolicy
Schedule: Full Backup
Client: client1.fgedu.net.cn
Backup ID: client1.fgedu.net.cn_1620000000
Files: 1
Bytes: 10737418240 (10GB)
Start time: 2021-05-05 10:00:00
End time: 2021-05-05 10:30:00
# 3. 使用RMAN恢复数据库
$ rman target /
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
# 4. 验证数据库状态
RMAN> SELECT status FROM v$instance;
STATUS
————
OPEN
# 5. 退出RMAN
RMAN> EXIT;
4.3.2 案例2:MySQL数据库恢复
$ /NetBackup/app/netbackup/bin/bprestore -w -p MySQLPolicy -s “Full Backup” “MYSQL_DATABASE=fgedudb”
Restore started, job id = 12350
Waiting for job to complete…
Job 12350 completed successfully
# 2. 验证恢复状态
$ /NetBackup/app/netbackup/bin/bpjobinfo -jobid 12350 -detailed
Job ID: 12350
Status: 0 (successful)
Policy: MySQLPolicy
Schedule: Full Backup
Client: client1.fgedu.net.cn
Backup ID: client1.fgedu.net.cn_1620000000
Files: 1
Bytes: 5368709120 (5GB)
Start time: 2021-05-05 10:00:00
End time: 2021-05-05 10:15:00
# 3. 停止MySQL服务
$ sudo systemctl stop mysqld
# 4. 恢复MySQL数据库
$ sudo cp /NetBackup/app/netbackup/db/images/client1.fgedu.net.cn_1620000000.fgedudb.full /var/lib/mysql/
# 5. 启动MySQL服务
$ sudo systemctl start mysqld
# 6. 验证数据库状态
$ mysql -u root -p -e “SHOW DATABASES;”
+——————–+
| Database |
+——————–+
| information_schema |
| fgedudb |
| mysql |
| performance_schema |
| sys |
+——————–+
Part05-风哥经验总结与分享
5.1 数据库备份最佳实践
数据库备份最佳实践:
- 合理规划:根据数据库的类型和大小选择合适的备份策略
- 定期备份:定期执行全量备份和增量备份
- 备份验证:定期验证备份的可恢复性
- 备份存储:将备份数据存储在安全的位置,如异地存储
- 监控告警:配置备份监控和告警机制,及时发现和解决问题
- 灾难恢复:制定灾难恢复计划,确保在数据丢失时能够快速恢复
- 文档记录:记录备份策略和操作步骤,便于故障排查
5.2 数据库备份优化
数据库备份优化建议:
5.2.1 性能优化
– 网络优化:提高网络带宽,减少网络延迟
– 存储优化:使用高性能存储,启用重复数据删除和压缩
– 备份策略:使用增量备份和差异备份,减少备份时间和存储占用
– 并行处理:使用多个并发备份作业,提高备份速度
– 备份窗口:选择业务低峰期执行备份,减少对业务的影响
5.2.2 可靠性优化
– 备份验证:定期验证备份的可恢复性
– 备份冗余:存储多个备份副本,确保数据安全
– 监控和告警:配置监控和告警机制,及时发现和解决问题
– 灾难恢复:制定灾难恢复计划,确保在数据丢失时能够快速恢复
– 安全:确保备份数据的安全,防止未授权访问
5.3 数据库备份未来趋势
数据库备份的未来趋势:
- 云备份:利用云存储进行备份,减少本地存储成本
- 自动化:自动化备份和恢复操作,减少人工干预
- 智能备份:使用AI技术自动优化备份策略
- 实时备份:实现数据库的实时备份,减少数据丢失风险
- 容器备份:支持容器化数据库的备份和恢复
- 边缘计算:支持边缘设备上的数据库备份
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
