详细理解GaussDB以及怎么做数据迁移【玩转华为云】

举报
龙哥手记 发表于 2022/04/22 17:13:35 2022/04/22
【摘要】 主要内容有:解释GaussDB里涉及常见的名词,并熟悉数据库优势是什么,以及我们该怎么来用,以及最后详细描述开发里面很常见的数据库迁移任务怎么完成。

定义如下

GaussDB(for openGauss)是华为倾力打造的自研企业级分布式关系型数据库。

产品特性

该数据库具备企业级复杂事务混合负载能力,同时支持优异的分布式事务,同城跨AZ部署,数据0丢失,支持1000+扩展能力,PB级海量存储等企业级数据库特性。拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能给企业提供带来功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务,同时华为的openGauss单机主备社区版本也开源啦,鼓励更多开发者共同繁荣中国数据库生态。

一 🍗 必知的基础知识

1 常见名词解释

实例

GaussDB的最小管理单元就是实例,一个实例代表了一个独立运行的数据库。用户可以在控制台创建和管理GaussDB(for openGauss)实例。比如说实例的状态、规格、存储类型、版本。

实例类型

GaussDB支持分布式版和主备版实例两种类型。分布式形态能够支撑较大的数据量,且提供了横向扩展的能力,可以通过扩容的方式提高实例的数据容量和并发能力。主备版适用于数据量较小,且长期来看数据不会大幅度增长,但是对数据的可靠性,以及业务的可用性有一定诉求的场景。

实例规格

数据库实例各种规格(vCPU个数、内存(GB))请参考数据库实例规格。

CN

Coordinator Node,负责数据库系统元数据存储、查询任务的分解和部分执行,以及将DN中查询结果汇聚在一起。

DN

Data Node,和CN对应的概念。负责实际执行表数据的存储、查询操作。

自动备份

创建实例时,GaussDB服务默认开启自动备份策略,实例创建成功后,您可对其进行修改,GaussDB(for openGauss)服务会根据您的配置,自动创建数据库实例的备份。

手动备份

手动备份是由用户启动的数据库实例的全量备份,它会一直保存,直到用户手动删除。

区域和可用区

我们用区域和可用区来描述数据中心的位置,您可以在特定的区域、可用区创建资源。

  • 区域(Region):从地理位置和网络时延维度划分,同一个Region内可共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。

  • 可用区:一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上把计算、网络、存储等资源划分成多个实例。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求,下面描述了区域和可用区的关系

二 🤩 优势所在

高安全

GaussDB(for openGauss)拥有TOP级的商业数据库安全特性:数据动态脱敏,TDE透明加密,行级访问控制,密态计算。能够满足政企&金融级客户的核心安全诉求。

健全的工具与服务化能力

GaussDB(for openGauss)已经拥有华为云,华为云Stack的商用服务化部署能力,同时拥有DAS、UGO、DRS等生态工具。有效保障用户开发,运维,优化,监控,迁移等日常工作需要。

全栈自研

GaussDB(for openGauss)基于鲲鹏生态,是当前国内唯一能够做到全栈自主可控的国产品牌。同时GaussDB(for openGauss)能够基于硬件优势在底层不断进行优化,提升产品综合性能。

开源生态
GaussDB(for openGauss)已经支持开源社区,并提供主备版版本下载。

二 🕹️ 学会如何使用

默认你已完成GaussDB的购买与配置工作

1 登录华为云控制台

2 单击管理控制台左上角的,选择区域。

3 单击左侧的服务列表图标,选择“数据库 > 数据管理服务 DAS”。

4 在数据管理服务DAS左侧导航栏,单击“开发工具”,进入开发工具数据库登录列表页面。

5 单击“新增数据库登录”,打开新增数据库登录窗口。

6 “数据库引擎”选择“GaussDB(for openGauss)”、“数据库来源”保持默认、目标实例,填写数据库名称、登录用户名、密码以及描述(非必填项)信息。

建议开启定时采集、SQL执行记录功能,如果提示已有连接,可以跳过创建连接步骤,直接执行9。

7 您可根据需要选择“测试连接”(非必选操作步骤)。

如测试连接成功,将提示“连接成功”,您可继续新增操作。如测试连接失败,将提示连接失败原因,您需根据提示信息进行修改,以便新增数据库登录成功。

8 并且设置完登录信息,单击“立即新增”。

9 新增完成后,单击新增登录的“登录”,登录当前数据库。

10 进入SQL查询页面。

SQL使用入门

1 创建数据库用户

默认只有集群安装时创建的管理员用户可以访问初始数据库,您还可以创建其他数据库用户帐号。

CREATE USER joe WITH PASSWORD "xxxxxxxxx";

当结果显示为如下信息,则表示创建成功。

如上我们创建了一个用户名为joe,密码为xxxxxxx的用户。

引申信息:关于数据库用户的更多信息请看管理用户及权限。

查看数据库用户信息请看这里:https://support.huaweicloud.com/productdesc-opengauss/opengauss_01_0003.html

创建数据库

CREATE DATABASE db_tpcds;

当结果显示为如下信息,则表示创建成功。

创建完db_tpcds数据库后,可以在左上方切换到新创建的库中。

创建表

执行如下命令来创建一个schema。

CREATE SCHEMA myschema;

创建一个名称为mytable,只有一列的表。字段名为firstcol,字段类型为integer。

CREATE TABLE myschema.mytable (firstcol int);

向表中插入数据:

INSERT INTO myschema.mytable values (100);

查看表中数据:

SELECT * FROM myschema.mytable;

引申信息如下

  • 默认情况下,新的数据库对象是创建在“$user”模式下的,例如刚刚新建的表。关于模式的更多信息请参考创建和管理schema。

关于创建表的更多信息请参见创建和管理表。
除了创建的表以外,数据库还包含很多系统表。这些系统表包含集群安装信息以及GaussDB(for openGauss)上运行的各种查询和进程的信息。

可以通过查询系统表来收集有关数据库的信息。请参见查看系统表。

在db_tpcds库中,root用户下执行如下语句,将新创建的库db_tpcds的所有权限赋予给新用户joe。

GRANT ALL ON DATABASE db_tpcds TO joe;

GRANT USAGE ON schema myschema TO joe;

GRANT ALL ON TABLE myschema.mytable TO joe;

新增joe用户登录数据库db_tpcds。

登录之后,在表中插入数据并验证。

INSERT INTO myschema.mytable values (200);

SELECT * FROM myschema.mytable;

三 ⛳ 数据库迁移任务实战

1 场景描述

本实践使用DRS的实时同步功能把本地Oracle数据库实时迁移至华为云GaussDB。方式是通过全量+增量同步,实现源数据库Oracle和目标数据库GaussDB(for openGauss)的数据长期同步。

2 解决问题了什么问题呢

  • 1 企业业务高速发展,传统数据库扩容性差,迫切需要分布式化改造
  • 2 传统数据库需要自购并安装服务器、系统、数据库等软件,运维成本高、难度大。
  • 3 传统数据库性能瓶颈问题,复杂查询性能较差。
  • 4 如何不中断业务并且平滑的实现数据迁移。

3 迁移原理

本次实践使用全量+增量同步功能,原理如下:

  1. 全量同步阶段,先进行结构迁移,例如表、主键、唯一键的迁移。
  2. 结构迁移完成后,启动增量数据抽取,以确保全量数据同步期间的增量数据完整的抽取到DRS实例。
  3. 启动全量迁移任务。
  4. 全量迁移完成后自动进入增量同步,从全量迁移开始抽取的位点开始回放。
  5. 当增量回放全部完成后,启动比对任务进行一致性检查,支持实时比对。
  6. 实时比对数据一致时,可以启动业务割接。

四 Oracle迁移至GaussDB

1场景描述

本实践使用DRS的实时同步功能将本地Oracle数据库实时迁移至华为云GaussDB(for openGauss)。

通过全量+增量同步,实现源数据库Oracle和目标数据库GaussDB(for openGauss)的数据长期同步。

操作流程

2 创建VPC和安全组

创建VPC和安全组,为创建GaussDB(for openGauss)实例准备网络资源和安全组。

  1. 创建VPC
  2. 登录华为云控制台。
  3. 单击管理控制台左上角的,选择区域。
    单击左侧的服务列表图标,选择“网络 > 虚拟私有云 VPC”。

进入虚拟私有云信息页面。

单击“创建虚拟私有云”购买VPC。

  1. 单击“立即创建”。
  2. 返回VPC列表,查看创建VPC是否创建完成。
    当VPC列表的VPC状态为“可用”时,表示VPC创建完成。

3 创建安全组

  1. 登录华为云控制台。
  2. 单击管理控制台左上角的,选择区域。
  3. 单击左侧的服务列表图标,选择“网络 > 虚拟私有云”。

进入虚拟私有云信息页面。

  1. 选择“访问控制 > 安全组”。
  2. 单击“创建安全组”。
  3. 填写安全组名称等信息。

  1. 单击“确定”。
  2. 返回安全组列表,单击安全组名称“sg-01”。
  3. 选择“入方向规则”,单击“添加规则”。

配置入方向规则,添加源库的IP地址。

GaussDB作为迁移目标库

本章节介绍创建GaussDB实例,作为迁移任务目标库

  1. 登录华为云控制台。
  2. 单击管理控制台左上角的,选择区域。
  3. 单击左侧的服务列表图标,选择“数据库 > 云数据库 GaussDB”。
  4. 在左侧导航栏选择GaussDB(for openGauss) > 实例管理。
  5. 单击“购买数据库实例”。
  6. 配置实例名称和实例基本信息。

    7.选择实例规格。

本示例中为测试实例,选择较小的测试规格,实际可选规格以界面为准。

  1. 选择实例所属的VPC和安全组、配置数据库端口。

9.配置实例密码等信息。

  1. 单击“立即购买”。
  2. 返回实例列表。

当实例运行状态为“正常”时,表示实例创建完成。

执行如下步骤在源库构造数据:

  1. 根据本地的Oracle数据库的IP地址,通过数据库连接工具连接数据库。
  2. 根据支持的数据类型,在源库执行语句构造数据。
  • a创建一个测试用的用户。
create user test_info identified by xxx;

test_info为本次实践创建的用户,xxx为用户的密码,请根据实际情况替换!!!

b.给用户赋权。

grant dba to test_info;

c.在当前用户下创建一个数据表。

CREATE TABLE test_info.DATATYPELIST(

ID INT,

COL_01_CHAR______E CHAR(100),

COL_02_NCHAR_____E NCHAR(100),

COL_03_VARCHAR___E VARCHAR(1000),

COL_04_VARCHAR2__E VARCHAR2(1000),

COL_05_NVARCHAR2_E NVARCHAR2(1000),

COL_06_NUMBER____E NUMBER(38,0),

COL_07_FLOAT_____E FLOAT(126),

COL_08_BFLOAT____E BINARY_FLOAT,

COL_09_BDOUBLE___E BINARY_DOUBLE,

COL_10_DATE______E DATE DEFAULT SYSTIMESTAMP,

COL_11_TS________E TIMESTAMP(6),

COL_12_TSTZ______E TIMESTAMP(6) WITH TIME ZONE,

COL_13_TSLTZ_____E TIMESTAMP(6) WITH LOCAL TIME ZONE,

COL_14_CLOB______E CLOB DEFAULT EMPTY_CLOB(),

COL_15_BLOB______E BLOB DEFAULT EMPTY_BLOB(),

COL_16_NCLOB_____E NCLOB DEFAULT EMPTY_CLOB(),

COL_17_RAW_______E RAW(1000),

COL_19_LONGRAW___E LONG RAW,

COL_24_ROWID_____E ROWID,

PRIMARY KEY(ID)

);
  • d 插入两行数据
insert into test_info.DATATYPELIST values(4,'huawei','xian','shanxi','zhongguo','shijie', 666,12.321,1.123,2.123,sysdate,sysdate,sysdate,sysdate,'hw','cb','df','FF','FF','AAAYEVAAJAAAACrAAA');

insert into test_info.DATATYPELIST values(2,'Migrate-test','test1','test2','test3','test4', 666,12.321,1.123,2.123,sysdate,sysdate,sysdate,sysdate,'hw','cb','df','FF','FF','AAAYEVAAJAAAACrAAA');

使语句生效

commit;
  1. 在目标端创建库。
  • a 登录华为云控制台。
  • b 单击管理控制台左上角的,选择区域。
  • c 单击左侧的服务列表图标,选择“数据库 > 数据管理服务 DAS”。
  • d 在数据管理服务DAS左侧导航栏,单击“开发工具”,进入开发工具数据库登录列表页面。
  • e 单击“新增数据库登录”,打开新增数据库登录窗口。
  • f 选择“数据库引擎”、“数据库来源”、目标实例,填写登录用户名、密码以及描述(非必填项)信息,开启定时采集、SQL执行记录功能。

  • g 您可根据需要选择“测试连接”(必选操作步骤)。

如测试连接成功,将提示“连接成功”,您可继续新增操作。如测试连接失败,将提示连接失败原因,您需根据提示信息进行修改,以便新增数据库登录成功。

  • h 设置完登录信息,单击“立即新增”。
    新增完成后,单击新增登录的“登录”,登录当前数据库。
  • i 进入SQL查询页面。

    k. 执行如下语句创建兼容Oracle的数据库。
    此例中为:test_database_info,请根据实际情况选择。
CREATE DATABASE test_database_info DBCOMPATIBILITY 'ORA';

2 test_info迁移到GassuDB

本章节介绍创建DRS实例,将本地Oracle上的test_info数据库迁移到GaussDB(for openGauss)实例中test_database_info数据库中。

迁移前检查

在创建任务前,需要针对迁移条件进行手工自检,以确保您的迁移任务更加顺畅。

在迁移前,您需要参考入云使用须知获取迁移相关说明。

创建迁移任务

  1. 登录华为云控制台。
  2. 单击管理控制台左上角的,选择区域。
    选择目标实例所在的区域。
  3. 单击左侧的服务列表图标,选择“数据库 > 数据复制服务 DRS”。
  4. 左侧导航栏选择“实时同步管理”,单击“创建迁移任务”。

  1. 配置同步实例信息。
    a. 选择区域,项目,填写任务名称。

b. 配置迁移任务的类型,选择目标实例和子网。


c. 单击“下一步”。
6. 配置源库及目标库信息。

  • 填写源库的IP、端口、用户、密码等信息
    填写完成后,需要单击“测试连接”,测试连接信息是否正确。

  • 填写目标库的账户和密码。
    填写完成后,需要单击“测试连接”,测试连接信息是否正确。
  • 单击“下一步”,仔细阅读提示内容后,单击“同意,并继续”。

    7 设置同步。
  • 在源库选择需要迁移的数据库和表。本次实践中选择“test_info”中的“DATATYPELIST”表。

    选择完成后,可以设置迁移后是否重新命名库名和表名。
  • 本次实践将表名重新命名为“DATATYPELIST_After”。
    注意重新命名时不要使用特殊符号,否则会导致迁移后执行SQL语句报错。
  • 确认重命名设置内容,单击“下一步”。

8 高级设置。

本页面内容仅做确认,无法修改,确认完成后单击“下一步”。

9 数据加工。
在该页面可以对迁移的表进行加工。包括选择迁移的列,重新命名迁移后的列名,本次实践将“COL_01_CHAR______E”重新命名为“new-line”。

  • 选择需要加工的表。

  • 编辑“COL_01_CHAR______E”列。

  • 将“COL_01_CHAR______E”重新命名为“new-line”,单击“确定”。

    单击“下一步”。

10 预检查

  • 所有配置完成后,进行预检查,确保迁移成功。
  • 对于未通过的项目,根据检查结果中的提示信息修复,修复完成后,单击“重新校验”,直到预检查通过率为100%。
  • 预检查全部通过后,单击“下一步”。
    11 任务确定。
  • 检查所有配置项是否正确。
  • 单击“启动任务”,仔细阅读提示后,勾选“我已阅读启动前须知”。
  • 单击“启动任务”,完成任务创建。

    12 任务创建成功。

任务创建成功后,返回任务列表查看创建的任务状态。

迁移后进行数据校验

当任务状态变为“增量同步”,说明全量同步已经完成,全量同步完成后,登录GaussDB(for openGauss)查看数据迁移结果。

  1. 等待迁移任务状态变为“增量同步”。


2. 单击任务名称,进入任务详情页。
3. 在“同步进度”页签查看全量同步结果。

如图所示,本次实践将TEST_INFO库中DATATYPELIST表迁移至shard_0,共迁移了两条数据。

  1. 验证数据一致性。
  • 在“同步对比 > 对象级对比”页面,查看库和表的迁移结果。
  • 在“同步对比 > 数据级对比”页面,创建对比任务,查看表中列的迁移结果。
  1. 通过DAS连接GaussDB(for openGauss)的目标库“test_database_info ”。

执行如下语句,查询全量同步结果。

SELECT * FROM test_info.datatypelist_after;

Oracle数据库中的模式迁移完成后,会在GaussDB(for openGauss)库中作为Schema,所以查询语句中添加Schema精确查询。

如图所示,查询表中的各个数据类型都迁移成功,并且数据正确无误。

7. 验证增量同步。
由于本次实践为“全量+增量”同步模式,全量同步完成后,如果在创建任务后有数据写入,这些写入的数据会一直同步至目标库中,直到任务结束。下面我们模拟写入另外的数据。

  • 根据本地的Oracle数据库的IP和地址,通过数据库连接工具连接数据库。
  • 执行如下语句,在源库插入一条数据。
    我们插入一条“id”为1的数据。
insert into test_info.DATATYPELIST values(1,'Migrate-test','test1','test2','test3','test4', 666,12.321,1.123,2.123,sysdate,sysdate,sysdate,sysdate,'hw','cb','df','FF','FF','AAAYEVAAJAAAACrAAA');
commit;
  • 在目标库执行如下语句查询结果。
SELECT * FROM test_info.datatypelist_after;

如图所示,在源库新增的数据,可以实时同步至目标库。

8.结束迁移任务!!!

根据业务情况,待业务完全迁移至目标库,可以结束当前任务。

  • 单击“操作”列的“结束”。
  • 仔细阅读提示后,单击“是”,就能结束迁移任务。

GaussDB数据库官网https://www.huaweicloud.com/product/gaussdb.html

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。