暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TiDB物理备份工具BR

原创 键盘丐 2022-03-30
937

概述

BR 全称为 Backup & Restore,是 TiDB 分布式备份恢复的命令行工具,用于对 TiDB 集群进行数据备份和恢复,相比 dumpling,BR 更适合大数据量的场景。BR 除了可以用来进行常规备份恢复外,也可以在保证兼容性前提下用来做大规模的数据迁移。BR 将备份或恢复操作命令下发到各个 TiKV 节点。TiKV 收到命令后执行相应的备份或恢复操作。在一次备份或恢复中,各个 TiKV 节点都会有一个对应的备份路径,TiKV 备份时产生的备份文件将会保存在该路径下,恢复时也会从该路径读取相应的备份文件。

BR的安装

BR工具需要安装部署到PD节点上,如下实验过程:

[root@node1 ~]# wget https://download.pingcap.org/tidb-toolkit-v5.0.1-linux-amd64.tar.gz
--2021-11-05 15:29:32--  https://download.pingcap.org/tidb-toolkit-v5.0.1-linux-amd64.tar.gz
Resolving download.pingcap.org (download.pingcap.org)... 117.34.48.243, 117.34.48.240, 117.34.48.226, ...
Connecting to download.pingcap.org (download.pingcap.org)|117.34.48.243|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 220298684 (210M) [application/x-compressed]
Saving to: ‘tidb-toolkit-v5.0.1-linux-amd64.tar.gz’

100%[=================================================================================================================================>] 220,298,684 11.2MB/s   in 21s

2021-11-05 15:29:54 (9.95 MB/s) - ‘tidb-toolkit-v5.0.1-linux-amd64.tar.gz’ saved [220298684/220298684]

[root@node1 ~]# tar xvf tidb-toolkit-v5.0.1-linux-amd64.tar.gz
tidb-toolkit-v5.0.1-linux-amd64/
tidb-toolkit-v5.0.1-linux-amd64/bin/
tidb-toolkit-v5.0.1-linux-amd64/bin/tikv-importer
tidb-toolkit-v5.0.1-linux-amd64/bin/dumpling
tidb-toolkit-v5.0.1-linux-amd64/bin/br
tidb-toolkit-v5.0.1-linux-amd64/bin/tidb-lightning
tidb-toolkit-v5.0.1-linux-amd64/bin/mydumper
tidb-toolkit-v5.0.1-linux-amd64/bin/tidb-lightning-ctl
tidb-toolkit-v5.0.1-linux-amd64/bin/pd-tso-bench
tidb-toolkit-v5.0.1-linux-amd64/bin/sync_diff_inspector
[root@node1 ~]# ls
anaconda-ks.cfg                   htop-0.8.3-1.el6.rf.x86_64.rpm                 root@192.168.59.30             tidbPrepare.sh                          topology.yaml
cronolog-1.6.2-10.el6.x86_64.rpm  MySQL-client-advanced-5.6.25-1.el7.x86_64.rpm  scale-out-tikv.yaml            tidb-toolkit-v5.0.1-linux-amd64
hcache                            rlwrap-0.43-5.el8.x86_64.rpm                   telnet-0.17-48.el6.x86_64.rpm  tidb-toolkit-v5.0.1-linux-amd64.tar.gz
[root@node1 ~]# cd tidb-toolkit-v5.0.1-linux-amd64
[root@node1 tidb-toolkit-v5.0.1-linux-amd64]# ls
bin
[root@node1 tidb-toolkit-v5.0.1-linux-amd64]# cd bin
[root@node1 bin]# ls
br  dumpling  mydumper  pd-tso-bench  sync_diff_inspector  tidb-lightning  tidb-lightning-ctl  tikv-importer
[root@node1 bin]# pwd
/root/tidb-toolkit-v5.0.1-linux-amd64/bin
下载解压后已经可以看到/root/tidb-toolkit-v5.0.1-linux-amd64/bin目录下已经出现br工具,在root用户.bash_profile里面修改PATH变量,是root用户可以在任何目录下使用br工具。

