背景:
数据库控制台备份只保留了7天,审计要求保留较久的备份,通过COS函数计算把备份的文件投递到COS进行深度归档,来满足审计要求。
底层逻辑:
- 数据备份函数是把腾讯云数据库的备份文件复制到COS进行持久保存.
- 若未开启数据库备份,则无法执行备份函数。
- 该操作只是复制备份,对数据库实例不会造成影响。
Mysql备份恢复
- 触发器周期:MySQL 数据备份函数通过定时触发器来触发备份转存操作,触发周期支持每天、每周及自定义周期。
- 数据库实例:当前存储桶所在地域的 MySQL 数据库实例列表。
- 投递路径:备份文件的投递路径前缀,不填写则默认保存在存储桶根路径。
- 回溯天数:输入要回溯的时间跨度,回溯天数必须为 0 ~ 3 的整数。例如回溯天数为3,则会拉取您数据库实例近 3 天的备份文件列表,将备份文件下载并上传到 COS。
备份完成后,对备份的数据库文件进行归档存储。(因MYSQL备份函数不支持选择存储类型,通过生命周期实现)
| 规则名称 | 应用范围 | 规则内容 |
|---|---|---|
| mysql_archive_backup | 前缀:pro_mysql_archive_backup/ | 当前版本文件沉降至深度归档存储:1 天 |
恢复已备份的数据库文件
取回备份文件
对归档的数据库备份文件进行快速取回
取回文件后,即可通过下载链接进行下载该备份
下载并安装 XtraBackup 工具。
请确保您下载的工具的版本与您数据库的版本一致,例如您的实例数据库版本为 MySQL 8.0.30,则请对应下载8.0.30版本的 Percona XtraBackup 工具。
查看到部分生产开启了数据库备份加密,部分未开启,UAT是未开启备份加密,所以此处恢复还原是没有加密操作的。
查看数据库版本
根据对应的版本信息,查询对应的Mysql版本
https://cloud.tencent.com/document/product/236/42539?from=console_document_search
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.27/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.27-1.el7.x86_64.rpm |
#查看支持的版本
[root@test-nmk ~]# xtrabackup -v |
下载备份文件
通过内网下载cos的备份文件
wget -c 'https://dba-test.cos.ap-guangzhou.myqcloud.com/cdb-123/asda' -O cdb-123_backup_20250807000826.xb |
解包备份文件
使用 xbstream 命令将数据备份文件解包到目标目录。
xbstream -x -C /data/mysql < /data/backup/cdb-123_backup_20250807000826.xb |
解压备份文件
下载 qpress 工具
wget -d --user-agent="Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0" https://docs-tencentdb-1256569818.cos.ap-guangzhou.myqcloud.com/qpress-11-linux-x64.tar |
通过命令解压出qpress 二进制文件
tar -xf qpress-11-linux-x64.tar -C /usr/local/bin |
Prepare 备份文件
备份解压出来之后,执行如下命令进行 apply log 操作。
[root@test-nmk mysql]# xtrabackup --prepare --target-dir=/data/mysql |
修改配置文件
执行如下命令打开 backup-my.cnf 文件。
[root@test-nmk mysql]# vi /data/mysql/backup-my.cnf
说明:
由于存在的版本问题,请将解压文件 backup-my.cnf 中如下参数进行注释。
innodb_checksum_algorithm |
修改文件属性
修改文件属性,并检查文件所属为 mysql 用户。
[root@test-nmk mysql]# chown -R mysql:mysql /data/mysql
启动 mysqld 进程并登录验证
启动 mysqld 进程。
[root@test-nmk mysql]# mysqld --defaults-file=/data/mysql/backup-my.cnf --user=mysql --datadir=/data/mysql & |
使用原数据库的账号进行登陆本地mysql
[root@test-nmk ~]# mysql -h 10.30.24.180 -ugac_travel_test_new -p |
对比原数据库的库数量,表数量,库大小,表大小,均是正常。
恢复完成。
PostgresSQL备份恢复
通过PostgreSQL备份函数实现数据库备份
备份函数触发后,文件夹下会生成备份文件,备份的文件会自动创建以实例ID为开头的文件夹进行区分,BaseBackup为数据备份文件 logbackup为日志备份文件
可通过 https://cloud.tencent.com/document/product/409/11642 进行恢复
备份完成后,配置生命周期对备份的数据库文件进行归档存储。
| 规则名称 | 应用范围 | 规则内容 |
|---|---|---|
| postgresql_archive_backup | 前缀:pro_postgresql_archive_backup/ | 当前版本文件沉降至深度归档存储:1 天 |
下载备份文件
通过内网下载cos的备份文件
wget -c 'https://dba-test.cos.ap-guangzhou.myqcloud.com/postgres-123/adb' -O automatic-20251105144446.tar.zst |
创建数据的恢复目录,并设置权限
mkdir pgsql |
安装 zstd 解压工具
yum install epel-release -y |
解压备份的文件
tar -I zstd -xvf automatic-20251105144446.tar.zst |
删除多余的临时文件
执行如下命令,删除多余的临时文件。
rm -rf backup_label |
修改配置文件
使用vi编辑器修改配置文件 postgresql.conf 。
在文件中找到以下内容,在每一行的行首添加 #,将其变为注释。 如有重复出现,则全部注释掉。
pg_stat_statements.track |
说明:
特别地,必须注释 include = 'standby.conf' 这一行。
将 log_destination = ‘csvlog,auditlog’ 修改为 log_destination = ‘csvlog’。
log_destination = ‘csvlog’ |
找到 port ,将其值修改为5433,以免与主实例端口冲突。
port = '5433' |
在文件末尾文件末尾增加如下内容,表示不再使用强同步模式。
synchronous_commit = local |
使用 root 用户更改文件夹权限
chmod 0700 pgsql |
使用 postgres 用户启动数据库
[root@test-nmk pgsql]# su postgres |
验证数据库是否运行。
bash-4.2$ /usr/pgsql-12/bin/pg_ctl status -D /data/pgsql |
登录数据库
bash-4.2$ psql -h localhost -p 5433 -Utest -dmap |
通过查询语句查看数据正常,恢复完成
map=> \l |
Mongdb备份恢复
通过MongoDB备份函数实现数据库备份
备份完成后,配置生命周期对备份的数据库文件进行归档存储。
| 规则名称 | 应用范围 | 规则内容 |
|---|---|---|
| mongodb_archive_backup | 前缀:pro_mongodb_archive_backup/ | 当前版本文件沉降至深度归档存储:1 天 |
安装Mongodb
配置系统yum源,创建.repo文件
vi /etc/yum.repos.d/mongodb-org-4.0.repo |
添加以下配置信息:
[mongodb-org-4.0] |
安装MongoDB
yum install -y mongodb-org |
启动MongoDB
systemctl start mongod.service |
下载备份文件
wget -c "https://dba-test.cos.ap-guangzhou.myqcloud.com/cmgo-123/adb" -O f162f9025712e1d3c07eb0d99d399105-0.tar |
解压备份文件
tar -xf f162f9025712e1d3c07eb0d99d399105-0.tar |
下载恢复工具
wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.13.0.tgz |
恢复数据库
/data/mongodb-database-tools-rhel70-x86_64-100.13.0/bin/mongorestore --gzip --drop -h127.0.0.1:27017 --dir /data/mongodb/cmgo-123\ 01\:00+f162f9025712e1d3c07eb0d99d399105-0/ |
恢复后看到日志打印
2025-11-13T16:04:31.114+0800 35274076 document(s) restored successfully. 0 document(s) failed to restore. |
查看恢复的数据
\show dbs |





