• 关于

    oracle数据库监听端口

    的搜索结果

回答

题主您好,您的oracle数据库已经在1521端口上监听使用了吗?如果已经运行了oracle数据库,或许您可以检查一下ECS实例的“安全组”规则是否有阻止外网的访问。
dongshan8 2019-12-01 23:43:54 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地的 Oracle 数据库中的数据迁移至 RDS for MySQL 实例。数据传输 DTS (以下简称 DTS)可以实现结构迁移、全量数据迁移以及增量数据迁移。通过三种迁移方式的结合,可以在保持源 Oracle 数据库实例正常对外提供服务的情况下,实现 Oracle 数据库的不停服迁移。 注:当前 DTS 已经可以支持将本地的 Oracle 数据库中的数据迁移至 RDS for MySQL 实例时,数据的反向回流,帮助用户在应用按模块切换过程中,将 RDS for MySQL 实例中产生的数据变化同步回本地的 Oracle 数据库。如有需求,请提交工单咨询开通。 本小节简单介绍使用 DTS 进行 Oracle->RDS for MySQL 数据迁移的任务配置流程。 迁移步骤对于 Oracle->RDS for MySQL 的迁移,支持结构迁移、全量数据迁移以及增量数据迁移。各迁移类型的限制如下: 结构迁移DTS 会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象包括:表。其他对象如视图、同义词、触发器、存储过程、存储函数、包、自定义类型等暂不支持。 全量数据迁移DTS 会将源数据库迁移对象的存量数据全部迁移到目标 RDS for MySQL 实例。如果仅做全量数据迁移,不做增量数据迁移,迁移过程中,如果源 Oracle 数据库有数据更新的话,那么这部分数据增量变化不一定能够被迁移到目标 RDS for MySQL 中。所以,如果仅做全量数据迁移,不做增量数据迁移,为保证迁移数据一致性,在数据迁移过程中,源端的 Oracle 实例需停止写入。 增量数据迁移增量迁移过程中,DTS 会轮询并捕获源 Oracle 实例由于数据变化产生的重做日志 redo log,然后将数据变化的增量实时同步到目标 RDS for MySQL 实例,通过增量数据迁移可以实现目标 RDS for MySQL 实例同源 Oracle 数据库实例的实时数据同步。 迁移权限要求 当使用 DTS 进行 Oracle->RDS for MySQL 迁移时,在不同迁移类型情况下,对源和目标数据库的迁移帐号权限要求如下: 迁移类型 结构迁移 全量迁移 增量数据迁移 本地 Oracle 实例 schema 的 owner schema 的 owner SYSDBA 目的 RDS for MySQL 实例 待迁入 db 的读写权限 待迁入 db 的读写权限 待迁入 db 的读写权限 迁移前置条件 待迁移 Oracle 数据库的版本为 10g,11g,12c。Oracle 数据库实例开启 supplemental log,且要求 supplemental_log_data_pk,supplemental_log_data_ui 开启。Oracle 数据库实例要求开启 archive log 归档模式,保证归档日志能够被访问并有一定的保存周期。 数据类型映射关系由于 Oracle 和 MySQL 的数据类型并不是一一对应的,所以 DTS 在进行结构迁移时,会根据两种数据库类型的数据类型定义,进行类型映射,下面是数据类型映射关系。 Oracle 数据类型 MySQL 数据类型 DTS 是否支持 varchar2(n [char/byte]) varchar(n) 支持 nvarchar2[(n)] national varchar[(n)] 支持 char[(n [byte/char])] char[(n)] 支持 nchar[(n)]] national char[(n)] 支持 number[(p[,s])] decimal[(p[,s])] 支持 float(p)] double 支持 long longtext 支持 date datetime 支持 binary_float decimal(65,8) 支持 binary_double double 支持 timestamp[(fractional_seconds_precision)] datetime[(fractional_seconds_precision)] 支持 timestamp[(fractional_seconds_precision)]with local time zone datetime[(fractional_seconds_precision)] 支持 timestamp[(fractional_seconds_precision)]with local time zone datetime[(fractional_seconds_precision)] 支持 clob longtext 支持 nclob longtext 支持 blob longblob 支持 raw varbinary(2000) 支持 long raw longblob 支持 bfile — 不支持 interval year(year_precision) to mongth — 不支持 interval day(day_precision) to second[(fractional_seconds_precision)] — 不支持 对于 char 类型,当 char(n) 的定义长度 n 超过 255 时,DTS 会自动将类型转换为 varchar(n)。由于 MySQL 本身不支持类似 Oracle 中的 bfile、interval year to month、interval day to second 这三种数据类型,所以 DTS 在进行结构迁移时,无法在 MySQL 中找到合适的数据类型进行映射,因此这三种类型不会进行转化。迁移时如果表中含有这三种类型,会导致结构迁移失败,用户可以在指定迁移对象的时候,对需要迁移的对象中这三种类型的列进行排除。由于 MySQL 的 timestamp 类型不包含时区,而 Oracle 的 timestamp with time zone 和 timestamp with local time zone 两种类型默认带有时区信息,所以 DTS 在迁移这两种类型的数据时,会将其转换成 UTC 时区后存入目标 RDS for MySQL 实例。 迁移步骤下面详细介绍下使用 DTS 将本地 Oracle 数据库中的数据迁移到 RDS for MySQL 实例的任务配置流程。 创建 RDS for MySQL 实例在数据迁移过程中,如果待迁移的数据库在目标 RDS for MySQL 实例中不存在,那么 DTS 会自动创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合 RDS 定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在源 Oracle 与目标 RDS for MySQL 实例中名称不同。 对于这两种情况,用户需要在配置迁移任务之前,先在 RDS 控制台完成数据库创建。具体参考 RDS 数据库创建流程 RDS 使用手册。 创建迁移帐号迁移任务配置,需要提供 Oracle 数据库及目标 RDS 实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求。 如果您的源 Oracle 实例的迁移账号尚未创建,那么您可以参考 Oracle Grant 语法说明,创建满足要求的迁移账号。 RDS for MySQL 迁移账号的创建及授权操作详见 RDS 使用手册。 迁移任务配置当上面的所有前置条件都配置完成后,就可以开始迁移任务配置。下面详细介绍下具体的迁移步骤。 进入数据传输服务 DTS 控制台,单击右上角的创建迁移任务,正式开始任务配置。本地 Oracle 数据库实例及目标 RDS for MySQL 实例的连接信息配置。 这个步骤主要配置迁移任务名称,Oracle 数据库实例连接信息及目标 RDS for MySQL 实例连接信息。其中: 任务名称 DTS 为每个任务自动生成一个任务名称,任务名称没有唯一性要求。您可以根据需要修改任务名称,建议为任务配置具有业务意义的名称,便于后续的任务识别。 源实例信息 实例类型:选择 有公网 IP 的自建数据库数据库类型: 选择 Oracle主机名或IP地址: 配置 Oracle 访问地址,这个地址必须为公网访问方式端口:Oracle 数据库实例的监听端口SID:Oracle 数据库实例的 SID账号:Oracle 数据库实例的连接账号密码:上面指定的 Oracle 数据库实例的连接账号对应的密码 目标实例信息 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS for MySQL 实例的实例 ID。 DTS 支持经典网络和 VPC 网络的 RDS实例账号:RDS for MySQL 实例的连接账号密码:上面指定的 RDS for MySQL 实例连接账号对应的密码 当配置完连接信息后,单击右下角 授权白名单并进入下一步 进行白名单授权。这个步骤 DTS 会将 DTS 服务器的 IP 地址添加到目标 RDS for MySQL 实例的白名单中,避免因为 RDS 实例设置了白名单,导致 DTS 服务器连接不上 RDS for MySQL 实例导致迁移失败。 迁移对象及迁移类型配置。 迁移类型包括:结构迁移、全量数据迁移、增量数据迁移。默认选择 结构迁移+全量数据迁移。 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。 默认情况下,对象迁移到 RDS for MySQL 实例后,对象名与源 Oracle 数据库中一致。如果您迁移的对象在源实例与目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考 库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤。 任务预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 当任务进入增量数据迁移阶段,任务不会自动停止,且一旦源 Oracle 数据库实例有增量写入,增量数据就会自动同步到目标 RDS for MySQL 实例。增量数据迁移是个动态同步的过程,建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证。如果验证成功,那么可以停掉迁移任务,将业务切换到目标数据库。 至此,完成将本地 Oracle 数据库到 RDS for MySQL 实例的数据迁移任务配置。
2019-12-01 23:09:40 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地的 Oracle 数据库中的数据迁移至 RDS for MySQL 实例。数据传输 DTS (以下简称 DTS)可以实现结构迁移、全量数据迁移以及增量数据迁移。通过三种迁移方式的结合,可以在保持源 Oracle 数据库实例正常对外提供服务的情况下,实现 Oracle 数据库的不停服迁移。 注:当前 DTS 已经可以支持将本地的 Oracle 数据库中的数据迁移至 RDS for MySQL 实例时,数据的反向回流,帮助用户在应用按模块切换过程中,将 RDS for MySQL 实例中产生的数据变化同步回本地的 Oracle 数据库。如有需求,请提交工单咨询开通。 本小节简单介绍使用 DTS 进行 Oracle->RDS for MySQL 数据迁移的任务配置流程。 迁移步骤对于 Oracle->RDS for MySQL 的迁移,支持结构迁移、全量数据迁移以及增量数据迁移。各迁移类型的限制如下: 结构迁移DTS 会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象包括:表。其他对象如视图、同义词、触发器、存储过程、存储函数、包、自定义类型等暂不支持。 全量数据迁移DTS 会将源数据库迁移对象的存量数据全部迁移到目标 RDS for MySQL 实例。如果仅做全量数据迁移,不做增量数据迁移,迁移过程中,如果源 Oracle 数据库有数据更新的话,那么这部分数据增量变化不一定能够被迁移到目标 RDS for MySQL 中。所以,如果仅做全量数据迁移,不做增量数据迁移,为保证迁移数据一致性,在数据迁移过程中,源端的 Oracle 实例需停止写入。 增量数据迁移增量迁移过程中,DTS 会轮询并捕获源 Oracle 实例由于数据变化产生的重做日志 redo log,然后将数据变化的增量实时同步到目标 RDS for MySQL 实例,通过增量数据迁移可以实现目标 RDS for MySQL 实例同源 Oracle 数据库实例的实时数据同步。 迁移权限要求 当使用 DTS 进行 Oracle->RDS for MySQL 迁移时,在不同迁移类型情况下,对源和目标数据库的迁移帐号权限要求如下: 迁移类型 结构迁移 全量迁移 增量数据迁移 本地 Oracle 实例 schema 的 owner schema 的 owner SYSDBA 目的 RDS for MySQL 实例 待迁入 db 的读写权限 待迁入 db 的读写权限 待迁入 db 的读写权限 迁移前置条件 待迁移 Oracle 数据库的版本为 10g,11g,12c。Oracle 数据库实例开启 supplemental log,且要求 supplemental_log_data_pk,supplemental_log_data_ui 开启。Oracle 数据库实例要求开启 archive log 归档模式,保证归档日志能够被访问并有一定的保存周期。 数据类型映射关系由于 Oracle 和 MySQL 的数据类型并不是一一对应的,所以 DTS 在进行结构迁移时,会根据两种数据库类型的数据类型定义,进行类型映射,下面是数据类型映射关系。 Oracle 数据类型 MySQL 数据类型 DTS 是否支持 varchar2(n [char/byte]) varchar(n) 支持 nvarchar2[(n)] national varchar[(n)] 支持 char[(n [byte/char])] char[(n)] 支持 nchar[(n)]] national char[(n)] 支持 number[(p[,s])] decimal[(p[,s])] 支持 float(p)] double 支持 long longtext 支持 date datetime 支持 binary_float decimal(65,8) 支持 binary_double double 支持 timestamp[(fractional_seconds_precision)] datetime[(fractional_seconds_precision)] 支持 timestamp[(fractional_seconds_precision)]with local time zone datetime[(fractional_seconds_precision)] 支持 timestamp[(fractional_seconds_precision)]with local time zone datetime[(fractional_seconds_precision)] 支持 clob longtext 支持 nclob longtext 支持 blob longblob 支持 raw varbinary(2000) 支持 long raw longblob 支持 bfile — 不支持 interval year(year_precision) to mongth — 不支持 interval day(day_precision) to second[(fractional_seconds_precision)] — 不支持 对于 char 类型,当 char(n) 的定义长度 n 超过 255 时,DTS 会自动将类型转换为 varchar(n)。由于 MySQL 本身不支持类似 Oracle 中的 bfile、interval year to month、interval day to second 这三种数据类型,所以 DTS 在进行结构迁移时,无法在 MySQL 中找到合适的数据类型进行映射,因此这三种类型不会进行转化。迁移时如果表中含有这三种类型,会导致结构迁移失败,用户可以在指定迁移对象的时候,对需要迁移的对象中这三种类型的列进行排除。由于 MySQL 的 timestamp 类型不包含时区,而 Oracle 的 timestamp with time zone 和 timestamp with local time zone 两种类型默认带有时区信息,所以 DTS 在迁移这两种类型的数据时,会将其转换成 UTC 时区后存入目标 RDS for MySQL 实例。 迁移步骤下面详细介绍下使用 DTS 将本地 Oracle 数据库中的数据迁移到 RDS for MySQL 实例的任务配置流程。 创建 RDS for MySQL 实例在数据迁移过程中,如果待迁移的数据库在目标 RDS for MySQL 实例中不存在,那么 DTS 会自动创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合 RDS 定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在源 Oracle 与目标 RDS for MySQL 实例中名称不同。 对于这两种情况,用户需要在配置迁移任务之前,先在 RDS 控制台完成数据库创建。具体参考 RDS 数据库创建流程 RDS 使用手册。 创建迁移帐号迁移任务配置,需要提供 Oracle 数据库及目标 RDS 实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求。 如果您的源 Oracle 实例的迁移账号尚未创建,那么您可以参考 Oracle Grant 语法说明,创建满足要求的迁移账号。 RDS for MySQL 迁移账号的创建及授权操作详见 RDS 使用手册。 迁移任务配置当上面的所有前置条件都配置完成后,就可以开始迁移任务配置。下面详细介绍下具体的迁移步骤。 进入数据传输服务 DTS 控制台,单击右上角的创建迁移任务,正式开始任务配置。本地 Oracle 数据库实例及目标 RDS for MySQL 实例的连接信息配置。 这个步骤主要配置迁移任务名称,Oracle 数据库实例连接信息及目标 RDS for MySQL 实例连接信息。其中: 任务名称 DTS 为每个任务自动生成一个任务名称,任务名称没有唯一性要求。您可以根据需要修改任务名称,建议为任务配置具有业务意义的名称,便于后续的任务识别。 源实例信息 实例类型:选择 有公网 IP 的自建数据库数据库类型: 选择 Oracle主机名或IP地址: 配置 Oracle 访问地址,这个地址必须为公网访问方式端口:Oracle 数据库实例的监听端口SID:Oracle 数据库实例的 SID账号:Oracle 数据库实例的连接账号密码:上面指定的 Oracle 数据库实例的连接账号对应的密码 目标实例信息 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS for MySQL 实例的实例 ID。 DTS 支持经典网络和 VPC 网络的 RDS实例账号:RDS for MySQL 实例的连接账号密码:上面指定的 RDS for MySQL 实例连接账号对应的密码 当配置完连接信息后,单击右下角 授权白名单并进入下一步 进行白名单授权。这个步骤 DTS 会将 DTS 服务器的 IP 地址添加到目标 RDS for MySQL 实例的白名单中,避免因为 RDS 实例设置了白名单,导致 DTS 服务器连接不上 RDS for MySQL 实例导致迁移失败。 迁移对象及迁移类型配置。 迁移类型包括:结构迁移、全量数据迁移、增量数据迁移。默认选择 结构迁移+全量数据迁移。 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。 默认情况下,对象迁移到 RDS for MySQL 实例后,对象名与源 Oracle 数据库中一致。如果您迁移的对象在源实例与目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考 库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤。 任务预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 当任务进入增量数据迁移阶段,任务不会自动停止,且一旦源 Oracle 数据库实例有增量写入,增量数据就会自动同步到目标 RDS for MySQL 实例。增量数据迁移是个动态同步的过程,建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证。如果验证成功,那么可以停掉迁移任务,将业务切换到目标数据库。 至此,完成将本地 Oracle 数据库到 RDS for MySQL 实例的数据迁移任务配置。
2019-12-01 23:09:40 0 浏览量 回答数 0