[root@node1 ~]# cat /root/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export PATH=/root/.tiup/bin:/root/tidb-toolkit-v5.0.1-linux-amd64/bin:$PATH

备份目录

        因为br备份是备份tikv节点,所以必须先在所有tikv节点上创建备份目录,并且赋予可写权限,本次实验在所有tikv节点上创建/tmp/backup,用来存储本节点的备份文件(SST)文件。

[root@node2 tmp]# mkdir /tmp/backup
[root@node2 tmp]# chmod 777 /tmp/backup
[root@node2 tmp]# ls -lh
drwxrwxrwx 2 root root  6 Nov  5 15:41 backup

数据库全备份

        备份命令:br backup full --pd "192.168.59.27:2379" --storage "local:///tmp/backup" --ratelimit 120 --log-file backupfull.log

        参数解释:

        --pd "1192.168.59.27:2379" :连接 TiDB 数据库的 PD 节点

        --storage "local:///tmp/backup" :备份文件存储在 TiKV 节点上的位置。

        --ratelimit 120 :对于备份所用存储带宽限速,以免影响线上业务。

        --log-file backupfull.log : 备份日志文件

[root@node1 tmp]# br backup full --pd "192.168.59.27:2379" --storage "local:///tmp/backup" --ratelimit 120 --log-file backupfull.log
Detail BR log in backupfull.log
Full backup <-----------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
Checksum <--------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
[2021/11/05 15:49:59.354 +08:00] [INFO] [collector.go:62] ["Full backup success summary"] [total-ranges=11] [ranges-succeed=11] [ranges-failed=0] [backup-checksum=2.001624ms] [backup-fast-checksum=3.14382ms] [backup-total-regions=11] [BackupTS=428893431204675586] [Size=72463] [total-take=97.13109ms] [total-kv=253] [data-size=24.6kB] [average-speed=571.8kB/s]
[root@node1 tmp]# ls
backup  backupfull.log

        备份成功查看tikv节点的/tmp/backup目录备份文件

[root@node3 backup]# ls
1_4_69_2550d727ffe3e408af41f541b134d5e064440c25988bbecfb665933d1195a45d_1636098599306_write.sst
1_4_69_393d3575060c0d616300c1199ef1c015784fdd3d13e950a6251007bbcbaf2c06_1636098599320_write.sst
1_4_69_6d95378ebf12295206532143634e65a359d39c26f40c8a1fa9b239de19fe54b2_1636098599329_write.sst
1_4_69_90eafaa636d17440add6ba1538819ff7087eaf564d641bafda9a1a8af6e1e386_1636098599325_default.sst
1_4_69_90eafaa636d17440add6ba1538819ff7087eaf564d641bafda9a1a8af6e1e386_1636098599325_write.sst
1_4_69_9467c10f062996c86750ce98960d2573aa8dca7ac32e2d8daeaa5a904340d508_1636098599343_write.sst
1_4_69_9938b5edd23035db4db3f5906a1ec44ab74bfa0ac79f0b6990a8ce8d87da5302_1636098599339_write.sst
1_4_69_9f49851d1e6b90d0c238b9106421a32c5132541666fa2893fa67f63b29284811_1636098599310_write.sst
1_4_69_9fb8afb3f7322e93f506f0d9d11e9b1569bc90b7c3779da9bb7e35137e8e6597_1636098599315_default.sst
1_4_69_9fb8afb3f7322e93f506f0d9d11e9b1569bc90b7c3779da9bb7e35137e8e6597_1636098599315_write.sst
1_4_69_ac53a3e2ccb9e1349c600272ea241c8f20673a53ca792f663daf76aa8f6dfb95_1636098599313_write.sst
1_4_69_d6511a15b20a224505f09eaed9d7b45d126ce04eb30be4da413d8f370b66ea53_1636098599332_write.sst
1_4_69_dc3130b8088cd874a3ebf095e0290965946f6053e234a4d345d76f32cba3fed0_1636098599335_default.sst
1_4_69_dc3130b8088cd874a3ebf095e0290965946f6053e234a4d345d76f32cba3fed0_1636098599335_write.sst

