云服务器内容精选

  • 示例 示例一:执行gs_restore,导入指定MPPDB_backup.dmp文件(自定义归档格式)中postgres数据库的数据和对象定义。 1 2 3 gs_restore -W password backup/MPPDB_backup.dmp -p 8000 -h 10.10.10.100 -d backupdb gs_restore[2017-07-21 19:16:26]: restore operation successful gs_restore: total time: 13053 ms 示例二:执行gs_restore,导入指定MPPDB_backup.tar文件(tar归档格式)中postgres数据库的数据和对象定义。 1 2 3 gs_restore backup/MPPDB_backup.tar -p 8000 -h 10.10.10.100 -d backupdb gs_restore[2017-07-21 19:21:32]: restore operation successful gs_restore[2017-07-21 19:21:32]: total time: 21203 ms 示例三:执行gs_restore,导入指定MPPDB_backup目录文件(目录归档格式)中postgres数据库的数据和对象定义。 1 2 3 gs_restore backup/MPPDB_backup -p 8000 -h 10.10.10.100 -d backupdb gs_restore[2017-07-21 19:26:46]: restore operation successful gs_restore[2017-07-21 19:26:46]: total time: 21003 ms 示例四:执行gs_restore,将postgres数据库的所有对象的定义导入至backupdb数据库。导入前,postgres存在完整的定义和数据,导入后,backupdb数据库只存在所有对象定义,表没有数据。 1 2 3 gs_restore -W password /home//backup/MPPDB_backup.tar -p 8000 -h 10.10.10.100 -d backupdb -s -e -c gs_restore[2017-07-21 19:46:27]: restore operation successful gs_restore[2017-07-21 19:46:27]: total time: 32993 ms 示例五:执行gs_restore,导入MPPDB_backup.dmp文件中PUBLIC模式的所有定义和数据。在导入时会先删除已经存在的对象,如果原对象存在跨模式的依赖则需手工强制干预。 1 2 3 4 5 6 7 gs_restore backup/MPPDB_backup.dmp -p 8000 -h 10.10.10.100 -d backupdb -e -c -n PUBLIC gs_restore: [archiver (db)] Error while PRO CES SING TOC: gs_restore: [archiver (db)] Error from TOC entry 313; 1259 337399 TABLE table1 gaussdba gs_restore: [archiver (db)] could not execute query: ERROR: cannot drop table table1 because other objects depend on it DETAIL: view t1.v1 depends on table table1 HINT: Use DROP ... CASCADE to drop the dependent objects too. Command was: DROP TABLE public.table1; 手工删除依赖,导入完成后再重新创建。 1 2 3 gs_restore backup/MPPDB_backup.dmp -p 8000 -h 10.10.10.100 -d backupdb -e -c -n PUBLIC gs_restore[2017-07-21 19:52:26]: restore operation successful gs_restore[2017-07-21 19:52:26]: total time: 2203 ms 示例六:执行gs_restore,导入MPPDB_backup.dmp文件中PUBLIC模式下表hr.staffs的定义。在导入之前,hr.staffs表不存在。 1 2 3 gs_restore backup/MPPDB_backup.dmp -p 8000 -h 10.10.10.100 -d backupdb -e -c -s -n PUBLIC -t hr.staffs gs_restore[2017-07-21 19:56:29]: restore operation successful gs_restore[2017-07-21 19:56:29]: total time: 21000 ms 示例七:执行gs_restore,导入MPPDB_backup.dmp文件中PUBLIC模式下表hr.staffs的数据。在导入之前,hr.staffs表不存在数据。 1 2 3 gs_restore backup/MPPDB_backup.dmp -p 8000 -h 10.10.10.100 -d backupdb -e -a -n PUBLIC -t hr.staffs gs_restore[2017-07-21 20:12:32]: restore operation successful gs_restore[2017-07-21 20:12:32]: total time: 20203 ms 示例八:执行gs_restore,导入指定表hr.staffs的定义。在导入之前,hr.staffs表的数据是存在的。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 human_resource=# select * from hr.staffs; staff_id | first_name | last_name | email | phone_number | hire_date | employment_id | salary | commission_pct | manager_id | section_id ----------+-------------+-------------+----------+--------------------+---------------------+---------------+----------+----------------+------------+------------ 200 | Jennifer | Whalen | JWHALEN | 515.123.4444 | 1987-09-17 00:00:00 | AD_ASST | 4400.00 | | 101 | 10 201 | Michael | Hartstein | MHARTSTE | 515.123.5555 | 1996-02-17 00:00:00 | MK_MAN | 13000.00 | | 100 | 20 gsql -d human_resource -p 8000 gsql (( GaussDB x.x.x build 39137c2d) compiled at 2022-04-01 15:43:11 commit 3629 last mr 5138 release) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. human_resource=# drop table hr.staffs CASCADE; NOTICE: drop cascades to view hr.staff_details_view gs_restore -W password /home//backup/MPPDB_backup.tar -p 8000 -h 10.10.10.100-d human_resource -n hr -t staffs -s -e restore operation successful total time: 904 ms human_resource=# select * from hr.staffs; staff_id | first_name | last_name | email | phone_number | hire_date | employment_id | salary | commission_pct | manager_id | section_id ----------+------------+-----------+-------+--------------+-----------+---------------+--------+----------------+------------+------------ (0 rows) 示例九:执行gs_restore,导入staffs和areas两个指定表的定义和数据。在导入之前,staffs和areas表不存在。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 human_resource=# \d List of relations Schema | Name | Type | Owner | Storage --------+--------------------+-------+----------+---------------------------------- hr | employment_history | table | | {orientation=row,compression=no} hr | employments | table | | {orientation=row,compression=no} hr | places | table | | {orientation=row,compression=no} hr | sections | table | | {orientation=row,compression=no} hr | states | table | | {orientation=row,compression=no} (5 rows) gs_restore -W password /home/mppdb/backup/MPPDB_backup.tar -p 8000 -h 10.10.10.100 -d human_resource -n hr -t staffs -n hr -t areas restore operation successful total time: 724 ms human_resource=# \d List of relations Schema | Name | Type | Owner | Storage --------+--------------------+-------+----------+---------------------------------- hr | areas | table | | {orientation=row,compression=no} hr | employment_history | table | | {orientation=row,compression=no} hr | employments | table | | {orientation=row,compression=no} hr | places | table | | {orientation=row,compression=no} hr | sections | table | | {orientation=row,compression=no} hr | staffs | table | | {orientation=row,compression=no} hr | states | table | | {orientation=row,compression=no} (7 rows) human_resource=# select * from hr.areas; area_id | area_name ---------+------------------------ 4 | Iron 1 | Wood 2 | Lake 3 | Desert (4 rows) 示例十:执行gs_restore,导入hr的模式,包含模式下的所有对象定义和数据。 1 2 3 gs_restore -W password /home//backup/MPPDB_backup1.sql -p 8000 -h 10.10.10.100 -d backupdb -n hr -e -c restore operation successful total time: 702 ms 示例十一:执行gs_restore,同时导入hr和hr1两个模式,仅导入模式下的所有对象定义。 1 2 3 gs_restore -W password /home//backup/MPPDB_backup2.dmp -p 8000 -h 10.10.10.100 -d backupdb -n hr -n hr1 -s restore operation successful total time: 665 ms 示例十二:执行gs_restore,将human_resource数据库导出文件进行解密并导入至backupdb数据库中。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 create database backupdb; gs_restore /home//backup/MPPDB_backup.tar -p 8000 -h 10.10.10.100 -d backupdb --with-key=1234567812345678 restore operation successful total time: 23472 ms gsql -d backupdb -p 8000 -r gsql ((GaussDB x.x.x build 39137c2d) compiled at 2022-04-01 15:43:11 commit 3629 last mr 5138 release) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. backupdb=# select * from hr.areas; area_id | area_name ---------+------------------------ 4 | Iron 1 | Wood 2 | Lake 3 | Desert (4 rows) 示例十三:用户user1不具备将导出文件中数据导入至数据库backupdb的权限,而角色role1具备该权限,要实现将文件数据导入数据库backupdb,可以在导出命令中设置--role角色为role1,使用role1的权限,完成导出目的。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 human_resource=# CREATE USER user1 IDENTIFIED BY 'password'; gs_restore -U user1 -W password /home//backup/MPPDB_backup.tar -p 8000 -h 10.10.10.100 -d backupdb --role role1 --rolepassword password restore operation successful total time: 554 ms gsql -d backupdb -p 8000 -r gsql ((GaussDB x.x.x build 39137c2d) compiled at 2022-04-01 15:43:11 commit 3629 last mr 5138 release) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. backupdb=# select * from hr.areas; area_id | area_name ---------+------------------------ 4 | Iron 1 | Wood 2 | Lake 3 | Desert (4 rows)
  • 操作场景 gs_restore是GaussDB(DWS)提供的与gs_dump配套的导入工具。通过该工具,可将gs_dump导出的文件导入至数据库。gs_restore支持导入的文件格式包含自定义归档格式、目录归档格式和tar归档格式。 gs_restore具备如下两种功能。 导入至数据库 如果指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接数据库的密码。 导入至脚本文件 如果未指定导入数据库,则创建包含重建数据库所需的SQL语句脚本,并将其写入至文件或者标准输出。该脚本文件等效于gs_dump导出的纯文本格式文件。 gs_restore工具在导入时,允许用户选择需要导入的内容,并支持在数据导入前对等待导入的内容进行排序。
  • 支持区域 当前已上传OBS数据的区域如表1所示。 表1 区域和OBS桶名 区域 OBS桶名 华北-北京一 dws-demo-cn-north-1 华北-北京二 dws-demo-cn-north-2 华北-北京四 dws-demo-cn-north-4 华北-乌兰察布一 dws-demo-cn-north-9 华东-上海一 dws-demo-cn-east-3 华东-上海二 dws-demo-cn-east-2 华南-广州 dws-demo-cn-south-1 华南-广州友好 dws-demo-cn-south-4 中国-香港 dws-demo-ap-southeast-1 亚太-新加坡 dws-demo-ap-southeast-3 亚太-曼谷 dws-demo-ap-southeast-2 拉美-圣地亚哥 dws-demo-la-south-2 非洲-约翰内斯堡 dws-demo-af-south-1 拉美-墨西哥城一 dws-demo-na-mexico-1 拉美-墨西哥城二 dws-demo-la-north-2 莫斯科二 dws-demo-ru-northwest-2 拉美-圣保罗一 dws-demo-sa-brazil-1
  • 操作步骤 登录图引擎服务管理控制台,在左侧导航栏中选择“数据迁移”。 在“数据源管理”页签单击“新建”。 图1 新建数据源管理 在新建数据源页面,输入对应的数据源信息,具体参数如下: 数据源名称:自定义名称,长度在4位到50位之间,必须以字母开头,不区分大小写,可以包含字母、数字、下划线,不能包含其他的特殊字符。 数据源类型:按实际数据源选择,目前支持Mysql、神通数据库、Oracle、DWS、Hive。 图名称:选择需要导入数据的图。 网段CIDR:数据源所在子网的网段。 访问IP地址:数据源的数据库的IP。 访问端口:数据源的数据库的端口(Hive不涉及)。 数据库名称:数据源的数据库的名称。 数据库用户名:访问数据源的数据库的用户名(Hive不涉及)。 数据库密码:访问数据源的数据库的用户密码(Hive不涉及)。 是否需要验证:Hive所在 MRS 集群是否开启Kerberos认证(仅Hive涉及)。 MRS集群用户名称:Hive所在MRS集群的用户名(仅Hive涉及)。 MRS集群用户认证凭证:Hive所在MRS集群的用户的认证凭证,当Kerberos认证关闭时可不传(仅Hive涉及)。 MRS集群Hive客户端文件:Hive客户端文件(仅Hive涉及)。 参数填写完成后单击“确定”。 图2 数据源信息 查看数据源状态,等待创建完成。
  • 迁移原理 使用开源工具kvrocks2redis进行Kvrocks到GeminiDB Redis的迁移,在此基础上,从GeminiDB Redis源码层面对Kvrocks的namespace功能进行适配。 迁移过程分为全量和增量两个阶段:迁移开始后,先进行全量迁移,此时对kvrocks打快照,并记录对应的数据版本(seq)。然后解析全量数据文件成redis命令写入GeminiDB Redis。全量迁移完成后进入持续的增量迁移过程,迁移工具循环给Kvrocks发送PSYNC命令,将获取到的增量数据不断转发给GeminiDB Redis,完成增量迁移 。
  • 方案架构 图1 迁移流程 通过华为云Logstash实现Elasticsearch集群间数据迁移的迁移流程如图1所示。 输入(Input):华为云Logstash接收来自华为云Elasticsearch、自建Elasticsearch或第三方Elasticsearch的数据。 华为云Elasticsearch、自建Elasticsearch或第三方Elasticsearch数据迁移到华为云Elasticsearch的操作步骤相同,只是获取源集群的访问地址有差异,具体请参见获取Elasticsearch集群信息。 过滤(Filter):华为云Logstash对数据进行清洗和转换。 输出(Output):华为云Logstash将数据输出到目标设备,如华为云Elasticsearch。 根据业务需求,可以选择全量数据迁移或增量数据迁移。 全量数据迁移:使用Logstash进行全量数据迁移,适用于迁移初期或需要确保数据完整性的场景。 增量数据迁移:通过Logstash配置增量查询,可以只迁移有增量字段的索引数据。此方法适用于需要持续同步数据或对数据实时性有较高要求的场景。
  • 方案优势 高版本兼容性:适用于不同版本的Elasticsearch集群迁移。 高效的数据处理能力:Logstash支持批量读写操作,可以大幅度提高数据迁移的效率。 并发同步技术:利用slice并发同步技术,可以提高数据迁移的速度和性能,尤其是在处理大规模数据时。 配置简单:华为云Logstash的配置相对简单直观,通过配置文件即可实现数据的输入、处理和输出。 强大的数据处理功能:Logstash内置了丰富的过滤器,可以在迁移过程中对数据进行清洗、转换和丰富。 灵活的迁移策略:根据业务需求,可以灵活选择全量迁移或增量迁移,优化存储使用和迁移时间。
  • 操作步骤 获取Elasticsearch集群信息 准备迁移环境:创建E CS 并准备必要的迁移工具和脚本。 创建Logstash集群:创建一个Logstash集群用于迁移数据。 验证集群间的网络连通性:验证Logstash和源Elasticsearch集群的连通性。 使用Logstash迁移集群 在集群迁移初期或需要确保数据完整性的场景,推荐使用Logstash全量迁移集群数据。 在需要持续同步数据或对数据实时性有较高要求的场景,推荐使用Logstash增量迁移集群数据。 释放Logstash集群:当集群迁移完成后,请及时释放Logstash集群。
  • 约束限制 集群迁移过程中,源集群的索引数据不能增删改,否则会导致迁移后的源集群数据和目标集群数据内容不一致。 集群间需要保证网络连通。 如果源集群、Logstash和目标集群在不同VPC,则需要先打通VPC网络建立对等链接。具体操作请参见对等连接简介。 如果是自建Elasticsearch集群迁移至华为云,则可以通过给自建Elasticsearch集群配置公网访问打通网络。 如果是第三方Elasticsearch集群迁移至华为云,则需要建立企业内部数据中心到华为云的VPN通道或专线。
  • 应用场景 华为云Logstash是一款全托管的数据接入处理服务,兼容开源Logstash的能力,支持用于Elasticsearch集群间数据迁移。 通过华为云Logstash可以实现华为云Elasticsearch、自建Elasticsearch或第三方Elasticsearch迁移至华为云Elasticsearch,该方案常用于以下场景: 跨版本迁移:利用Logstash的兼容性和灵活性,实现不同版本间的数据迁移,确保数据在新版本中的可用性和一致性。适用于Elasticsearch集群版本跨度较大的迁移场景,例如从6.X版本迁移至7.X版本。 集群合并:使用Logstash进行数据迁移,将多个Elasticsearch集群的数据整合到一个Elasticsearch集群中,实现多个Elasticsearch数据的统一管理和分析。 服务迁移上云:将自建的Elasticsearch服务迁移到云平台,以利用云服务的可扩展性、维护简便性和成本效益。 变更服务提供商:如果企业当前使用的是第三方Elasticsearch服务,但出于成本、性能或其他战略考虑,希望更换服务提供商至华为云。
  • 安全边界和风险规避 图2 风险规避 如上图所示, CDM 可能存在以下威胁: 互联网威胁:恶意用户可能通过CDM控制台攻击CDM。 数据中心威胁:恶意CDM管理员获取用户的数据源访问信息(用户名和密码)。 恶意用户威胁:恶意用户窃取其他用户的数据。 数据暴露公网:从公网迁移数据时暴漏数据的威胁。 对于这些潜在的威胁,CDM提供以下机制来规避终端用户的风险: 针对互联网威胁:用户不能直接通过公网登录CDM控制台。CDM提供双层安全保障机制。 华为云控制台框架要求用户访问任何控制台页面都要进行用户认证。 Web应用防火墙 (Web Application Firewall,简称WAF)过滤所有控制台的请求内容并停止请求攻击代码/内容。 针对数据中心威胁:用户必须向CDM系统提供迁移源端和目的端的访问用户名和密码信息,才能完成数据迁移。避免CDM管理员获取此类信息并攻击用户的重要数据源对于CDM非常重要,CDM为此类信息提供三级保护机制。 CDM在本地数据库中存储经过AES-256加密的密码,确保用户隔离。本地数据库使用用户Ruby运行,数据库仅侦听127.0.0.1,用户没有远程访问数据库的权限。 用户实例发放完毕后,CDM将虚拟机的root和Ruby用户密码更改为随机密码且不会保存在任何地方,以阻止CDM管理员访问用户实例和含有密码信息的数据库。 CDM实例迁移以推拉模式进行,因此CDM实例在VPC上没有侦听端口,用户无法从VPC访问本地数据库或操作系统。 针对恶意用户的威胁:CDM对每个用户,使用单独的虚拟机来运行各自的CDM实例,用户之间的实例是完全隔离和安全的。恶意用户无法访问其他用户的实例。 针对数据暴漏公网的威胁:CDM的抽取-写入模型下,即使CDM绑定了弹性IP,也不会开放端口到弹性IP,攻击者无法通过弹性IP来访问和攻击CDM。不过从公网迁移数据的方式下,由于用户数据源也会暴漏在公网,存在被第三方攻击的威胁,推荐用户在数据源服务器上通过ACL或防火墙对源端进行防护,比如仅放通来自CDM绑定的弹性IP的访问请求。
  • CDM简介 云数据迁移 (Cloud Data Migration,简称CDM)提供同构/异构数据源之间批量数据迁移服务,帮助客户实现数据自由流动。支持多种常用数据源,如客户自建或公有云上的文件系统,关系数据库, 数据仓库 ,NoSQL数据库,大数据云服务,对象存储等数据源。 CDM适用于以下场景: 数据上云:使用华为公有云服务时,用户可以将其历史数据或增量数据从私有云/本地数据中心/第三方公有云迁移到华为云。 云服务间数据交换:用户可以在华为云的大数据服务、数据库服务、 对象存储服务 之间相互迁移数据。例如,可以将由 MapReduce服务 (MapReduce Service,简称MRS)处理的数据导入到数据仓库服务(Data Warehouse Service,简称DWS),进行交互式分析和报告统计收集。 云上数据回迁到本地:用户在使用公有云计算资源对海量数据进行处理后,将结果数据回流到本地业务系统,主要是各种关系型数据库和文件系统。
  • CDM迁移原理 用户使用CDM服务时,CDM管理系统在用户VPC中发放全托管的CDM实例。此实例仅提供控制台和Rest API访问权限,用户无法通过其他接口(如SSH)访问实例。这种方式保证了CDM用户间的隔离,避免数据泄漏,同时保证VPC内不同华为云服务间数据迁移时的传输安全。用户还可以使用VPN网络将本地数据中心的数据迁移到华为云服务,具有高度的安全性。 CDM数据迁移以抽取-写入模式进行。CDM首先从源端抽取数据然后将数据写入到目的端,数据访问操作均由CDM主动发起,对于数据源(如RDS数据源)支持SSL时,会使用SSL加密传输。迁移过程要求用户提供源端和目的端数据源的用户名和密码,这些信息将存储在CDM实例的数据库中。保护这些信息对于CDM安全至关重要。 图1 CDM迁移原理
  • Elasticsearch连接参数说明 Elasticsearch连接适用于第三方云的Elasticsearch服务,以及用户在本地数据中心或ECS上自建的Elasticsearch。 Elasticsearch连接器仅支持非安全模式的Elasticsearch集群。 作业运行中禁止修改密码或者更换用户。在作业运行过程中修改密码或者更换用户,密码不会立即生效且作业会运行失败。 连接Elasticsearch时,相关参数如表1所示。 表1 Elasticsearch连接参数 参数名 说明 取值样例 名称 连接的名称,根据连接的数据源类型,用户可自定义便于记忆、区分的连接名。 es_link Elasticsearch服务器列表 配置为一个或多个Elasticsearch服务器的IP地址或 域名 ,包括端口号,格式为“ip:port”,多个地址之间使用“;”分隔。 192.168.0.1:9200;192.168.0.2:9200 父主题: 配置连接参数
  • YASHAN连接参数说明 连接YASHAN时,相关参数如表1 YASHAN连接参数所示。 作业运行中禁止修改密码或者更换用户。在作业运行过程中修改密码或者更换用户,密码不会立即生效且作业会运行失败。 表1 YASHAN连接参数 参数名 说明 取值样例 名称 连接的名称,根据连接的数据源类型,用户可自定义便于记忆、区分的连接名。 yashan_link 数据库服务器 配置为要连接的数据库的IP地址或域名。 单击输入框后的“选择”,可获取用户的实例列表。 192.168.0.1 端口 配置为要连接的数据库的端口。 1688 数据库名称 配置为要连接的数据库名称。 dbname 用户名 待连接数据库的用户。该数据库用户需要有数据表的读写权限,以及对元数据的读取权限。 cdm 密码 用户名密码。 - 使用Agent Agent功能待下线,无需配置。 - Agent Agent功能待下线,无需配置。 - 引用符号 可选参数,连接引用表名或列名时的分隔符号,参考对应数据库的产品文档进行配置。 " 驱动版本 不同类型的关系数据库,需要适配不同的驱动,更多详情请参见如何获取驱动。 - 单次请求行数 可选参数,单击“显示高级属性”后显示。 指定每次请求获取的行数,根据数据源端和作业数据规模的大小配置该参数。如果配置过大或过小,可能影响作业的时长。 1000 SSL加密 可选参数,单击“显示高级属性”后显示。 支持启用SSL加密传输。 是 连接属性 可选参数,单击“添加”可增加多个指定数据源的JDBC连接器的属性,参考对应数据库的JDBC连接器说明文档进行配置。 常见配置举例如下: socketTimeout:配置JDBC连接超时时间,单位为毫秒。 mysql.bool.type.transform:配置mysql读取时,是否将tinyint(1)解析成boolean类型,默认为true。 socketTimeout=300 连接私密属性 自定义私密连接属性。 xxx=xxx 父主题: 配置连接参数