云数据库新人专场

MySQL年付低至19.9,其它热门产品1元起购!

回答

详细解答可以参考官方帮助文档DTS在启动迁移之前,会进行前置预检查,本小节简单介绍Oracle->RDS For PPAS的预检查内容: 预检查项 检查内容 备注 源库连接性检查 检查DTS服务同Oracle实例的连通性 (1) 填写信息是否有误?如果填写信息有误,请修改后重新预检查(2) 检查Oracle是否开启监听端口 目的库连接性检查 检查DTS服务同目的RDS For PPAS实例的连通性 检查填写信息是否有误,如果有误请先修改后重新预检查 源库版本检查 检查Oracle实例的版本,DTS是否支持 DTS目前只支持10g,11g,12c三个版本 源库权限检查 检查Oracle实例访问账号的权限是否满足要求 如果权限不足,请参照上面的权限要求一节授权后,重新预检查 目的库权限检查 检查RDS For PPAS实例访问账号的权限是否满足要求 如果权限不足,请参照上面的权限要求一节授权后,重新预检查 同名对象存在性检查 检查待迁移对象在目标RDS For PPAS是否已经存在 如果检查失败,请将目标库中这些已经存在的对象删除后,重新进行预检查 源端同名对象存在性检查 检查待迁移对象中,要迁入目标同一个schema的对象是否同名 如果检查失败,可以参考 库表列映射 将重名对象进行重命名 源库日志模式检查 检查源库是否开启archive log 如果未开启,请启用后,重新预检查 约束完整性检查 检查待迁移对象依赖的父对象是否迁移 如果检查失败,那么可以修改迁移对象,同时迁移依赖的父对象后,重新预检查 DBLINK存在性检查 检查源库是否存在DBLINK 如果存在,那么需要修改迁移对象,不选择DBLINK 增量拓扑冲突检查 检查同一个迁移对象是否已经存在迁移链路 如果存在冲突链路,那么需要删除掉冲突链路后,重新预检查 字段类型检查 检查待迁移表的是否存在数据类型为long类型的字段 如果存在那么对应的表只能进行全量数据迁移,不能选择增量数据迁移 表是否存在主键或者唯一性非空索引检查 检查待迁移表是否包含主键或非空唯一键 如果存在那么对应的表只能进行全量数据迁移,不能选择增量数据迁移 补偿日志开启检查 检查是否开启supplemental_log 如果未开启,请启用后,重新预检查
2019-12-01 23:09:43 0 浏览量 回答数 0

