4
6
9
1
专栏/.../

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

 Fly-bird  发表于  2023-09-25

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

注意:我们使用实时同步数据到从库的方式保障高可用(使用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.139
tidb_servers:
  - host: 192.168.195.139
tikv_servers:
- host: 192.168.195.139
tiflash_servers:
  - host: 192.168.195.139
monitoring_servers:
  - host: 192.168.195.139
grafana_servers:
  - host: 192.168.195.139
alertmanager_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、部署完成,查看集群信息如下,数据库里无业务数据

1695624366899.jpg

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

1、查看原集群信息如下 1695622829208.jpg

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: 7
drainer_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

image.png

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

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

image.png

5、开启TIDB的binglog配置

vi /tidb-deploy/tidb-4000/conf/tidb.toml  
加入下面内容
[binlog]
enable = true
ignore-error = true

然后重启tidb
tiup cluster restart qzn -N 192.168.195.140:4000

在mysql客户端中查看是否开启(显示为ON)
show variables like "log_bin";

image.png

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

1695623346194.jpg

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

mkdir -p /data/qzn/qzn_test   
chmod -R 777 /data/qzn/qzn_test
wget https://download.pingcap.org/tidb-community-toolkit-v6.1.1-linux-amd64.tar.gz
tar -zxvf tidb-community-toolkit-v6.1.1-linux-amd64.tar.gz -C /data/
cd /data/tidb-community-toolkit-v6.1.1-linux-amd64
tar -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

image.png

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

139服务器上部署br工具

#140上发送文件到139
scp 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

image.png

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

image.png

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

image.png

image.png

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

4
6
9
1

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论