[转帖]TIDB - 使用BR工具进行数据热备份与恢复

tidb,使用,br,工具,进行,数据,备份,恢复 · 浏览次数 : 0

小编点评

**BR工具简介** BR工具是TiDB分布式备份恢复的命令行工具,用于对TiDB集群进行数据备份和恢复。BR支持在TiDB v3.1 及以上版本使用。 **准备工作** 1. 查看集群状态:使用`tiup cluster display tidb-test`命令查看集群架构。 2. 创建NFS目录挂载:使用`mkdir -p /nfs/data && chmod -R 777 /nfs/data`创建本地目录并挂载到远程节点。 3. 下载工具:使用`wget`下载`tidb-toolkit-v5.0.1-linux-amd64.tar.gz`文件并解压缩。 4. 启动BR工具:进入工具目录,运行`./br`命令。 **数据备份** 1. 进入到要备份的数据库目录,例如`./br backup db --pd \"192.168.40.160:2379\" --db \"testdb\" --storage \"local:///nfs/data\" --log-file restoredb.log`。 2. 选项参数: - `pd`:连接 TiDB数据库的PD节点,默认连接本地PD节点。 - `db`:要备份的数据库名称。 - `storage`:备份文件存储路径,默认使用本地目录。 - `ratelimit`:备份所用存储带宽限制速度,默认120。 - `log-file`:备份日志文件。 **数据恢复** 1. 进入到要恢复的数据库目录,例如`./br restore db --pd \"192.168.40.160:2379\" --db \"testdb\" --storage \"local:///nfs/data\" --log-file restoredb.log1`。 2. 选项参数和恢复过程与数据备份相似。 **备份和恢复说明** - 对于每个数据库,可以使用`./br backup db --pd \"192.168.40.160:2379\" --db \"testdb\" --storage \"local:///nfs/data\" --log-file restoredb.log`命令备份该数据库。 - 为了备份某个表,可以使用`./br backup db --pd \"192.168.40.160:2379\" --db \"testdb\" --table salaries --storage \"local:///nfs/data\" --log-file restoredb.log`命令。 - 恢复数据可以使用`./br restore db --pd \"192.168.40.160:2379\" --db \"testdb\" --storage \"local:///nfs/data\" --log-file restoredb.log1`命令。 **总结** BR工具是一种方便和高效的工具,可以用于大数据量的备份和恢复。通过使用BR工具,您可以轻松地将TiDB集群的数据备份和恢复到其他节点。

正文

一、BR工具

BR 全称为 Backup & Restore,是 TiDB 分布式备份恢复的命令行工具,用于对 TiDB 集群进行数据备份和恢复。BR 只支持在 TiDB v3.1 及以上版本使用。

在前面的章节中,我们介绍了dumpling将数据导出的方式,也可以作为一种备份的方式,并且导出的数据是极为可读的sql文件,并且也可以将数据导入Mysql中,但是在买对大数据量下快速的全量备份的场景在使用dumpling导成sql文件就显得效率低下了,并且会降低TIDB的读写的QPS。同样BR工具就不同了,他是直接将TIDB存储的sst文件进行转存备份,除去了转化为SQL的工作量,但也有弊端,导出的数据是不可读的二进制数据,但仅对TIDB数据进行备份已经足够强大了。

因此相比 dumpling,BR 更适合大数据量的场景。

BR 将备份或恢复操作命令下发到各个 TiKV 节点。TiKV 收到命令后执行相应的备份或恢复操作。

在一次备份或恢复中,各个 TiKV 节点都会有一个对应的备份路径,TiKV 备份时产生的备份文件将会保存在该路径下,恢复时也会从该路径读取相应的备份文件。

在这里插入图片描述

二、准备工作