问题

CentOS7使用firewalld打开关闭防火墙与端口  附ORACLE 数据库1158 152端口开启

1、firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disa...
ap1253j8y 2019-12-01 22:03:18 4078 浏览量 回答数 2

问题

PL/SQL Developer 远程连接Oracle 报错无法解析指定的标识符 ?报错

环境: 虚拟机中安装CentOS 6.3CentOS安装Oracle 11gr2客户机Win7 问题介绍: 已经在CentOS 启动了实例,监听;开放了1521端口;...
爱吃鱼的程序员 2020-06-23 14:44:31 0 浏览量 回答数 1

问题

如何配置迁移任务(一)

描述 通过这个接口进行数据迁移任务的配置,包括源/目标实例连接信息,迁移对象等。在任务成功启动之前,可以多次调用这个接口进行任务配置的修改。 请求参数 参数名称数据类型是否必须参数描述A...
云栖大讲堂 2019-12-01 21:27:21 958 浏览量 回答数 0

问题

安全组详解,新手必看教程

前言 不论你是新手还是已经对此有些了解,推荐再看一遍,因为安全组的设置选项就如图那些东西,但是我们可以通过规则做的事情就有很多了。 安全组顾名思义是为了安全所做的一些配置...
我的中国 2019-12-01 21:51:56 253288 浏览量 回答数 38