备份某一张表

        备份命令:br backup db --pd "192.168.59.27:2379 --db chnbs --storage "local:///tmp/chnbs" --ratelimit 120 --log-file backupdb.log

[root@node2 tmp]# mkdir chnbs
[root@node2 tmp]# chmod 777 chnbs
[root@node1 tmp]# br backup db --pd "192.168.59.27:2379" --db chnbs --storage "local:///tmp/chnbs" --ratelimit 120 --log-file backupdb.log
Detail BR log in backupdb.log
Database backup <-------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
Checksum <--------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
[2021/11/05 15:56:27.729 +08:00] [INFO] [collector.go:62] ["Database backup success summary"] [total-ranges=9] [ranges-succeed=9] [ranges-failed=0] [backup-checksum=1.859639ms] [backup-fast-checksum=2.819859ms] [backup-total-regions=9] [BackupTS=428893533008297986] [Size=66114] [total-take=87.10438ms] [total-kv=233] [data-size=24.08kB] [average-speed=696.2kB/s] 
[root@node3 chnbs]# ls
1_4_69_393d3575060c0d616300c1199ef1c015784fdd3d13e950a6251007bbcbaf2c06_1636098987697_write.sst
1_4_69_6d95378ebf12295206532143634e65a359d39c26f40c8a1fa9b239de19fe54b2_1636098987705_write.sst
1_4_69_90eafaa636d17440add6ba1538819ff7087eaf564d641bafda9a1a8af6e1e386_1636098987700_default.sst
1_4_69_90eafaa636d17440add6ba1538819ff7087eaf564d641bafda9a1a8af6e1e386_1636098987700_write.sst
1_4_69_9467c10f062996c86750ce98960d2573aa8dca7ac32e2d8daeaa5a904340d508_1636098987719_write.sst
1_4_69_9938b5edd23035db4db3f5906a1ec44ab74bfa0ac79f0b6990a8ce8d87da5302_1636098987716_write.sst
1_4_69_9fb8afb3f7322e93f506f0d9d11e9b1569bc90b7c3779da9bb7e35137e8e6597_1636098987693_default.sst
1_4_69_9fb8afb3f7322e93f506f0d9d11e9b1569bc90b7c3779da9bb7e35137e8e6597_1636098987693_write.sst
1_4_69_ac53a3e2ccb9e1349c600272ea241c8f20673a53ca792f663daf76aa8f6dfb95_1636098987689_write.sst
1_4_69_d6511a15b20a224505f09eaed9d7b45d126ce04eb30be4da413d8f370b66ea53_1636098987708_write.sst
1_4_69_dc3130b8088cd874a3ebf095e0290965946f6053e234a4d345d76f32cba3fed0_1636098987712_default.sst
1_4_69_dc3130b8088cd874a3ebf095e0290965946f6053e234a4d345d76f32cba3fed0_1636098987712_write.sst

恢复备份数据库

  • 删除数据

[root@node1 tmp]# mysql -uroot -h 192.168.59.27 -P4000
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.25-TiDB-v5.2.1 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| METRICS_SCHEMA     |
| PERFORMANCE_SCHEMA |
| chnbs              |
| mysql              |
| test               |
+--------------------+
6 rows in set (0.00 sec)

mysql> use chnbs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------------+
| Tables_in_chnbs      |
+----------------------+
| a                    |
| f_comment            |
| f_config             |
| f_enterprise         |
| f_industry           |
| f_job_intention      |
| f_notification       |
| f_notification_badge |
| f_order              |
+----------------------+
9 rows in set (0.00 sec)

mysql> select count(*) from f_order;
+----------+
| count(*) |
+----------+
|       87 |
+----------+
1 row in set (0.00 sec)

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> drop database chnbs;
Query OK, 0 rows affected (0.26 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| METRICS_SCHEMA     |
| PERFORMANCE_SCHEMA |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.00 sec)
  • 汇集所有备份文件到所有tikv节点/tmp/chnbs目录下,我们实验过程中只有node3有数据,所有把node3的数据scp到其他节点上即可。

[root@node3 chnbs]# scp * root@192.168.59.27:/tmp/chnbs/
The authenticity of host '192.168.59.27 (192.168.59.27)' can't be established.
ECDSA key fingerprint is SHA256:utPCyUbj1X7yjN1r7emBpsim/PO2aREYDN71V1m/Srw.
ECDSA key fingerprint is MD5:ca:bf:c1:e4:5d:df:bc:13:d9:cb:63:f9:c0:52:41:c3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.59.27' (ECDSA) to the list of known hosts.
root@192.168.59.27's password:
1_4_69_393d3575060c0d616300c1199ef1c015784fdd3d13e950a6251007bbcbaf2c06_1636098987697_write.sst                                          100% 2183     2.2MB/s   00:00
1_4_69_6d95378ebf12295206532143634e65a359d39c26f40c8a1fa9b239de19fe54b2_1636098987705_write.sst                                          100% 3204     3.8MB/s   00:00
1_4_69_90eafaa636d17440add6ba1538819ff7087eaf564d641bafda9a1a8af6e1e386_1636098987700_default.sst                                        100% 1667     2.2MB/s   00:00
1_4_69_90eafaa636d17440add6ba1538819ff7087eaf564d641bafda9a1a8af6e1e386_1636098987700_write.sst                                          100% 2122     2.9MB/s   00:00
1_4_69_9467c10f062996c86750ce98960d2573aa8dca7ac32e2d8daeaa5a904340d508_1636098987719_write.sst                                          100% 5033     5.5MB/s   00:00
1_4_69_9938b5edd23035db4db3f5906a1ec44ab74bfa0ac79f0b6990a8ce8d87da5302_1636098987716_write.sst                                          100% 1622     2.3MB/s   00:00
1_4_69_9fb8afb3f7322e93f506f0d9d11e9b1569bc90b7c3779da9bb7e35137e8e6597_1636098987693_default.sst                                        100% 1216     1.4MB/s   00:00
1_4_69_9fb8afb3f7322e93f506f0d9d11e9b1569bc90b7c3779da9bb7e35137e8e6597_1636098987693_write.sst                                          100% 1875     1.1MB/s   00:00
1_4_69_ac53a3e2ccb9e1349c600272ea241c8f20673a53ca792f663daf76aa8f6dfb95_1636098987689_write.sst                                          100% 1699     2.0MB/s   00:00
1_4_69_d6511a15b20a224505f09eaed9d7b45d126ce04eb30be4da413d8f370b66ea53_1636098987708_write.sst                                          100% 1660     1.9MB/s   00:00
1_4_69_dc3130b8088cd874a3ebf095e0290965946f6053e234a4d345d76f32cba3fed0_1636098987712_default.sst                                        100% 1279     1.7MB/s   00:00
1_4_69_dc3130b8088cd874a3ebf095e0290965946f6053e234a4d345d76f32cba3fed0_1636098987712_write.sst                                          100% 1415     1.9MB/s   00:00
[root@node3 chnbs]# scp * root@192.168.59.29:/tmp/chnbs/
The authenticity of host '192.168.59.29 (192.168.59.29)' can't be established.
ECDSA key fingerprint is SHA256:utPCyUbj1X7yjN1r7emBpsim/PO2aREYDN71V1m/Srw.
ECDSA key fingerprint is MD5:ca:bf:c1:e4:5d:df:bc:13:d9:cb:63:f9:c0:52:41:c3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.59.29' (ECDSA) to the list of known hosts.
root@192.168.59.29's password:
1_4_69_393d3575060c0d616300c1199ef1c015784fdd3d13e950a6251007bbcbaf2c06_1636098987697_write.sst                                          100% 2183     1.5MB/s   00:00
1_4_69_6d95378ebf12295206532143634e65a359d39c26f40c8a1fa9b239de19fe54b2_1636098987705_write.sst                                          100% 3204     2.7MB/s   00:00
1_4_69_90eafaa636d17440add6ba1538819ff7087eaf564d641bafda9a1a8af6e1e386_1636098987700_default.sst                                        100% 1667     1.7MB/s   00:00
1_4_69_90eafaa636d17440add6ba1538819ff7087eaf564d641bafda9a1a8af6e1e386_1636098987700_write.sst                                          100% 2122     2.2MB/s   00:00
1_4_69_9467c10f062996c86750ce98960d2573aa8dca7ac32e2d8daeaa5a904340d508_1636098987719_write.sst                                          100% 5033     2.1MB/s   00:00
1_4_69_9938b5edd23035db4db3f5906a1ec44ab74bfa0ac79f0b6990a8ce8d87da5302_1636098987716_write.sst                                          100% 1622   906.4KB/s   00:00
1_4_69_9fb8afb3f7322e93f506f0d9d11e9b1569bc90b7c3779da9bb7e35137e8e6597_1636098987693_default.sst                                        100% 1216     1.5MB/s   00:00
1_4_69_9fb8afb3f7322e93f506f0d9d11e9b1569bc90b7c3779da9bb7e35137e8e6597_1636098987693_write.sst                                          100% 1875     2.7MB/s   00:00
1_4_69_ac53a3e2ccb9e1349c600272ea241c8f20673a53ca792f663daf76aa8f6dfb95_1636098987689_write.sst                                          100% 1699     2.6MB/s   00:00
1_4_69_d6511a15b20a224505f09eaed9d7b45d126ce04eb30be4da413d8f370b66ea53_1636098987708_write.sst                                          100% 1660     2.2MB/s   00:00
1_4_69_dc3130b8088cd874a3ebf095e0290965946f6053e234a4d345d76f32cba3fed0_1636098987712_default.sst                                        100% 1279     1.8MB/s   00:00
1_4_69_dc3130b8088cd874a3ebf095e0290965946f6053e234a4d345d76f32cba3fed0_1636098987712_write.sst                                          100% 1415     1.9MB/s   00:00
  • 在PD节点上执行恢复命令br restore db --pd "192.168.59.27:2379" --db "chnbs" --storage "local:///tmp/chnbs" --log-file

  • 并查看恢复数据