在数据备份前,先了解下BR备份的存储目录,TIDB默认会将每个TIKV节点的数据存储在本节点上,但这样就不利于数据的恢复,因为在恢复是每个TIKV节点读到的必须为全部备份数据,否则就会报各种奇葩的错误。因此在恢复时要么将每个TIKV节点中备份的数据拷贝到其他的节点中,要么就采用共享存储、远程磁盘挂载的方式,在文本中我们是采用共享存储、远程磁盘挂载的方式进行演示。

1. 查看集群状态

在备份之前先来看下我的TIDB集群的状态:

tiup cluster display tidb-test

    在这里插入图片描述
    我的集群架构是,一个tidb-server,三台pd-server ,三台tikv-server,分别在160、161、162三个主机上。

    2. 创建NFS目录挂载

    关于NFS目录的挂载,请参考下面一篇我的博客,专门讲解了CenterOS下目录远程挂载的方式。

    https://blog.csdn.net/qq_43692950/article/details/121591360

    这里我们NFS服务器是装在了160中,接着我们在每个主机的根目录下都创建 /nfs/data目录,作为备份存储的目录:

    mkdir -p /nfs/data && chmod -R 777 /nfs/data
    

      然后将161和162中的/nfs/data挂载到160中:

      mount 192.168.40.160:/nfs/data /nfs/data
      

        挂载之后可以在161或162中/nfs/data下随便创建个文件,看其他节点是否可以读到文件,以验证挂载是否成功。

        3. 下载tidb-toolkit工具

        wget https://download.pingcap.org/tidb-toolkit-v5.0.1-linux-amd64.tar.gz
        
          tar xvf tidb-toolkit-v5.0.1-linux-amd64.tar.gz
          
            cd tidb-toolkit-v5.0.1-linux-amd64/bin/
            

              可以看到里面有很多工具,包括我们在数据迁移文章中使用的dumpling、tidb-lightning等,这次我们就需要BR工具即可。

              三、开始备份

              在备份前先看下我们TIDB 中的数据:
              在这里插入图片描述
              可以看到我们有个testdb库及user表,并且表中仅有几条数据。

              下面进入到上面解压出来的工具目录bin下,有以下下面指令:

              1. 对数据进行全备份:

                ./br backup full --pd "192.168.40.160:2379" --storage "local:///nfs/data" --ratelimit 120 --log-file backupfull.log
                

                  –pd :连接 TiDB 数据库的 PD 节点,最好在 PD 节点上执行,即连接本节点。
                  –storage :备份文件存储在 TiKV 节点上的位置,使用我们的挂载目录。
                  –ratelimit :对于备份所用存储带宽限速,以免影响线上业务。
                  –log-file : 备份日志文件

                • 上面是对整个TIDB上的所有的库进行备份,如果就想备份某个数据库,则可以:

                  ./br backup db --pd "192.168.40.160:2379" --db "testdb" --storage "local:///nfs/data" --log-file restoredb.log
                  

                    通过 --db 来指定数据库。

                  • 如果就想备份某个表:

                    ./br backup db --pd "192.168.40.160:2379" --db "testdb" --table salaries --storage "local:///nfs/data" --log-file restoredb.log
                    

                      通过–table来指定表。

                    我们采用对某个数据库进行备份的方式,备份testdb数据库:

                    ./br backup db --pd "192.168.40.160:2379" --db "testdb" --storage "local:///nfs/data" --log-file restoredb.log
                    

                      在这里插入图片描述
                      查看备份文件
                      在这里插入图片描述

                      四、数据恢复

                      上面我们已经备份了数据,在恢复前,我们先删除testdb数据库:
                      在这里插入图片描述
                      下面还是进入到bin下,使用br restore 命令:

                      ./br restore db --pd "192.168.40.160:2379" --db "testdb" --storage "local:///nfs/data" --log-file restoredb.log
                      
                      • 1

                      参数和上面备份时的参数含义一样。
                      在这里插入图片描述
                      查看restoredb.log日志文件,可以看到已经成功。
                      在这里插入图片描述
                      再次查看数据库和表:
                      在这里插入图片描述
                      已恢复到最初的状态。

                      与[转帖]TIDB - 使用BR工具进行数据热备份与恢复相似的内容:

                      [转帖]TIDB - 使用BR工具进行数据热备份与恢复

                      一、BR工具 BR 全称为 Backup & Restore,是 TiDB 分布式备份恢复的命令行工具,用于对 TiDB 集群进行数据备份和恢复。BR 只支持在 TiDB v3.1 及以上版本使用。 在前面的章节中,我们介绍了dumpling将数据导出的方式,也可以作为一种备份的方式,并且导出的数据

                      [转帖]TIDB - 使用BR工具进行数据热备份与恢复

                      一、BR工具 BR 全称为 Backup & Restore,是 TiDB 分布式备份恢复的命令行工具,用于对 TiDB 集群进行数据备份和恢复。BR 只支持在 TiDB v3.1 及以上版本使用。 在前面的章节中,我们介绍了dumpling将数据导出的方式,也可以作为一种备份的方式,并且导出的数据

                      [转帖]tidb backup

                      https://docs.pingcap.com/zh/tidb/v4.0/sql-statement-restore BACKUP 语句使用的引擎与 BR 相同,但备份过程是由 TiDB 本身驱动,而非单独的 BR 工具。BR 工具的优势和警告也适用于 BACKUP 语句。 执行 BACKUP 需

                      [转帖]使用 BR 命令行备份恢复

                      TiDB试用 来源:TiDB 浏览 404 扫码 分享 2021-04-20 20:49:42 使用 BR 命令行进行备份恢复 BR 命令行描述 命令和子命令 常用选项 使用 BR 命令行备份集群数据 备份全部集群数据 备份单个数据库的数据 备份单张表的数据 使用表库过滤功能备份多张表的数据 备份数

                      [转帖]br备份时排除某个库

                      作者: qhd2004 原文来源: https://tidb.net/blog/2a88149e 生产环境中我们使用br来备份数据库,但是有时候可能需要排除某个库,比如,skywalking后台库(实际中是skywalking暂时放在tidb中,后面会转到es,并且skywalking的数据对我们来

                      [转帖]br 备份时排除某个库

                      https://tidb.net/book/tidb-monthly/2023/2023-02/usercase/excluded-a-storeroom-during-br-backup 生产环境中我们使用br来备份数据库,但是有时候可能需要排除某个库,比如,skywalking后台库(实际中是s

                      [转帖]tidb RESTORE

                      https://docs.pingcap.com/zh/tidb/v4.0/sql-statement-restore RESTORE 语句用于执行分布式恢复,把 BACKUP 语句生成的备份文件恢复到 TiDB 集群中。 RESTORE 语句使用的引擎与 BR 相同,但恢复过程是由 TiDB 本身

                      [转帖]如何使用 minio 进行 BR 备份

                      https://tidb.net/blog/ada69456#5.%20%E4%BD%BF%E7%94%A8%20minio%20%E8%BF%9B%E8%A1%8C%20BR%20%E5%A4%87%E4%BB%BD%E7%9A%84%E6%9D%83%E9%99%90%E8%AF%B4%E6%9

                      [转帖]br备份时排除某个库

                      https://tidb.net/blog/2a88149e?utm_source=tidb-community&utm_medium=referral&utm_campaign=repost#br%E6%8E%92%E9%99%A4%E8%A7%84%E5%88%99 在br文档中有使用 --fi

                      [转帖]TIDB - 使用 Dumpling 和 TiDB Lightning 迁移Mysql数据至TIDB中

                      一、TiDB Lightning介绍 TiDB Lightning 是一个将全量数据高速导入到 TiDB 集群的工具,目前支持 Mydumper 或 CSV 输出格式的数据源。你可以在以下两种场景下使用 Lightning: 迅速导入大量新数据。 备份恢复所有数据。 目前,TiDB Lightnin