问题

oracle数据库基础知识精讲视频分享!

[size=;font-size:10.5000pt,10.5000pt] 课程简介:数据库基础知识、Oracle的环境搭建、Oracle体系结构、SQL语言基础、函数的使用、约束、索引、数据字典、分组查询、多表连接查...
sgkj123 2019-12-01 20:58:52 2127 浏览量 回答数 0

问题

UNIX/Linux系统取证之信息采集案例

UNIX/Linux系统取证之信息采集案例 在UNIX/Linux 系统取证中,及时收集硬盘的信息至关重要,《Unix/Linux网络日志分析与流量监控》一书中,将详细讨论各种常见系统进程系...
opensiem 2019-12-01 21:46:20 2034 浏览量 回答数 1

问题

OracleASM管理

Oracle ASM 管理 16.1 什么是ASM 自动存储管理即ASM(Automatic Storage Management),是Oracle提供的一项管理磁盘的功能,它是一种以纯软件方式实现...
男刊 2019-12-01 21:33:34 7934 浏览量 回答数 2

问题

程序员报错行为大赏-配置报错

Maven本地仓库配置报错:配置报错  GO语言配置什么的都没问题,但就是LiteIDE配置不好。。。:配置报错  Maven 配置nexus仓库 POM文件报错:配置报错  10个你可能从未用过的PHP函数:配置报错  QT...
问问小秘 2020-06-11 13:18:25 6 浏览量 回答数 1

