写点什么

【运维实操】TIDB v6.1.1:全量备份、全量恢复和增量备份方法解析

  • 2023-09-29
    北京
  • 本文字数:2169 字

    阅读完需:约 7 分钟

作者: Fly-bird 原文来源:https://tidb.net/blog/0b55fa52


背景:由于公司要求必须保证数据库的数据安全,我们生产环境的数据库采取全量备份 + 增量备份 + 实时同步从库的方式保证数据库的高可用,本文介绍我公司生产环境的数据库备份方式。


注意:我们使用实时同步数据到从库的方式保障高可用(使用 pump+drainer),同时支持恢复任意时刻数据的操作以防止数据的误删除,会另文介绍。pump 生成 binlog 日志,drainer 同步到下游数据。


说明:本实操使用了 Tidb 的 BR 工具、pump+drainer 组件实现数据库的全量备份、恢复、增量备份(备份为文件进行保存),以下是实际操作:


一、安装 Tidb,此服务作为恢复数据的目标机器(此处为找回数据使用,为节省资源,安装 Tidb 单节点)安装步骤如下:


1、安装 tiup 工具


curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh |sh
复制代码


2、设置环境变量


source .bash_profile
复制代码


3、安装组件


tiup cluster
复制代码


4、编写集群配置文件 topology.yaml


global:  user: "tidb"  ssh_port: 22  deploy_dir: "/tidb-deploy"  data_dir: "/tidb-data"pd_servers:  - host: 192.168.195.139tidb_servers:  - host: 192.168.195.139tikv_servers:- host: 192.168.195.139tiflash_servers:  - host: 192.168.195.139monitoring_servers:  - host: 192.168.195.139grafana_servers:  - host: 192.168.195.139alertmanager_servers:  - host: 192.168.195.139
复制代码


5、检查风险



tiup cluster check ./topology.yaml --user root -p
复制代码


6、修复风险



tiup cluster check ./topology.yaml --apply --user root -p
复制代码


7、部署集群


tiup cluster deploy qzn v6.1.1 ./topology.yaml --user root -p
复制代码


8、初始化集群


tiup cluster start qzn --init      #记录下生成的密码The new password is: '*******'.
复制代码


9、部署完成,查看集群信息如下,数据库里无业务数据



二、TIDB 原始集群增加 pump 节点


1、查看原集群信息如下



2、编辑扩展文件,/data/pump-qzn.yaml 是需要扩展的配置文件,pump 生成二进制文件,drainer 保存 binlog 到 file,具体内容如下:


global:  user: "tsp-tidb"  ssh_port: 22  deploy_dir: "/tidb-deploy"  data_dir: "/tidb-data"pump_servers:  - host: 192.168.195.140    port: 8250    deploy_dir: "/tidb-deploy/pump-8250"    data_dir: "/tidb-data/pump-8250"    # The following configs are used to overwrite the `server_configs.pump` values.    config:      gc: 7drainer_servers:  - host: 192.168.195.140    port: 8249    deploy_dir: "/tidb-deploy/drainer-8249"    data_dir: "/tidb-data/drainer-8249"    # If drainer doesn't have a checkpoint, use initial commitTS as the initial checkpoint.    # Will get a latest timestamp from pd if commit_ts is set to -1 (the default value).    commit_ts: -1    # The following configs are used to overwrite the `server_configs.drainer` values.    config:      syncer.db-type: "file"
复制代码


3、扩展集群


tiup cluster scale-out 集群名 /data/pump-qzn.yaml --user root -p
复制代码



4、增加 pump 节点后,查看集群状态


tiup cluster display 集群名 ,看到各节点为 Up



5、开启 TIDB 的 binglog 配置


vi /tidb-deploy/tidb-4000/conf/tidb.toml  加入下面内容[binlog]enable = trueignore-error = true
然后重启tidbtiup cluster restart qzn -N 192.168.195.140:4000
在mysql客户端中查看是否开启(显示为ON)show variables like "log_bin";
复制代码



6、登录源数据库创建数据库 qzn_test 和表 info, 并向表中插入一行数据



三、Tidb 原始集群备份数据(这里仅展示备份单个数据库,请参考官方文档进行 br 备份和恢复)下载 BR 备份工具,备份文件夹需要 777 权限,下载页面https://cn.pingcap.com/product-community/


mkdir -p /data/qzn/qzn_test   chmod -R 777 /data/qzn/qzn_testwget https://download.pingcap.org/tidb-community-toolkit-v6.1.1-linux-amd64.tar.gztar -zxvf tidb-community-toolkit-v6.1.1-linux-amd64.tar.gz -C /data/cd /data/tidb-community-toolkit-v6.1.1-linux-amd64tar -zxvf br-v6.1.1-linux-amd64.tar.gz -C /data/
cd /data/./br backup db -s local:///data/qzn/qzn_test --pd "192.168.195.140:2379" --db qzn_test --ratelimit 120 --log-file backupqzn_test.log
复制代码



四、Tidb 目标库恢复数据 br 恢复备份 (把备份文件拷贝到目标数据库服务器)


139 服务器上部署 br 工具


#140上发送文件到139scp br root@192.168.195.139:/data/scp -r qzn_test/ root@192.168.195.139:/data/qzn/
#在139服务器上操作
./br restore db -s local:///data/qzn/qzn_test --db qzn_test --pd "192.168.195.139:2379" --log-file restore.log
复制代码



五、查看目标数据库(139),已经完成数据恢复



六、查看数据库服务器 140,binlog 文件已生成,此文件为增量备份文件,在实际备份过程中采取每日一次 Br 备份 + 增量备份的方式实现数据库的备份。




以上完成了数据库备份和恢复的基本操作,请注意,如果生产集群是多个 tikv 节点,在备份的时候需要通过挂在共享磁盘,让所有 tikv 的备份数据写入到共享磁盘中。


发布于: 刚刚阅读数: 3
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
【运维实操】TIDB v6.1.1:全量备份、全量恢复和增量备份方法解析_实践案例_TiDB 社区干货传送门_InfoQ写作社区