[root@node1 tmp]# br restore db --pd "192.168.59.27:2379" --db "chnbs" --storage "local:///tmp/chnbs" --log-file restoredb.log
Detail BR log in restoredb.log
Database restore <------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
[2021/11/05 16:07:52.848 +08:00] [INFO] [collector.go:62] ["Database restore success summary"] [total-ranges=21] [ranges-succeed=21] [ranges-failed=0] [split-region=305.014693ms] [restore-checksum=62.943229ms] [restore-ranges=9] [Size=66114] [total-take=3.642172976s] [total-kv=233] [data-size=24.08kB] [average-speed=70.62kB/s]
[root@node1 tmp]# mysql -uroot -h 192.168.59.27 -P4000
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.7.25-TiDB-v5.2.1 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| METRICS_SCHEMA     |
| PERFORMANCE_SCHEMA |
| chnbs              |
| mysql              |
| test               |
+--------------------+
6 rows in set (0.00 sec)

mysql> use chnbs
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------------+
| Tables_in_chnbs      |
+----------------------+
| a                    |
| f_comment            |
| f_config             |
| f_enterprise         |
| f_industry           |
| f_job_intention      |
| f_notification       |
| f_notification_badge |
| f_order              |
+----------------------+
9 rows in set (0.00 sec)

mysql> select count(*) from f_order;
+----------+
| count(*) |
+----------+
|       87 |
+----------+
1 row in set (0.01 sec)






「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论