回答

、安装前的准备 1. 安装方式选择 OceanBase是一个集群数据库,至少要三个节点。通常三个节点是要在三台机器上。有关OceanBase的介绍请参考官网 http://oceanbase.alipay.com/docs 。 官网上提供了一个安装包的下载,地址是: OceanBase安装包下载链接 。 这个安装包里的内容很多。很大一部分是OCP的安装包以及相关安装说明。详细查看 安装包组件说明 。 我们只需要里面的2个文件。 $unzip ocp-release.zip $cd ocp-release/ $tar zxvf ocp-setup.tar.gz $cd ocp_yh $ls -lrth obproxy-1.3.3-1506155.el7.x86_64.rpm oceanbase-1.4.60-1571952.el7.x86_64.rpm -rwxr-xr-x 1 admin admin 36M May 11 2018 oceanbase-1.4.60-1571952.el7.x86_64.rpm -rwxr-xr-x 1 admin admin 5.4M May 11 2018 obproxy-1.3.3-1506155.el7.x86_64.rpm 这两个文件就是我们后面安装需要的。一个是observer的安装包,一个是obproxy的安装包。 由于环境的权限限制,服务器之间不能直接打通ssh通道,并且默认也不允许开启80端口和图形化界面,导致我无法使用官网推荐的2种方式安装。于是,我就一步步从命令行下安装OceanBase集群。从这个步骤里也可以看出一些OceanBase的原理。 实际过程并不复杂,很容易掌握。 部署要求 项目 描述 机型要求 建议物理机。如果是vmware虚拟出来的虚拟机也行,只是cpu、内存和磁盘不要太低。 操作系统 推荐redhat 7.2, centos 7.2 。 7.x 应该也可以。具体问题具体分析。 内存 推荐64G以上,生产环境建议256G以上。如果只是研究功能 8G以上。比这个还小,后面使用不熟悉的话,会误以为有很多问题。 磁盘 推荐普通ssd即可,生产环境也不需要高密度ssd盘。如果只是研究功能,用sata或sas也行。就是性能会不怎么好(其他数据库同理)。 磁盘空间 内存的4倍以上。生产环境建议1T以上。 如果只是研究功能,至少也要100G以上。比这个还小,后面使用不熟悉的话,会误以为有问题。 文件系统 ext4, xfs都可以。 网卡 推荐千兆互联以上。生产环境建议万兆互联。节点间的网络延时对OB的性能会有很大影响,所有的分布式产品都如此。 CPU 至少16核以上,生产环境建议32核以上。cpu太少,没法体验OB的多租户功能。 3. OS环境准备 这里就参见官方文档 修改操作系统配置 ,挑几个重要的提一下。 ulimit用于限制shell启动进程所占用的资源。有两种方法可以修改资源限制,一种是通过启动时session级别指定,另外一种是修改/etc/security/limits.conf配置文件,全局生效。 OBServer进程涉及的几个限制包括线程最大栈空间大小(stack),最大文件句柄数(openfiles),core文件大小(core file size)。 [size=font-size: 10.5pt,10.5pt]$vi /etc/security/limits.conf添加 [size=font-size: 10.5pt,10.5pt]*  soft  nofile  655350 [size=font-size: 10.5pt,10.5pt]*  hard  nofile  655350 [size=font-size: 10.5pt,10.5pt]*  soft  stack 20480 [size=font-size: 10.5pt,10.5pt]*  hard stack 20480 [size=font-size: 10.5pt,10.5pt]* soft nproc 655360 [size=font-size: 10.5pt,10.5pt]* hard nproc 655360 [size=font-size: 10.5pt,10.5pt]*  soft  core unlimited [size=font-size: 10.5pt,10.5pt]*  hardcore unlimited 稍微提一下的是目录准备。每个节点都会写数据和日志。根据经验数据和日志盘在底层要分离。如果能在raid层面隔离是最好的。如果做不好,那就用LVM在逻辑层面做隔离(即做不同的LV) 下面是我的环境 $sudo lvs -a LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert data vgob -wi-ao---- 10.97t log vgob -wi-ao---- 1.05t $cat /etc/fstab LABEL=log1 /data/log1 ext4 defaults,noatime,nodiratime,nodelalloc,barrier=0 0 0 LABEL=data1 /data/1 xfs defaults,noatime,nodiratime,barrier=0 0 0 sysctl.conf修改 for oceanbase net.core.somaxconn = 2048 net.core.netdev_max_backlog = 10000 net.core.rmem_default = 16777216 net.core.wmem_default = 16777216 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.ip_local_port_range = 3500 65535 net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.tcp_syncookies = 0 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_fin_timeout = 15 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_slow_start_after_idle=0 vm.swappiness = 0 kernel.core_pattern = /data/1/core-%e-%p-%t vm.min_free_kbytes = 2097152 vm.max_map_count=655360 机器准备 IP Zone 描述 xxx.xxx.171.187 zone1 observer 节点,rootservice 所在机器之一 xxx.xxx.241.129 zone1 observer 节点 xxx.xxx.240.24 zone2 observer 节点,rootservice 所在机器之一 xxx.xxx.241.145 zone2 observer 节点 xxx.xxx.241.125 zone3 observer 节点,rootservice 所在机器之一 xxx.xxx.241.159 zone3 observer 节点 xxx.xxx..242.22 NA obproxy 机器,一台就够了,可以部署多台,也可以复用 observer节点。 zone 是对机器的划分。一个oceanbase集群的机器至少划分为三个zone。通常数据至少有三份,分布在每个zone里面。二、安装启动OBServer 安装软件包 OceanBase是一个集群,但是安装却很简单,只需要在每个节点安装一个observer的rpm包(有2个依赖包 snappy和lzo需要先安装一下),然后启动即可。 $sudo yum -y install snappy lzo $sudo rpm -ivh oceanbase-1.4.60-1571952.el7.x86_64.rpm 准备数据库目录 在启动 OBServer之前,需要准备一些数据目录。并且启动用户建议是 admin。 admin需要sudo权限。假设我要搭建的数据库集群叫 obdemo 。下面目录里会用到这个名字。 关于目录结构不多解释,待OB集群搭建成功后大家可以再去研究其目录。 su - admin mkdir -p /data/1/obdemo/ cd /data/1/obdemo/ mkdir -p etc3 sort_dir sstable mkdir -p /data/log1/obdemo/ cd /data/log1/obdemo/ mkdir -p clog etc2 ilog oob_clog slog mkdir -p /home/admin/oceanbase/store/obdemo cd /home/admin/oceanbase/store/obdemo/ ln -s /data/1/obdemo/sort_dir /home/admin/oceanbase/store/obdemo/sort_dir ln -s /data/1/obdemo/sstable /home/admin/oceanbase/store/obdemo/sstable ln -s /data/log1/obdemo/clog /home/admin/oceanbase/store/obdemo/clog ln -s /data/log1/obdemo/ilog /home/admin/oceanbase/store/obdemo/ilog ln -s /data/log1/obdemo/oob_clog /home/admin/oceanbase/store/obdemo/oob_clog ln -s /data/log1/obdemo/slog /home/admin/oceanbase/store/obdemo/slog $ls -lrth /home/admin/oceanbase/store/obdemo/ total 0 lrwxrwxrwx 1 admin admin 23 Oct 6 21:10 sort_dir -> /data/1/obdemo/sort_dir lrwxrwxrwx 1 admin admin 22 Oct 6 21:10 sstable -> /data/1/obdemo/sstable lrwxrwxrwx 1 admin admin 22 Oct 6 21:10 clog -> /data/log1/obdemo/clog lrwxrwxrwx 1 admin admin 22 Oct 6 21:10 ilog -> /data/log1/obdemo/ilog lrwxrwxrwx 1 admin admin 26 Oct 6 21:10 oob_clog -> /data/log1/obdemo/oob_clog lrwxrwxrwx 1 admin admin 22 Oct 6 21:10 slog -> /data/log1/obdemo/slog 从这个目录结构里就可以看出数据和日志是分开存储了。 启动observer 此前规划的6台机器,分属于3个zone。 启动参数 大部分相同,只是zone的名字要改一改。 $bin/observer --help bin/observer --help observer [OPTIONS] -h,--help print this help -z,--zone ZONE zone -p,--mysql_port PORT mysql port -P,--rpc_port PORT rpc port -N,--nodaemon don't run in daemon -n,--appname APPNAME application name -c,--cluster_id ID cluster id -d,--data_dir DIR OceanBase data directory -i,--devname DEV net dev interface -o,--optstr OPTSTR extra options string -r,--rs_list RS_LIST root service list -l,--log_level LOG_LEVEL server log level 所有zone1 机器的observer启动命令: cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -i bond0 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r 'xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881' -c 2018100601 -n obdemo -o "datafile_disk_percentage=50,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2" 高亮部分都是可以改的。在没有理解之前不要修改。 -n 指定的 appname,就是集群名,后面都会用到。 -r 后面列表里的ip 就是被选为rootservice的三台机器ip。 observer的启动目录必须是 /home/admin/oceanbase 。所以cd 那个命令不要忘记了。 datafile_disk_percentage=50 这个比例可以调整,默认是90(表示90%的磁盘分区空间会被OB占用)。如果你的磁盘空间想留一点给其他应用用。就缩小这个比例。当data和log目录是共用的时候,更要调小这个比例。否则observer启动会因为clog空间不足而失败。 $ps -ef | grep observer admin 62603 1 99 Oct06 ? 2-00:59:16 /home/admin/oceanbase/bin/observer -i bond0 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881 -c 2018100601 -n obdemo -o config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2 admin 108165 61410 0 11:30 pts/1 00:00:00 grep --color=auto observer 所有zone2 机器的启动命令: cd /home/admin/oceanbase && bin/observer -i bond0 -P 2882 -p 2881 -z zone2 -d /home/admin/oceanbase/store/obdemo -r 'xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881' -c 2018100601 -n obdemo -o "config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2" ps -ef | grep observer 所有zone3机器的启动命令 cd /home/admin/oceanbase && bin/observer -i bond0 -P 2882 -p 2881 -z zone3 -d /home/admin/oceanbase/store/obdemo -r 'xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881' -c 2018100601 -n obdemo -o "config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2" ps -ef | grep observer 此时,只是在每个机器上启动了observer,还并没有形成一个OceanBase集群。后面会初始化一个OceanBase集群。 备注:上面每个observer的启动参数很长,实际上只有第一次启动的时候需要这么写。等后面初始化OceanBase集群成功后,每个observer会自动把它所有参数写到一个配置文件里。默认在 /home/admin/oceanbase/etc/observer.config.bin 里, 这个配置文件很重要,所以observer允许额外通过参数config_additional_dir 指定存储多份,类似于oracle的控制文件。 三、初始化OceanBase集群 前面在每个机器节点上都启动了一个observer,其参数独特之处是都指定了一个 rootservice list。 -r 'xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881' 这里面有3个ip,是被设计为存储rootservice 的机器。 在初始化oceanbase集群之前,这三台机器里至少有两台机器的observer必须启动,并且以同样的参数启动。初次安装我们默认三台机器的observer都启动了。 清空所有数据文件(第一次不需要) pkill observer 等待几秒钟 /bin/rm /home/admin/oceanbase/log/log cd /data/log1/obdemo && /bin/rm -rf clog etc2 ilog oob_clog slog mkdir clog etc2 ilog oob_clog slog cd /data/1/obdemo && /bin/rm -rf etc3 sort_dir sstable mkdir etc3 sort_dir sstable ll ~/oceanbase/store/obdemo 这个命令是用于清空数据文件,重新执行后面步骤。第一次做的时候不需要(没有历史数据文件)。要做的时候,需要先到所有observer机器上 kill掉 observer,再跑该脚本。 登录observer 选rootservice里任意一个机器登录,登录observer $mysql -h127.1 -uroot -P2881 -p 空密码 此时进来之后,还不能执行 show database命令,因为元数据还没有构建好。 执行 bootstrap 然后在mysql命令行下执行 bootstrap mysql>alter system bootstrap ZONE 'zone1' SERVER 'xxx.xxx.171.187:2882', ZONE 'zone2' SERVER 'xxx.xxx.240.24:2882', ZONE 'zone3' SERVER 'xxx.xxx.241.125:2882'; 这个命令通常几秒钟就返回了。如果没有返回或者很久以后报错timeout了,那说明前面有observer启动参数指定不对。看看是不是zone名称不对,或者rootservicelist里的ip和port跟 -P和-p 指定的port不一致等等。 找到原因解决问题后,执行第1步清空历史数据文件,重头来过。 这一步成功后,一个 1-1-1的OceanBase集群就初始化成功了。此时退出mysql命令行,重新登录的时候就要换下面命令了。 $mysql -h127.1 -uroot@sys -P2881 oceanbase -p 空密码 MySQL [oceanbase]> show databases; +--------------------+ | Database | +--------------------+ | oceanbase | | information_schema | | mysql | | test | +--------------------+ 然而我准备了6台机器用于部署oceanbase集群,所以还需要把其他三台机器加入到 当前集群里。也就是扩容命令了。 扩容oceanbase集群 ALTER SYSTEM ADD SERVER 'ip:port' [,'ip:port'…] [ZONE=’zone_name’]; mysql> alter system add server 'xxx.xxx.241.129:2882' zone='zone1'; mysql> alter system add server 'xxx.xxx.241.145:2882' zone='zone2'; mysql> alter system add server 'xxx.xxx.241.159:2882' zone='zone3'; 注意端口号只需要指定 rpc port(2882), 以及zone不要加错。 加成功后,查看当前server列表 MySQL [oceanbase]> select zone,svr_ip,svr_port,with_rootserver ,build_version from __all_server order by zone, with_rootserver desc; +-------+----------------+----------+-----------------+-------------------------------------------------------------------------------+ | zone | svr_ip | svr_port | with_rootserver | build_version | +-------+----------------+----------+-----------------+-------------------------------------------------------------------------------+ | zone1 | xxx.xxx.171.187 | 2882 | 1 | 1.4.60_1571952-758a58e85846f9efb907b1c14057204cb6353846(Mar 9 2018 14:32:07) | | zone1 | xxx.xxx.241.129 | 2882 | 0 | 1.4.60_1571952-758a58e85846f9efb907b1c14057204cb6353846(Mar 9 2018 14:32:07) | | zone2 | xxx.xxx.240.24 | 2882 | 0 | 1.4.60_1571952-758a58e85846f9efb907b1c14057204cb6353846(Mar 9 2018 14:32:07) | | zone2 | xxx.xxx.241.145 | 2882 | 0 | 1.4.60_1571952-758a58e85846f9efb907b1c14057204cb6353846(Mar 9 2018 14:32:07) | | zone3 | xxx.xxx.241.125 | 2882 | 0 | 1.4.60_1571952-758a58e85846f9efb907b1c14057204cb6353846(Mar 9 2018 14:32:07) | | zone3 | xxx.xxx.241.159 | 2882 | 0 | 1.4.60_1571952-758a58e85846f9efb907b1c14057204cb6353846(Mar 9 2018 14:32:07) | +-------+----------------+----------+-----------------+-------------------------------------------------------------------------------+ 6 rows in set (0.00 sec) 备注:上面默认root@sys密码是空,生产环境一定要设置复杂密码。 MySQL [oceanbase]> alter user root identified by 'root';四、安装启动反向代理OBProxy 前面装好了一个 2-2-2的OceanBase集群,但是客户端要连接这个数据库集群,前面那种连接方式还不够好。因为要考虑到某个observer节点宕机问题。直连这个observer肯定不好。 此外,由于OceanBase是一个分布式数据库,数据可能分布在多个节点上,但具体在哪个机器上客户端是不知道的,所以需要一个反向代理OBProxy 来负责数据访问路由。 理论上obproxy可以安装在任何机器上。如安装在observer上,或者独立的机器上,或者应用服务器上。并且obproxy由于只做路由功能,非常轻量,无状态,支持安装多个obproxy。安装多个obproxy的时候,可以再前面再通过负载均衡机制(F5或者lvs,slb等)做一个vip,肩负起 obproxy的高可用和负载均衡作用。这样就不怕某个obproxy挂掉或者压力过大了。 安装obproxy rpm包 sudo rpm -ivh obproxy-1.3.3-1506155.el7.x86_64.rpm 目录权限改到admin用户下。 chown -R admin.admin /opt/taobao/install/obproxy 初始化obproxy用户 mysql> CREATE USER proxyro IDENTIFIED BY password '*e9c2bcdc178a99b7b08dd25db58ded2ee5bff050' ; mysql> GRANT SELECT ON . to proxyro; proxyro是个连接observer的只读帐号,obproxy会用到这个帐号。 启动obproxy 第一次启动obproxy的时候,也需要指定一些参数。如rootservice 列表。以及指定监听端口(2883,也可以写别的任意端口,不跟已有端口冲突即可) cd /opt/taobao/install/obproxy && bin/obproxy -r "xxx.xxx.171.187:2881; xxx.xxx.240.24:2881; xxx.xxx.241.125:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false" -c obdemo 查看日志确认是否有异常。 cd /opt/taobao/install/obproxy tail -f log/obproxy.进程号.log 通过obproxy连接一下OceanBase集群 $mysql -h xxx.xxx.242.22 -uroot@sys#obdemo -P2883 -p oceanbase 或者 $mysql -h xxx.xxx.242.22 -uobdemo:sys:root -P2883 -p oceanbase 可以看出 跟连接mysql很像,区别在于 user的格式。 oceanbase的user格式是 “用户名@租户名#集群名” 或者 "集群名:租户名:用户名“ 等。五、分配租户(实例) 前面用6台机器搭建了一个2-2-2的OceanBase集群。现在某个应用需要申请一个数据库。我们并不会直接把这个OceanBase集群给到应用使用。 实际上刚初始化的OceanBase集群默认只有一个sys租户,其规格很小(cpu/memory/disk)。 MySQL [oceanbase]> select * from __all_unit_config where name='sys_unit_config'; +----------------------------+----------------------------+----------------+-----------------+---------+---------+-------------+-------------+----------+----------+----------------+---------------------+ | gmt_create | gmt_modified | unit_config_id | name | max_cpu | min_cpu | max_memory | min_memory | max_iops | min_iops | max_disk_size | max_session_num | +----------------------------+----------------------------+----------------+-----------------+---------+---------+-------------+-------------+----------+----------+----------------+---------------------+ | 2018-10-06 21:05:49.881126 | 2018-10-06 21:05:49.881126 | 1 | sys_unit_config | 5 | 2.5 | 19423884214 | 16186570178 | 10000 | 5000 | 18578870894592 | 9223372036854775807 | +----------------------------+----------------------------+----------------+-----------------+---------+---------+-------------+-------------+----------+----------+----------------+---------------------+ 1 row in set (0.00 sec) 这个sys租户只有 2.5-5个cpu,15-18 G内存的规格。 所以要给业务帐号单独分配一个租户。这也是OceanBase使用的正确姿势。 有关租户、资源池等概念,详情参见 OceanBase开发和运维漫谈 创建资源池规格 create resource unit unit_2c10g512g, max_cpu=2, max_memory='10G', min_memory='10G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size=536870912; create resource unit unit_4c20g1024g, max_cpu=4, max_memory='20G', min_memory='20G', max_iops=20000, min_iops=5000, max_session_num=1000000, max_disk_size=1073741824; create resource unit unit_8c40g2048g, max_cpu=8, max_memory='40G', min_memory='40G', max_iops=50000, min_iops=10000, max_session_num=1000000, max_disk_size=2147483648; 查看资源规格 select * from __all_unit_config; 因为我的测试机器都是物理机,cpu和内存很大,所以我的多个规格定义的资源都比较大。大家可以根据自己情况修改。 分配资源池 create resource pool pool_demo unit = 'unit_16c50g4096g', unit_num = 1; select * from __all_resource_pool order by resource_pool_id desc ; 资源池分配后,只有创建租户并关联它才可以被使用。 创建租户 create tenant t_obdemo resource_pool_list=('pool_demo'); ---- alter tenant t_obdemo set variables ob_tcp_invited_nodes='xxx.xxx.0.0/16,127.0.0.1'; 租户名可以自定义。 注释的alter语句是设置租户连接的白名单,安全性跟高。不过只有在1.4.7版本以后才有。 新租户默认root密码为空。老规矩,首先改密码。 mysql -h xxx.xxx.242.22 -uroot@t_obdemo#obdemo -P2883 oceanbase -A -p alter user root identified by 'root'; 创建应用数据库和帐号 create database sbtest; grant all privileges on sbtest.* to sbuser@'%' identified by 'sbtest'; 连接应用数据库 mysql -h127.1 -usbuser@t_obdemo#obdemo -P2883 sbtest -A -psbtest MySQL [sbtest]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | sbtest | +--------------------+ 2 rows in set (0.02 sec) 总结 OceanBase的安装首先是在各个机器上安装并启动observer,第一次启动时指定rootservice list和相关参数。初始化OceanBase集群。成功后,就可以逐台机器 重启一下observer。关闭方式就是 pkill 或者kill。 着急的话就kill -9 。 启动方式就是 cd /home/admin/oceanbase; bin/observer 第二次启动不需要指定参数,参数都在参数文件里。初始化proxyro用户。安装obproxy软件并启动。第一次启动也要指定rootservice和相关参数。启动成功后可以重启obproxy。关闭方式就是pkill或者kill。启动方式就是 cd /opt/taobao/install/obproxy; bin/obproxy 第二次启动不需要指定参数,参数都在参数文件里。分配资源创建租户在租户里创建业务数据库和帐号。
游客2q7uranxketok 2021-02-24 11:12:22 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT