产品介绍:TDSQL分布式数据库是腾讯公司结合自身支付、金融等核心业务需求,紧紧抓住了国外传统集中式数据库难以适应业务规模快速增长这一现实问题,从2009年开始研制新一代分布式数据库系统TDSQL。并通过持续的产品化完善,实现国产分布式数据库的市场通用化,助力金融政务等行业实现数据库安全可控,并持续降低IT成本,提升数字化运营效率,从而进一步推动普惠金融、数字政务等传统行业升级发展。
产品特点:TDSQL作为一款具有金融级特性的分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、易运维、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警、数据多源异构同步迁移等配套设施,为客户提供完整的分布式数据库解决方案。凭借核心事务处理技术的突破,以及完善的系统生态,解决了国产分布式数据库市场通用化难题。
集中化管理平台:用户可以通过TDSQL的集中管控平台赤兔,进行创建TDSQL的关系型实例、分布式实例,并在实例列表页面查看、变更配置、隔离并销毁实例等操作。
以下简单例举几个功能:
\系统监控与告警:\系统提供多种方法对数据库实例、决策与调度系统、备份系统、管理系统及自身的性能和运行状况进行跟踪。可配置告警策略,对异常情况进行告警,当超过阀值时提供电话、短信或邮件形式的告警。
\参数管理:\用户可以利用控制台的参数设置,管理数据库引擎配置,一组数据库参数包括一系列自定义的引擎配置值,该配置应用于实例数据库。如果用户在创建数据库实例时,如果不修改参数设置,系统将采用默认设置。
\接下来我们来看下TDSQL的备份恢复管理\
\\TDSQL的实例提供两种方式的实例创建和使用,一种分布式实例使用分布式表自动分片存储,另一种集中式实例兼容传统mysql,mariadb两个版本。\\
\\\\本次实验操作我们通过赤兔平台+后端的命令配置来完成整个TDSQL 的备份和数据闪回
TDSQL的备份方式分为:1、手动备份 2、自动备份 3、增量备份(在自动备份选项中)
备份存储方式分为: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的回档操作。