TDSQL 分布式数据库的 HDFS 和 LOCAL 备份配置
**产品介绍:**TDSQL 分布式数据库是腾讯公司结合自身支付、金融等核心业务需求,紧紧抓住了国外传统集中式数据库难以适应业务规模快速增长这一现实问题,从 2009 年开始研制新一代分布式数据库系统 TDSQL。并通过持续的产品化完善,实现国产分布式数据库的市场通用化,助力金融政务等行业实现数据库安全可控,并持续降低 IT 成本,提升数字化运营效率,从而进一步推动普惠金融、数字政务等传统行业升级发展。
**产品特点:**TDSQL 作为一款具有金融级特性的分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、易运维、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警、数据多源异构同步迁移等配套设施,为客户提供完整的分布式数据库解决方案。凭借核心事务处理技术的突破,以及完善的系统生态,解决了国产分布式数据库市场通用化难题。
**集中化管理平台:**用户可以通过 TDSQL 的集中管控平台赤兔,进行创建 TDSQL 的关系型实例、分布式实例,并在实例列表页面查看、变更配置、隔离并销毁实例等操作。
以下简单例举几个功能:
\系统监控与告警:\系统提供多种方法对数据库实例、决策与调度系统、备份系统、管理系统及自身的性能和运行状况进行跟踪。可配置告警策略,对异常情况进行告警,当超过阀值时提供电话、短信或邮件形式的告警。
\参数管理:\用户可以利用控制台的参数设置,管理数据库引擎配置,一组数据库参数包括一系列自定义的引擎配置值,该配置应用于实例数据库。如果用户在创建数据库实例时,如果不修改参数设置,系统将采用默认设置。
\接下来我们来看下 TDSQL 的备份恢复管理\
\\TDSQL 的实例提供两种方式的实例创建和使用,一种分布式实例使用分布式表自动分片存储,另一种集中式实例兼容传统 mysql,mariadb 两个版本。\\
\\\*\*本次实验操作我们通过赤兔平台+后端的命令配置来完成整个 TDSQL 的备份和数据闪回
备份存储方式分为:1、本地存储 2、远程 HDFS 方式的存储备份 3、cos 腾讯对象存储方式
本次操作共分为 4 部分:
1、第一部分:HDFS 的部署和组件接入
2、第二部分:TDSQL 的备份到 HDFS 存储
3、第三部分: TDSQL 如何备份到本地挂载存储
4、第四部分:TDSQL 的自动备份和增量备份设置
首先我们先看下 TDSQL 的 HDFS 组件是如何部署和接入使用的,本次我们快速的配置开源的单点 HDFS 来测试下 TDSQL 的备份恢复功能。
HDFS 作为分布式文件管理系统,Hadoop 的基础。HDFS 整体架构包括:NameNode、DataNode 等
1、Namenode:是主节点,负责存储文件的元数据,包括目录、文件、权限等信息和文件分块、副本存储等。
2、Datanode:是从节点,负责自身存储的数据块(block),根据 Namenode 的指令,对本身存储的文件数据块进行读写,并且对数据块进行定期自检,向 Namenode 上报节点与数据的健康状态。
3、Hadoop shell 通过命令上传本地文件到 HDFS 的 DataNode 的目录中。
第一部分:HDFS 的部署和组件接入
我们申请一台新的 CVM(腾讯云虚拟主机)
HDFS:IP 地址:172.21.16.14 云主机的配置:内存 16G(最低不能少于 4G,否则可能提示内存不足),磁盘 100G,CPU8C
TDSQL 主机:
1、修改 tdsql_hosts 配置中的 HDFS 主机信息:
\vim tdsql_install/tdsql_hosts\
\tdsql_hdfs\
\tdsql_hdfs1 ansible_ssh_host=172.21.16.14\ <----- 本次配置单节点 HDFS,此处只填刚才新建的 CVM 的 IP,其他 tdsql_hdfs2 tdsql_hdfs3 删除即可
2、修改 TDSQL 中的 group_vars 中 all 选项中 HDFS 的变量信息:
\vim tdsql_install/group_vars/all\
tdsql_hdfs_num: 1 ---- HDFS 配置的节点数量
tdsql_hdfs_ssh: 36000 ----端口号
tdsql_hdfs_datadir: /data2/hdfs,/data3/hdfs -----HDFS 使用的目录
tdsql_hdfsdatadir_count: 2 -------目录数量
3、使用 ansible 部署 HDFS 组件
\cd tdsql_install\
\ansible-playbook -i tdsql_hosts playbooks/tdsql_hdfs_single.yml\
以上操作均在 TDSQL 主机上使用原始安装包进行 HDFS 组件部署。
HDFS 主机:
完成部署以后 HDFS 主机上会有 tdsql 用户被创建,接下来我们在 HDFS 主机上进行 hdfs 的初始化,并启动服务
1、用 tdsql 用户在 hdfs1 机器上,格式化 namenode
\su - tdsql\
\hdfs namenode -format\
2、用 tdsql 用户在 hdfs1 机器上,启动 namenode 和 datanode
\hdfs --daemon start namenode\
\hdfs --daemon start datanode\
3、配置完成后我们可以查看下后台进程状态
在进行 HDFS 组件初始化完成后,默认会在/ 根目录下创建 \data2-data13\等多个目录,我们可以通过\ps -ef|grep hdfs\简单查看进程运行情况。
TDSQL 主机:
我们通过赤兔平台,接入赤兔平台对 HDFS 的监控配置,如下图操作:
\第二部分:TDSQL 的备份到 HDFS 存储\
接下来我们使用命令方式登录连接 TDSQL,然后简单的创建一些数据,来测试 TDSQL 的备份,包括物理备份和逻辑备份。
查看 proxy 的 ip 地址,通过 proxy 网关 ip,端口,用户名,连接分布式实例。
登录:mysql -h172.21.16.4 -P15005 -uzhao -p
过程描述:
我们创建 test_recover 数据库------->然后创建分布式表 test,t1,t2 并插入数据---------->通过平台在线手动备份--------->备份存储指定 HDFS 方式-------->然后我们 drop 表 ----------》进行数据回档------------>验证被删除的表是否能够找回。
操作如下:
1、创建测试数据库 test_recove
MySQL (none)> create database test_recover;
Query OK, 1 row affected (0.01 sec)
2、创建分布式表,并插入数据
MySQL (none)> use test_recover;
Database changed
MySQL test_recover> create table test (id int primary key ,name varchar(20),time1 timestamp default now()) shardkey=id;
Query OK, 0 rows affected (1.61 sec)
注意:分布式表创建时,需要满足以下条件:1、表中必须有主键 2、必须显式的指定 shardkey 分片列
MySQL test_recover> insert into test(id,name,time1) values(111,'TDSQL1',now()),(222,'TDSQL2',now()),(333,'TDSQL3',now());
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
注意: 数据插入时,必须包含 shardkey 分片列,如果不指定 shardkey 的 id 列数据无法插入做分片,SQL 会直接报错。
MySQL test_recover> select * from test;
+-----+--------+---------------------+
| id | name | time1 |
+-----+--------+---------------------+
| 222 | TDSQL2 | 2020-11-03 18:44:28 |
| 333 | TDSQL3 | 2020-11-03 18:44:28 |
| 111 | TDSQL1 | 2020-11-03 18:44:28 |
+-----+--------+---------------------+
3 rows in set (0.00 sec)
MySQL test_recover>
MySQL test_recover>
MySQL test_recover> create table t1 like test;
Query OK, 0 rows affected (1.52 sec)
MySQL test_recover> create table t2 like test;
Query OK, 0 rows affected (1.52 sec)
MySQL test_recover> insert into t1 select * from test;
Query OK, 3 rows affected (0.03 sec)
MySQL test_recover> insert into t2 select * from test;
Query OK, 3 rows affected (0.01 sec)
MySQL test_recover>
接下来通过赤兔平台进行实例的物理备份:
3、第三部分: TDSQL 如何备份到本地挂载存储
备份到 local 有两点要求:
1、需要在备机节点中确认是否有/tdsqlbackup 目录,如果没有需要创建,并且授予读写权限。如图下图
2、/tdsqlbackup 目录作为挂载点存在,需要挂载网络文件系统 NFS 的方式才可使用。
注意:tdsql 会检测本地是否有/tdsqlbackup 路径,如果有的话会自动备份到/tdsqlbackup 目录下,这个/tdsqlbakcup 目录必须是网络文件系统的挂载点。
我们在 172.21.16.14 主机上再配置 NFS 服务,然后创建 NFS 共享的目录
简称远程 NFS 服务器为:NFS,TDSQL 备份节点简称:TDSQL_BK
NFS 配置如下:
yum -y install nfs-utils.x86_64
systemctl restart nfs.service
systemctl restart rpcbind.service
编辑 NFS 配置文件
vim /etc/exports
/local100 172.21.16.0/24(rw,sync)
/local200 172.21.16.0/24(rw,sync)
mkdir -p /local100
mkdir -p /local200
chmod 777 /local100
chmod 777 /local200
TDSQL_BK 上:
在 tdsql 的备份节点端同样安装 nfs,然后创建目录
mkdir -p /tdsqlbackup
chmod 777 /tdsqlbackup
showmount -e 172.21.16.14
Export list for 172.21.16.14:
/local200 172.21.16.0/24
/local100 172.21.16.0/24
挂载 NFS 共享文件到 TDSQL /tdsqlbackup
mount 172.21.16.14:/local100 /tdsqlbackup
df -Th
172.21.16.14:/local100 nfs4 99G 6.8G 88G 8% /tdsqlbackup
通过赤兔平台,物理备份到 local 存储
查看备份目录生成的文件:
root@VM-16-4-centos tdsqlzk# pwd
/tdsqlbackup/tdsqlzk
root@VM-16-4-centos tdsqlzk# ls
autocoldbackup group_1604464738_156 group_1604467395_162 group_1604468462_164
第四部分:TDSQL 的自动备份和增量备份设置
默认情况下,TDSQL 实例申请后将自动开启物理备份,每天业务低谷期(凌晨 00:00~06:00)将自动全量备份数据;如果存在 binlog 文件,则每 5 分钟自动备份 binlog 文件。可通过实例详情页和备份 &恢复界面进行备份设置。自动备份的地址将根据用户需要进行配置。
(1) 默认会开启全量物理备份,关闭全量逻辑备份,开启 Binlog 实时增量备份。
(2) 全量物理备份支持增量备份,可以设置增量备份间隔天数。
(3) 备份周期:默认每天做一个全量备份。
(4) 备份保存时间:默认保存 30 天,可以再运营前台修改保存时间。
(5) 支持手工执行全量备份,在运营前台手工提交。
TDSQL 的备份与恢复:\TDSQL 提供将数据库定时备份到指定存储位置的能力,备份方案支持物理备份、逻辑备份、增量备份等多种方案。备份系统可支持 HDFS,NAS,COS(腾讯对象存储)等方案。如果不慎将数据删除、写乱,系统还提供一键恢复到指定时间的“回档”功能,这里下次我们在介绍 TDSQL 的回档操作。
评论