数据备份
1. 功能介绍
TcaplusDB作为一款分布式数据库产品,除了提供数据读写能力外,数据的安全可靠性同样需要体现,本文旨在介绍TcaplusDB的数据备份能力。
2. 使用场景
TcaplusDB提供以下几种备份能力
备份种类 | 介绍 | 触发条件 |
---|---|---|
定时数据库全量备份(引擎) | 每天的某个固定时间,对集群内的备DB做全量引擎数据备份 | 在Tcapcenter机器启用了备份脚本的定时任务 |
定时数据库增量备份(流水) | 定时对集群内的备DB做流水数据备份 | 在Tcapcenter机器启用了备份脚本的定时任务,默认5分钟做一次增量备份 |
用户自助备份 | 用户可随时对指定存储节点、指定表做引擎数据备份 | 在(业务管理--业务数据管理--业务数据备份)中提交备份单据 |
3. 使用指导
3.1 使用Tcaplus集群化安装脚本
如果准备机器有gluster存储机器,环境安装时会自动打开备份功能, 可支持事务化的数据恢复场景
如果没准备gluster存储机器, 环境安装时会自动打开备份功能, 但因为没有远程备份存储, 数据仅备份在备DB本地, 不支持事务化的数据恢复场景(可手工恢复)
3.2 其他情况
如果环境没打开备份功能(在tcapcenter机器上, 账号tcaplus的crontab -l | grep mysql_tcaplus_backup_script, grep没有结果)
手动打开备份功能
2.1. 用tcaplus账号,ssh到tcapcenter机器上
ssh tcaplus@TCAPCENTER_IP -p36000
2.2. 进到备份脚本目录
cd /data/tcaplus/tcaplus_service/bin/tcaplus_backup_script/backup_script_for_overseas/mysql_tcaplus_backup_script
2.3. 复制配置文件模板
cp config_info.txt.template config_info.txt
2.4. 计算当前账号tcaplus的密码密文,假设密码为:tcaplus123
/data/tcaplus/tcaplus_service/bin/encrypt_tool/encrypt_tool tcaplus123
qhcFSG6f2CqHdcc1T7LGMA==
2.5. 修改配置文件config_info, 将密码密文填入
vim config_info.txt
# 将2.4计算得到的密文填入: svr_password
svr_password="qhcFSG6f2CqHdcc1T7LGMA=="
2.6. 若当前环境没有准备gluster、cos、s3这三类支持的备份远程存储, 则直接跳到 2.10
2.7. gluster备份模式
2.7.1. 默认已安装好gluster存储集群,并提供了Gluster接入节点:10.125.32.21,存储卷名: glusterfs_storage
2.7.2. 修改tcapcenter配置文件
vim /data/tcaplus/tcaplus_service/cfg/tcapcenter/tcapcenter_cfg.xml
# 在<BackupApi>中加入几行配置 (GlusterVolumeName和GlusterNodeIP根据实际情况填写)
BackupType="1"
GlusterVolumeName="glusterfs_storage"
GlusterNodeIP="10.125.32.21"
BackupMapPath="/data/gluster_dbbak"
2.7.3. 重启tcapcenter
cd /data/tcaplus/tcaplus_service/bin/; ./tcapcenter_stop.sh; sleep 10; ./tcapcenter_start.sh
2.7.4. 再次编辑备份配置文件
vim config_info.txt
# 将need_gluster_backup改为ON
need_gluster_backup="ON"
# 将gluster_backup_path填入2.7.2的BackupMapPath
BackupMapPath="/data/gluster_dbbak"
2.7.5. 跳到2.10.步,至此gluster备份配置完成
2.8. cos备份模式
2.8.1. 修改tcapcenter配置文件
vim /data/tcaplus/tcaplus_service/cfg/tcapcenter/tcapcenter_cfg.xml
# 在<BackupApi>中加入几行配置 (根据实际情况填写)
# cos_ENDPOINT是域名信息, 包含三部分,后两部分不要改,第一部分是cos的区域域名, 从cos的管理控制台可以查询到
# cos_ACCESS_KEY_ID是腾讯云API KEYID
# cos_ACCESS_KEY_SECRET是腾讯云API KEYSECRET
# cos_BUCKET_NAME是COS桶名
BackupType="3"
cos_ENDPOINT="cos.ap-singapore.myqcloud.com 123456 123456"
cos_ACCESS_KEY_ID="AAAAAAAABBBBBBBBB "
cos_ACCESS_KEY_SECRET="BBBBBBBBBAAAAAAAA "
cos_BUCKET_NAME=" /tcaplusdb-sg-999999999/ "
2.8.2. 重启tcapcenter
cd /data/tcaplus/tcaplus_service/bin/; ./tcapcenter_stop.sh; sleep 10; ./tcapcenter_start.sh
2.8.3. 再次编辑备份配置文件
vim config_info.txt
# 将need_cos_backup改为ON
need_cos_backup="ON"
2.8.4. 修改一个文件(L5GetRoute1)
su - tcaplus
cd /data/tcaplus/l5_agent/bin
mv L5GetRoute1 L5GetRoute1.old
2.8.5. vim L5GetRoute1 (以下是文件内容,直接粘贴进去)
#! /bin/bash
cos_url=$(grep cos_ENDPOINT /data/tcaplus/tcaplus_service/cfg/tcapcenter/tcapcenter_cfg.xml | awk -F'=' '{print $2}' | sed -r 's#"##g' | awk '{print $1}')
if [ x"$cos_url" = "x" ]; then
echo "A B :169.254.0.47" # default ip: by https://cloud.tencent.com/document/product/436/31315#.E5.86.85.E7.BD.91.E4.B8.8E.E5.A4.96.E7.BD.91.E8.AE.BF.E9.97.AE
exit 0
fi
real_cos_ip=$(nslookup $cos_url | grep 'Address:' | tail -1 | awk '{print $2}')
echo "A B :$real_cos_ip"
exit 0
2.8.6. 加上可执行权限
chmod +x L5GetRoute1
2.8.7. 跳到2.10.步,至此cos备份配置完成
2.9. s3备份模式
2.9.1. 修改tcapcenter配置文件
vim /data/tcaplus/tcaplus_service/cfg/tcapcenter/tcapcenter_cfg.xml
# 在<BackupApi>中加入几行配置 (根据实际情况填写)
# AwsS3StorageBucketUrl是S3的桶名
# AwsAccessKeyId是AWS API KEYID
# AwsSecretAccessKey是AWS API Secret ACCESSKEY
BackupType="4"
AwsS3StorageBucketUrl="s3://apexdev-tcapbackup"
AwsAccessKeyId="EEEEEEEMAAAAAAAA"
AwsSecretAccessKey="GGGGGG2BBBBBBBBBBBBB"
2.9.2. 重启tcapcenter
cd /data/tcaplus/tcaplus_service/bin/; ./tcapcenter_stop.sh; sleep 10; ./tcapcenter_start.sh
2.9.3. 再次编辑备份配置文件
vim config_info.txt
# 将need_s3_backup改为ON
need_s3_backup="ON"
# 将s3_backup_bucket填入S3存储桶名
s3_backup_bucket="s3://apexdev-tcapbackup"
2.9.4. 对于Tcapcenter和已上架的tcapsvr机器,需要手动创建S3鉴权文件, 将accesskey和secret信息写入
mkdir -p ~/.aws/, vim credentials
[default]
aws_access_key_id = EEEEEEEMAAAAAAAA
aws_secret_access_key = GGGGGG2BBBBBBBBBBBBB
2.9.5. 至此s3备份配置完成
2.10. 在crontab中配置备份定时任务 (crontab -e)
# 编辑状态下加入一行
# 5,20,35,50 * * * * /bin/bash /data/tcaplus/tcaplus_service/bin/tcaplus_backup_script/backup_script_for_overseas/mysql_tcaplus_backup_script/main.sh > /tmp/mysql_tcaplus_backup_script.tmplog
4. 注意事项
4.1 备份数据被数据恢复场景使用
备份配置(/data/tcaplus/tcaplus_service/bin/tcaplus_backup_script/backup_script_for_overseas/mysql_tcaplus_backup_script/config_info.txt)中开启了海外备份模式(backup_mode="1"), 且使用了gluster、cos、s3的任一种远程备份存储的,才能在数据恢复场景中使用备份的数据。 注:国内IDC环境备份模式,其backup_mode="0"。
4.2 如何查看每天的备份文件详情
入口:运维平台--更多--备份管理, 这里提供多种备份查询方式:
常规冷备(TCAPLUS_FULL), 用于查询定时全量备份的详情信息
binlog流水备份(TCAPLUS_INCR), 用于查询定时增量备份的详情信息
自助备份(OSDATA),用于查询用户自助备份的详情信息
集群备份状态汇总, 查看集群中哪些备DB的备份失败
备份过期策略查看与编辑,对备份文件保存在Gluster、Cos、S3远程存储的过期淘汰时间设置(可对集群、业务、游戏区、表做个性化配置)