作者: 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、设置环境变量
3、安装组件
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、部署完成,查看集群信息如下,数据库里无业务数据
二、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: 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
复制代码
4、增加 pump 节点后,查看集群状态
tiup cluster display 集群名 ,看到各节点为 Up
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";
复制代码
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_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
复制代码
四、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
复制代码
五、查看目标数据库(139),已经完成数据恢复
六、查看数据库服务器 140,binlog 文件已生成,此文件为增量备份文件,在实际备份过程中采取每日一次 Br 备份 + 增量备份的方式实现数据库的备份。
以上完成了数据库备份和恢复的基本操作,请注意,如果生产集群是多个 tikv 节点,在备份的时候需要通过挂在共享磁盘,让所有 tikv 的备份数据写入到共享磁盘中。
评论