数据备份

1. 功能介绍

TcaplusDB作为一款分布式数据库产品,除了提供数据读写能力外,数据的安全可靠性同样需要体现,本文旨在介绍TcaplusDB的数据备份能力。

2. 使用场景

TcaplusDB提供以下几种备份能力

备份种类 介绍 触发条件
定时数据库全量备份(引擎) 每天的某个固定时间,对集群内的备DB做全量引擎数据备份 在Tcapcenter机器启用了备份脚本的定时任务
定时数据库增量备份(流水) 定时对集群内的备DB做流水数据备份 在Tcapcenter机器启用了备份脚本的定时任务,默认5分钟做一次增量备份
用户自助备份 用户可随时对指定存储节点、指定表做引擎数据备份 在(业务管理--业务数据管理--业务数据备份)中提交备份单据

3. 使用指导

3.1 使用Tcaplus集群化安装脚本

  1. 如果准备机器有gluster存储机器,环境安装时会自动打开备份功能, 可支持事务化的数据恢复场景

  2. 如果没准备gluster存储机器, 环境安装时会自动打开备份功能, 但因为没有远程备份存储, 数据仅备份在备DB本地, 不支持事务化的数据恢复场景(可手工恢复)

3.2 其他情况

  1. 如果环境没打开备份功能(在tcapcenter机器上, 账号tcaplus的crontab -l | grep mysql_tcaplus_backup_script, grep没有结果)

  2. 手动打开备份功能

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 如何查看每天的备份文件详情

入口:运维平台--更多--备份管理, 这里提供多种备份查询方式:

  1. 常规冷备(TCAPLUS_FULL), 用于查询定时全量备份的详情信息

  2. binlog流水备份(TCAPLUS_INCR), 用于查询定时增量备份的详情信息

  3. 自助备份(OSDATA),用于查询用户自助备份的详情信息

  4. 集群备份状态汇总, 查看集群中哪些备DB的备份失败

  5. 备份过期策略查看与编辑,对备份文件保存在Gluster、Cos、S3远程存储的过期淘汰时间设置(可对集群、业务、游戏区、表做个性化配置)

results matching ""

    No results matching ""