• 关于

    为了保证数据库中的

    的搜索结果

回答

详细解答可以参考官方帮助文档很多用户希望系统迁移时,尽可能不影响业务提供服务。然而在系统迁移过程中,如果业务不停服,那么迁移数据就会发生变化,无法保证迁移数据的一致性。为了保证迁移数据一致性,很多第三方迁移工具,要求在数据迁移期间,应用停止服务。整个迁移过程,业务可能需要停服数小时甚至上天,这对业务伤害极大。 为了降低数据库迁移门槛, 数据传输提供不停服迁移解决方案,让数据迁移过程中,业务停服时间降低到分钟级别。 不停服迁移的实现原理详见下图。 不停服迁移的迁移类型需包含结构迁移、全量数据迁移及增量数据迁移三个阶段。当进入增量数据迁移阶段时,目标实例会保持跟源数据库之间的数据实时同步,用户可以在目标数据库进行业务验证,当验证通过后,直接将业务切换到目标数据库,从而实现整个系统迁移。 由此可见,在整个迁移过程中,只有当业务从源实例切换到目标实例期间,会产生业务闪断,其他时间业务均能正常服务。
2019-12-01 23:09:37 0 浏览量 回答数 0

问题

DTS的增量迁移基本原理是什么?是否能够保证两边数据库实时的?

DTS的增量迁移是实时获取在迁移过程中,源数据库产生的增量数据,然后在全量迁移完成后,开始同步到目标RDS实例中。当增量迁移第一次追平源库的写入时,增量迁移的状态为无延迟,...
云栖大讲堂 2019-12-01 21:26:47 1359 浏览量 回答数 0

回答

Windows mssql2008在执行还原数据库操作时,数据库一直处于还原状态,导致数据库无法正常连接,一般是因为选择了 with norecovery 项导致,如下图中的选项: 1  选择 RECOVERY 选项,SQLSERVER 回滚数据库会提交所有未完成的事务,以保证数据库的一致性。还原完成数据库处于可用状态。 2  选择 NORECOVERY 选项,SQLSERVER 回滚数据库不提交所有未完成的事务,可以后续继续还原。还原完成数据库处于正在还原状态,为了保证能后续还原。 在还原过程中,数据库还原意外中断,会使数据库处于 NORECOVERY,数据库会让用户继续还原。这时只要提交事务就可以了。数据库可以处于正常模式,但是数据是不完成的,需要重新还原。 遇到正在还原的状态,如下图: 可以在新建查询里面执行  RESTORE database aa with recovery         (此处的  aa  指的是对应的数据库名称) 最后刷新数据库后,数据库状态即恢复正常。
KB小秘书 2019-12-02 01:28:04 0 浏览量 回答数 0

Quick BI 数据可视化分析平台

2020年入选全球Gartner ABI魔力象限,为中国首个且唯一入选BI产品

问题

ECS Windows SQL Server 2008还原数据库导致处于"还原状态"的解决方法

Windows mssql2008在执行还原数据库操作时,数据库一直处于还原状态,导致数据库无法正常连接,一般是因为选择了 with norecovery 项导致,如下图中的选项&#x...
boxti 2019-12-01 21:31:44 1113 浏览量 回答数 0

问题

全局事务服务 GTS 应用场景如何使用?

GTS 可应用在涉及数据库操作的多个领域,包括但不限于金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、手游、视频、物联网、车联网等,典型的应用场景如下: 解决使用 DRDS 进行分库...
猫饭先生 2019-12-01 21:24:41 982 浏览量 回答数 0

回答

可以,旧版本数据库中的数据迁移到新版本数据库里就行。 比如mysql5.1的迁移到mysql5.5的或者mysql5.6的 就把mysql5.1里的数据备份恢复到mysql5.5版本数据库里,然后把应用链接的数据库指向mysql5.5的就行。期间为了保证数据一致性,在迁移过程中,停止业务,建议在业务低峰期进行
养狐狸的猫 2019-12-02 03:01:20 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 使用数据传输服务(DTS)将本地数据库迁移到 RDS for MySQL,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。 背景信息 DTS 数据迁移支持 MySQL 的结构迁移、全量迁移和增量迁移。 结构迁移 DTS 会将本地数据库的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数。 全量迁移 DTS 会将本地数据库迁移对象的数据全部迁移到目标实例。如果用户还选择了增量迁移,那么全量迁移过程中,为了保证数据一致性,无主键的非事务表会被锁定,锁定期间这些表无法写入,锁定时长依赖于这些表的数据量大小,在这些无主键非事务表迁移完成后,锁才会释放。 增量迁移 增量迁移会将迁移过程进行数据变更同步到目标实例,如果迁移期间进行了 DDL 操作,那么这些结构变更不会迁移到目标实例。 迁移限制 将本地数据库迁移到 RDS 上有以下限制。 迁移过程中,不支持 DDL 操作 结构迁移不支持 event 的迁移 如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败 当选择增量迁移时,本地 MySQL 实例需要开启 binlog,且本地库的 binlog_format 要为 row。如果本地 MySQL 为5.6版本时,它的 binlog_row_image 还须设置为 full 前提条件 已完成 RDS 实例数据库的准备,可参见申请外网地址和 MySQL 5.7高可用版/5.5/5.6创建数据库和账号。 操作步骤 本例以有公网 IP 的本地数据库迁移到 RDS 上为例。 准备本地数据 在正式迁移之前,需要先在本地数据库和 RDS 实例中创建迁移账号,并在 RDS 实例中创建要迁移的数据库,并将要迁移的数据库的读写权限授权给迁移账号。不同的迁移类型需要不同的权限,如下表所示。 迁移类型 结构迁移 全量迁移 增量迁移 本地数据库 select select select replication slave replication client RDS 实例 读写权限 读写权限 读写权限 在本地数据库中创建迁移账号。CREATE USER 'username'@'host' IDENTIFIED BY 'password';参数说明: username:要创建的账号 host:指定该账号登录数据库的主机。如果是本地用户可以使用 localhost,如果想让该用户从任意主机登录,可以使用通配符 % password:该账号的登录密码 例:要创建账号为 William,密码为 Changme123 的账号从任意主机登录本地数据库,命令如下: CREATE USER 'William'@'%' IDENTIFIED BY 'Changme123'; 在本地数据库中给迁移账号授权,本地数据库中迁移账号的权限要求请参见上表。GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;参数说明: privileges:该账号的操作权限,如 SELECT、INSERT、UPDATE 等。如果要授权该账号所有权限,则使用 ALL databasename:数据库名。如果要授权该账号所有的数据库权限,则使用通配符 * tablename:表名。如果要授权该账号所有的表权限,则使用通配符 * username:要授权的账号名 host:授权登录数据库的主机名。如果是本地用户可以使用 localhost,如果想让该用户从任意主机登录,可以使用通配符 % WITH GRANT OPTION:授权该账号能使用GRANT命令,该参数为可选 例:授权账号 William 对所有数据库和表的所有权限,并可以从任意主机登录本地数据库,命令如下: GRANT ALL ON *.* TO 'William'@'%'; 说明 如果需要进行增量迁移,那么需要确认本地数据库的 binlog 是否开启并正确设置,执行以下步骤。 开启本地数据库的 binlog。 使用如下命令查询是否开启了binlog。show global variables like "log_bin";如果查询结果为 log_bin=OFF,那么本地数据库没有开启 binlog。为了使迁移过程中产生的增量数据能同步迁移,需要修改配置文件 my.cnf 中的如下参数。 log_bin=mysql_bin binlog_format=row server_id=大于 1 的整数 binlog_row_image=full //当本地 MySQL 版本大于 5.6 时,则需设置该项 修改完成后,重启 MySQL 进程。$mysql_dir/bin/mysqladmin -u root -p shutdown $mysql_dir/bin/safe_mysqld &其中,“mysql_dir”为MySQL安装目录。 正式迁移操作 数据准备完毕后,即可进入正式的迁移操作。 在 RDS 管理控制台 上单击迁移数据库,进入 DTS,如下图所示。 单击 创建在线迁移任务,进入 创建迁移任务 页面,如下图所示。 输入任务名称、本地数据库信息和目标数据库信息,单击 授权白名单并进入下一步,如下图所示。 任务名称:自定义任务名称,可以保持默认值 源库信息 实例类型:本地数据库的实例类型,可以选择有公网IP的自建数据库、ECS上的自建数据库、RDS实例、云数据库MongoDB 数据库类型:本地数据库的类型,可以选择 Oracle、MySQL、SQLServer、PostgreSQL、MongoDB 主机名或 IP 地址:本地数据库的公网地址 端口:本地数据库的公网端口 账号:本地数据库的迁移账号 密码:本地数据库迁移账号对应的密码 目标库信息 实例类型:默认为 RDS 实例 RDS 实例 ID:目标 RDS 实例的 ID。点击下拉菜单将自动联想当前登录 RDS 管理控制台 的账号的 RDS 实例,点击选择所需要的实例 账号:目标 RDS 数据库的迁移账号 密码:目标 RDS 数据库迁移账号对应的密码 择迁移类型,并在 迁移对象 中选择要迁移的对象,单击 > 将要迁移的对象放入已选择中,单击 预检查并启动,如下图所示。 说明 数据迁移只会将本地数据库的数据(结构)复制一份到目标数据库,并不会对本地数据库数据(结构)造成影响。 如果要修改迁移对象在目标数据库上的名字,可以在 已选择 列表右侧单击 编辑,修改已选择的对象名称,如上图4所示。 说明 以下以预检查不通过为例进行描述,如果预检查通过,请直接参见步骤 8。 系统显示预检查结果,如下图所示。 单击检测结果 为失败的检测项后的 !,查看失败详细信息,根据失败详细信息完成错误排查。 错误排查完毕后,在 迁移任务列表页面,选择当前迁移任务,单击 启动,如下图所示。 系统预检查通过后,单击确定,自动进行迁移任务,如下图所示。 后续操作 因迁移账号拥有读写权限,为了保证本地数据库安全,请在数据迁移完成后,删除本地数据库和 RDS 实例中的迁移账号。
2019-12-01 22:57:10 0 浏览量 回答数 0

回答

同一个业务可以由不同的技术方案实现,其实我倒是建议: 1. 在系统设计期间还是采用范式设计比较好,数据模型非常清晰; 2. 在DEV环境和SIT环境中,数据库的表带有外键,如果测试非常充分,那么数据库会起到数据库完整性校验的补充作用,反过来能促进改善应用代码的数据完整性校验功能; 3. 在PRE和PRD环境中,数据库的表不带外键,此时经过前一轮的完整测试,已经能保证应用的数据完整性,这时就去掉外键保证性能 4. 有时候为了简化查询过程,有可能也需要在子表中添加一些冗余字段
xninja 2019-12-02 02:04:10 0 浏览量 回答数 0

回答

是的,目前只能这样。 原因是redis-py为了保证Redis实例的线程安全,没有实现SELECT指令Redis 客户端实例可以安全地在线程间共享。从内部实现来说,只有在命令执行时才获取连接实例,完成后直接返回连接池,命令永不修改客户端实例的状态。但是,有一点需要注意:SELECT 命令。SELECT 命令允许切换当前连接使用的数据库。新的数据库保持被选中状态,直到选中另一个数据库或连接关闭。这会导致在返回连接池时,连接可能指定了别的数据库。因此,redis-py 没有在客户端实例中实现 SELECT 命令。如果要在同一个应用中使用多个 Redis 数据库,应该给第一个数据库创建独立的客户端实例(可能也需要独立的连接池)。
李博 bluemind 2019-12-02 02:01:07 0 浏览量 回答数 0

回答

vacuum freeze 命令表示强制对表或数据库进行freeze 操作。freeze 操作是为了保证整个数据库的最老最新事务差不能超过20亿,从而防止事务ID 发生回卷。在PostgreSQL 中,XID 是用32位无符号数来表示的,很容易发生溢出的情况,造成事务可见性混乱。为了解决这个问题,PostgreSQL:PostgreSQL中是使用2^31取模的方法来进行事务的比较同一个数据库中,存在的最旧和最新两个事务之间的年龄最多是2^31,即20亿freeze 操作会将表中过老的元组的xmin 赋值为特殊的XID FrozenTransactionId(3)。FrozenTransactionId为t_xmin的元组将会被其他所有的事务可见,这样该元组原来对应的XID 相当于被回收了,经过不断的处理,就可以控制一个数据库的最老的事务和最新的事务的年龄不超过20亿。
卓刀 2019-12-02 00:46:33 0 浏览量 回答数 0

问题

关于 Db类中的批处理batch操作

我个人而言,我使用最多就是读取文件的中的数据,进行批量入库 (oracle数据库),其中有个问题就是当我们更新或删除不存在的数据时,数据库并不会报错,但是为了保证数据能够尽可能的入库,我就必须要知道当前批量操作到底成功了多少条,把未能成功u...
小旋风柴进 2019-12-01 19:50:02 1287 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档因迁移账号拥有读写权限,为了保证本地数据库安全,请在数据迁移完成后,删除本地数据库和 RDS 实例中的迁移账号。
2019-12-01 22:57:10 0 浏览量 回答数 0

问题

迁移服务

迁移服务主要帮助用户把数据从本地数据库迁移到阿里云数据库,或者把阿里云数据库的一个实例迁移到另一实例中。阿里云数据库提供了数据传输服务DTS(Data Transfer Service)工具...
云栖大讲堂 2019-12-01 21:35:04 1147 浏览量 回答数 0

回答

使用数据传输服务(DTS)将本地数据库迁移到 阿里云的云数据库RDS,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。接下来我们将学习下如何使用DTS将本地数据库迁移到RDS上。 在正式迁移之前,需要先在本地数据库和RDS实例中创建迁移帐号,并在RDS实例中创建要迁移的数据库,并将要迁移的数据库的读写权限授权给迁移帐号。不同的迁移类型需要不同的权限,如下表所示。 1.在本地数据库中创建迁移账号 2.在本地数据库中给迁移账号授权,本地数据库中迁移账号的权限 3. 在 RDS 管理控制台 上单击【迁移数据库】进入DTS,如下图所示。 4.单击 【建在线迁移任务】进入 创建迁移任务 页面,如下图所示。  5.输入任务名称、本地数据库信息和目标数据库信息,单击【授权白名单并进入下一步】如下图所示。 6.择迁移类型,并在【迁移对象 】选择要迁移的对象,单击 > 将要迁移的对象放入【已选择 】,单击 【检查并启动】如图所示。 如果要修改迁移对象在目标数据库上的名字,可以在 已选择 列表右侧单击 编辑 ,修改已选择的对象名称。 7.系统显示预检查结果,如下图所示 8.单击检测结果为失败的检测项后的 !,查看失败详细信息,根据失败详细信息完成错误排查。 9.错误排查完毕后,在 迁移任务列表 页面,选择当前迁移任务,单击【启动】如下图所示 10.系统预检查通过后,单击【确定】,自动进行迁移任务,如下图所示。 注:为了保证本地数据库安全,请在数据迁移完成后,删除本地数据库和 RDS 实例中的迁移帐号。 答案来源网络,供参考,希望能帮助到您
问问小秘 2019-12-02 02:18:11 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 使用数据传输服务 (DTS) 将本地数据库迁移到 RDS for SQL Server,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。 背景信息 DTS 支持 SQL Server 数据结构迁移和全量迁移。 结构迁移 DTS 会将本地数据库的结构定义迁移到目标实例。目前DTS支持结构迁移的对象有:表、视图、表触发器、同义词、SQL 存储过程、SQL 函数、自定义类型、plan guid、rule、default。 全量迁移 DTS 会将本地数据库迁移对象的数据全部迁移到目标实例。如果在迁移过程中有增量更新的话,这些增量不会被迁移到目标库。所以建议在业务无写入时,使用 DTS 进行全量数据迁移。 迁移限制 将本地数据库迁移到 RDS 上有以下限制: 迁移过程中,不支持 DDL 操作。 结构迁移不支持 assemblies、库级存储过程、service broker、全文索引、全文目录、分布式 schema、分布式函数、CLR 标量函数、CLR 标值函数、内部表、聚合函数和系统的迁移。 如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败。 前提条件 已完成 RDS 实例数据库的准备,可参见设置内外网地址 和 创建数据库和账号SQL Server 2008 R2版。 操作步骤 本例以有公网 IP 的本地数据库迁移到 RDS 上为例。 准备本地数据 在正式迁移之前,需要先在本地数据库和RDS实例中创建迁移账号,并在RDS实例中创建要迁移的数据库,并将要迁移的数据库的读写权限授权给迁移账号。不同的迁移类型需要不同的权限,如下表所示。 迁移类型 结构迁移 全量迁移 本地数据库 select select RDS 实例 读写权限 读写权限 在本地数据库中创建迁移账号。create login username with password='password', default_database=mydb; go create user username for login username with default_schema=dbo; go参数说明: username:要创建的账号 password:该账号的登录密码 mydb:默认连接的数据库 dbo:默认的数据表 例:要创建账号为 William,密码为 Changme123 的账号访问数据 mydb 的数据表 dbo,命令如下: create login William with password='Changme123', default_database=mydb; go create user William for login William with default_schema=dbo; go 在本地数据库中给迁移账号授权,本地数据库中迁移账号的权限要求请参见上表。GRANT privileges ON tablename TO username WITH GRANT OPTION;参数说明: privileges:该账号的操作权限,如 SELECT、INSERT、UPDATE 等。如果要授权该账号所有权限,则使用 ALL tablename:表名。如果要授权该账号所有的表权限,则使用通配符 * username:要授权的账号名 WITH GRANT OPTION:授权该账号能使用GRANT命令,该参数为可选 例:授权账号 William 对所有数据库和表的所有权限,命令如下: GRANT ALL ON* TO William; 正式迁移操作 在 RDS 管理控制台 上单击迁移数据库,进入DTS,如下图所示。 单击创建在线迁移任务,进入创建迁移任务页面,如下图所示。 输入任务名称、本地数据库信息和目标数据库信息,单击授权白名单并进入下一步,如下图所示。 任务名称:自定义任务名称,可以保持默认值 源库信息 实例类型:本地数据库的实例类型,可以选择 有公网 IP 的自建数据库、ECS 上的自建数据库、RDS 实例、云数据库 MongoDB。 数据库类型:本地数据库的类型,可以选择 Oracle、MySQL、SQLServer、PostgreSQL、MongoDB。 主机名或IP地址:本地数据库的公网地址。 端口:本地数据库的公网端口。 账号:本地数据库的迁移账号。 密码:本地数据库迁移账号对应的密码。 目标库信息 实例类型:默认为 RDS 实例。 RDS实例ID:目标 RDS 实例的 ID。单击下拉菜单将自动联想当前登录管理控制台的账号的 RDS 实例,点击选择所需要的实例。 数据库名称:要迁移到目标数据库的名称。 账号:目标 RDS 数据库的迁移账号。 密码:目标 RDS 数据库迁移账号对应的密码。 择迁移类型,并在迁移对象中选择要迁移的对象,单击>将要迁移的对象放入已选择中,单击预检查并启动,如下图所示。 说明 数据迁移只会将本地数据库的数据(结构)复制一份到目标数据库,并不会对本地数据库数据(结构)造成影响 数据迁移过程中,不支持DDL操作,如进行DDL操作可能导致迁移失败 DTS增量迁移的时间最长支持15天,如果超过15天不停止任务,系统资源可能被回收 如果要修改迁移对象在目标数据库上的名字,可以在已选择列表右侧单击编辑 ,修改已选择的对象名称,如上图中4所示。 说明 以下以预检查不通过为例进行描述,如果预检查通过,请直接参见步骤 8。 系统显示预检查结果,如下图所示。 单击检测结果为失败的检测项后的!,查看失败详细信息,根据失败详细信息完成错误排查。 错误排查完毕后,在迁移任务列表页面,选择当前迁移任务,单击启动,如下图所示。 系统预检查通过后,单击确定,自动进行迁移任务,如下图所示。 后续操作 为了保证本地数据库安全,请在数据迁移完成后,删除本地数据库和 RDS 实例中的迁移账号。
2019-12-01 22:57:13 0 浏览量 回答数 0

回答

MongoDB ACID事务支持 这里要有一定的关系型数据库的事务的概念,不然不一定能理解的了这里说的事务概念。 下面说一说MongoDB的事务支持,这里可能会有疑惑,前面我们在介绍MongoDB时,说MongoDB是一个NoSQL数据库,不支持事务。这里又介绍MongoDB的事务。这里要说明一下MongoDB的事务支持跟关系型数据库的事务支持是两码事,如果你已经非常了解关系型数据库的事务,通过下面一副图对比MongoDB事务跟MySQL事务的不同之处。 MongoDB是如何实现事务的ACID? 1)MongoDB对原子性(Atomicity)的支持 原子性在Mongodb中到底是一个什么概念呢?为什么说支持但又说Mongodb的原子性是单行/文档级原子性,这里提供了一个MongoDB更新语句样例,如下图: MongoDB是如何实现事务的ACID? 更新“username”等于“tj.tang”的文档,更新salary、jobs、hours字段。这里对于这三个字段Mongodb在执行时要么都更新要么都不更新,这个概念在MySQL中可能你没有考虑过,但在MongoDB中由于文档可以嵌套子文档可以很复杂,所以Mongodb的原子性叫单行/文档级原子性。 对于关系型数据库的多行、多文档、多语句原子性目前Mongodb是不支持的,如下情况: MongoDB是如何实现事务的ACID? MongoDB更新条件为工资小于50万的人都把工资调整为50万,这就会牵扯到多文档更新原子性。如果当更新到Frank这个文档时,出现宕机,服务器重启之后是无法像关系型数据库那样做到数据回滚的,也就是说处理这种多文档关系型数据库事务的支持,但MongoDB不支持。那么怎么解决Mongodb这个问题呢?可以通过建模,MongoDB不是范式而是反范式的设计,通过大表和小表可以把相关的数据放到同一个文档中去。然后通过一条语句来执行操作。 2)MongoDB对一致性(consistency)的支持 对于数据一致性来说,传统数据库(单机)跟分布式数据库(MongoDB)对于数据一致性是不太一样的,怎么理解呢?如下图: MongoDB是如何实现事务的ACID? 对于传统型数据库来说,数据一致性主要是在单机上,单机的问题主要是数据进来时的规则检验,数据不能被破坏掉。而在分布式数据库上,因为他们都是多节点分布式的,我们讲的一致性往往就是讲的各个节点之间的数据是否一致。而MongoDB在这点上做的还是不错的,MongoDB支持强一致性或最终一致性(弱一致性),MongoDB的数据一致性也叫可调一致性,什么意思呢?如下图: MongoDB是如何实现事务的ACID? MongoDB的可调一致性,也就是可以自由选择强一致性或最终一致性,如果你的应用场景是前台的方式可以选择强一致性,如果你的应用场景是后台的方式(如报表)可以选择弱一致性。 一致性 上面我们讲到了通过将数据冗余存储到不同的节点来保证数据安全和减轻负载,下面我们来看看这样做引发的一个问题:保证数据在多个节点间的一致性是非常困难的。在实际应用中我们会遇到很多困难,同步节点可能会故障,甚至会无法恢复,网络可能会有延迟或者丢包,网络原因导致集群中的机器被分隔成两个不能互通的子域等等。在NoSQL中,通常有两个层次的一致性:第一种是强一致性,既集群中的所有机器状态同步保持一致。第二种是最终一致性,既可以允许短暂的数据不一致,但数据最终会保持一致。我们先来讲一下,在分布式集群中,为什么最终一致性通常是更合理的选择,然后再来讨论两种一致性的具体实现结节。 关于CAP理论 为什么我们会考虑削弱数据的一致性呢?其实这背后有一个关于分布式系统的理论依据。这个理论最早被Eric Brewer提出,称为CAP理论,尔后Gilbert和Lynch对CAP进行了理论证明。这一理论首先把分布式系统中的三个特性进行了如下归纳: 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。 分区容忍性(P):集群中的某些节点在无法联系后,集群整体是否还能继续进行服务。 而CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。 要保证数据强一致性,最简单的方法是令写操作在所有数据节点上都执行成功才能返回成功,也就是同步概念。而这时如果某个结点出现故障,那么写操作就成功不了了,需要一直等到这个节点恢复。也就是说,如果要保证强一致性,那么就无法提供7×24的高可用性。 而要保证可用性的话,就意味着节点在响应请求时,不用完全考虑整个集群中的数据是否一致。只需要以自己当前的状态进行请求响应。由于并不保证写操作在所有节点都写成功,这可能会导致各个节点的数据状态不一致。 CAP理论导致了最终一致性和强一致性两种选择。当然,事实上还有其它的选择,比如在Yahoo的PNUTS中,采用的就是松散的一致性和弱可用性结合的方法。但是我们讨论的NoSQL系统没有类似的实现,所以我们在后续不会对其进行讨论。 强一致性 强一致性的保证,要求所有数据节点对同一个key值在同一时刻有同样的value值。虽然实际上可能某些节点存储的值是不一样的,但是作为一个整体,当客户端发起对某个key的数据请求时,整个集群对这个key对应的数据会达成一致。下面就举例说明这种一致性是如何实现的。 假设在我们的集群中,一个数据会被备份到N个结点。这N个节点中的某一个可能会扮演协调器的作用。它会保证每一个数据写操作会在成功同步到W个节点后才向客户端返回成功。而当客户端读取数据时,需要至少R个节点返回同样的数据才能返回读操作成功。而NWR之间必须要满足下面关系:R+W>N 下面举个实在的例子。比如我们设定N=3(数据会备份到A、B、C三个结点)。比如值 employee30:salary 当前的值是20000,我们想将其修改为30000。我们设定W=2,下面我们会对A、B、C三个节点发起写操作(employee30:salary, 30000),当A、B两个节点返回写成功后,协调器就会返回给客户端说写成功了。至于节点C,我们可以假设它从来没有收到这个写请求,他保存的依然是20000那个值。之后,当一个协调器执行一个对employee30:salary的读操作时,他还是会发三个请求给A、B、C三个节点: 如果设定R=1,那么当C节点先返回了20000这个值时,那我们客户端实际得到了一个错误的值。 如果设定R=2,则当协调器收到20000和30000两个值时,它会发现数据不太正确,并且会在收到第三个节点的30000的值后判断20000这个值是错误的。 所以如果要保证强一致性,在上面的应用场景中,我们需要设定R=2,W=2 如果写操作不能收到W个节点的成功返回,或者写操作不能得到R个一致的结果。那么协调器可能会在某个设定的过期时间之后向客户端返回操作失败,或者是等到系统慢慢调整到一致。这可能就导致系统暂时处于不可用状态。 对于R和W的不同设定,会导致系统在进行不同操作时需要不同数量的机器节点可用。比如你设定在所有备份节点上都写入才算写成功,既W=N,那么只要有一个备份节点故障,写操作就失败了。一般设定是R+W = N+1,这是保证强一致性的最小设定了。一些强一致性的系统设定W=N,R=1,这样就根本不用考虑各个节点数据可能不一致的情况了。 HBase是借助其底层的HDFS来实现其数据冗余备份的。HDFS采用的就是强一致性保证。在数据没有完全同步到N个节点前,写操作是不会返回成功的。也就是说它的W=N,而读操作只需要读到一个值即可,也就是说它R=1。为了不至于让写操作太慢,对多个节点的写操作是并发异步进行的。在直到所有的节点都收到了新的数据后,会自动执行一个swap操作将新数据写入。这个操作是原子性和一致性的。保证了数据在所有节点有一致的值。 最终一致性 像Voldemort,Cassandra和Riak这些类Dynamo的系统,通常都允许用户按需要设置N,R,W三个值,即使是设置成W+R<= N也是可以的。也就是说他允许用户在强一致性和最终一致性之间自由选择。而在用户选择了最终一致性,或者是W 3)MongoDB对隔离性(isolation)的支持 在关系型数据库中,SQL2定义了四种隔离级别,分别是READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。但是很少有数据库厂商遵循这些标准,比如Oracle数据库就不支持READ UNCOMMITTED和REPEATABLE READ隔离级别。而MySQL支持这全部4种隔离级别。每一种级别都规定了一个事务中所做的修改,哪些在事务内核事务外是可见的,哪些是不可见的。为了尽可能减少事务间的影响,事务隔离级别越高安全性越好但是并发就越差;事务隔离级别越低,事务请求的锁越少,或者保持锁的时间就越短,这也就是为什么绝大多数数据库系统默认的事务隔离级别是RC。 下图展示了几家不同的数据库厂商的不同事物隔离级别。 MongoDB是如何实现事务的ACID? MongoDB在3.2之前使用的是“读未提交”,这种情况下会出现“脏读”。但在MongoDB 3.2开始已经调整为“读已提交”。 下面说说每种隔离级别带来的问题: READ-UNCOMMITTED(读尚未提交的数据) 在这个级别,一个事务的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,这也被称为“脏读(dirty read)”。这个级别会导致很多问题,从性能上来说,READ UNCOMMITTED不会比其他的级别好太多,但却缺乏其他级别的很多好处,除非真的有非常必要的理由,在实际应用中一般很少使用。 READ-COMMITTED(读已提交的数据) 在这个级别,能满足前面提到的隔离性的简单定义:一个事务开始时,只能“看见”已经提交的事务所做的修改。换句话说,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。这个级别有时候也叫“不可重复读(non-repeatable read)”,因为两次执行同样的查询,可能会得到不一样的结果。 REPEATABLE-READ(可重复读) 在这个级别,保证了在同一个事务中多次读取统一记录的结果是一致的。MySQL默认使用这个级别。InnoDB和XtraDB存储引擎通过多版本并发控制MVCC(multiversion concurrency control)解决了“幻读”和“不可重复读”的问题。通过前面的学习我们知道RR级别总是读取事务开始那一刻的快照信息,也就是说这些数据数据库当前状态,这在一些对于数据的时效特别敏感的业务中,就很可能会出问题。 SERIALIZABLE(串行化) 在这个级别,它通过强制事务串行执行,避免了前面说的一系列问题。简单来说,SERIALIZABLE会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题。实际应用中也很少在本地事务中使用SERIALIABLE隔离级别,主要应用在InnoDB存储引擎的分布式事务中。 4)MongoDB对持久性(durability)的支持 对于数据持久性来说,在传统数据库中(单机)的表现为服务器任何时候发生宕机都不需要担心数据丢失的问题,因为有方式可以把数据永久保存起来了。一般都是通过日志来保证数据的持久性。通过下图来看一下传统数据库跟MongoDB对于数据持久性各自所使用的方式。 MongoDB是如何实现事务的ACID? 从上图可以看出,MongoDB同样是使用数据进来先写日志(日志刷盘的速度是非常快)然后在写入到数据库中的这种方式来保证数据的持久性,如果出现服务器宕机,当启动服务器时会从日志中读取数据。不同的是传统数据库这种方式叫做“WAL” Write-Ahead Logging(预写日志系统),而MongoDB叫做“journal”。此外MongoDB在数据持久性上这点可能做的更好,MongoDB的复制默认节点就是三节点以上的复制集群,当数据到达主节点之后会马上同步到从节点上去。
景凌凯 2019-12-02 02:05:12 0 浏览量 回答数 0

问题

DTS迁移过程中,是否会锁表,对源数据库是否有影响?

如果配置迁移任务时,选择了全量数据迁移和增量数据迁移,那么在全量数据迁移过程中,DTS会判断源数据库中是否存在非事务且无主键的表,如果存在,那么为了保证迁移数据一致性&#...
云栖大讲堂 2019-12-01 21:26:47 807 浏览量 回答数 0

问题

使用 DTS 迁移 PPAS 数据

使用数据传输服务(DTS)将本地数据库迁移到 RDS for PPAS,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。迁移过程中,对本地的 Oracle 数据库...
云栖大讲堂 2019-12-01 21:41:01 1084 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地 SQL Server 数据库实例的数据迁移到 RDS for SQL Server 实例。SQL Server 迁移支持增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 SQL Server 数据库的迁移工作。 本小节简单介绍使用数据传输服务 DTS(以下简称 DTS) 进行 SQL Server->RDS for SQL Server 数据迁移的任务配置流程。 迁移类型对于 SQL Server->RDS for SQL Server 数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下: 结构迁移 DTS 将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、表触发器、同义词、SQL 存储过程、SQL 函数、plan guid、自定义类型、rule、default。 全量数据迁移 全量迁移将 SQL Server 实例的存量数据全部迁移到目标 RDS 实例。如果您只进行全量数据迁移,那么迁移过程中本地 SQL Server 数据库实例新增的业务写入不会被同步到目标 RDS 实例。 如果您还选择了增量数据迁移,那么迁移过程中,本地 SQL Server 数据库实例的增量写入数据会被同步到目标 RDS 实例。 迁移限制 当前 SQL Server 结构迁移和全量数据迁移支持 SQL Server 2005,2008,2008 R2,2012 和 2016 版本,增量数据迁移支持 SQL Server 2008,2008 R2,2012 和 2014 版本。如果迁移的对象使用了对象名映射功能,则有一定几率导致依赖该对象的其他对象迁移失败。不支持 sql_variant 数据类型。结构迁移不支持 assemblies、库级存储过程、service broker、全文索引、全文目录、分布式 schema、分布式函数、CLR 标量函数、CLR 标值函数、内部表、聚合函数、系统的迁移。如果使用结构迁移 + 全量数据迁移 + 增量数据迁移,在结构迁移开始后,增量数据迁移开始前,请不要对迁移涉及的对象进行 DDL 操作,否则有一定几率会导致迁移失败。增量迁移的限制如下: 有限支持 DDL 语句同步,具体支持的 DDL 语句请参考 增量数据迁移过程中支持同步的 DDL 操作 章节。只支持含有聚簇索引,且聚簇索引为主键或者唯一键的表。不支持只更新大字段的 update 语句的同步。不支持含有计算列的表。一个增量迁移任务只支持一个数据库的迁移。如果同时有多个数据库需要进行增量数据迁移,那么需要创建多个迁移任务。 增量数据迁移过程中支持同步的增量数据迁移过程中支持同步的 DDL 操作 增量迁移过程中支持同步的 DDL 操作及其限制条件(在括号内说明)包括: CREATE TABLE (不支持函数,分区,默认值)ALTER TABLE … ADD COLUMN (不支持默认值)ALTER TABLE … DROP COLUMNALTER TABLE … ALTER COLUMN (不支持默认值)CREATE INDEX (不支持 index 属性)SP_RENAME table_nameSP_RENAME column_name 迁移权限要求当使用 DTS 进行 SQL Server 迁移时,不同迁移类型,对本地 SQL Server 数据库实例及目标 RDS for SQL Server 实例的迁移账号权限要求如下: 迁移类型 结构迁移 全量迁移 增量迁移 本地 SQLServer 数据库实例 select select sysadmin 目的 RDS for SQL Server 实例 读写权限 读写权限 读写权限 迁移流程数据传输服务在进行 SQL Server 上云迁移时,为了解决对象间的依赖,提高迁移成功率。 结构对象及数据的迁移顺序如下: 进行结构对象 表、视图、同义词、自定义类型、rule、default、plan guid 的迁移。全量数据迁移。进行结构对象 SQL 存储过程、SQL 函数、触发器、外键 的迁移。增量数据迁移。 如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移100%,全量迁移100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3)中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。待迁移状态显示为“迁移完成”后,表示全量数据迁移任务已经完成,这时可以安全地手动结束任务。 迁移任务配置下面详细介绍使用 DTS 将本地的 SQL Server 迁移到 RDS for SQL Server 的任务配置流程。 RDS 实例数据库创建在数据迁移过程中,如果待迁移的数据库在目标 RDS for SQL Server 实例中不存在,那么 DTS 自动会创建同名的数据库。但是对于如下两种情况,您需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合:RDS 定义规范 (由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在本地 SQL Server 数据库实例跟目标 RDS for SQL Server 实例中名称不同。 对于这两种情况,您需要在配置迁移任务之前,先在 RDS 控制台完成 RDS for SQL Server 实例中数据库的创建。具体参考 RDS 数据库创建流程 RDS 使用手册。 迁移账号创建迁移任务配置,需要提供本地 SQL Server 数据库实例及目标 RDS 实例的迁移账号。迁移账号所需权限详见上文的迁移权限要求。 如果本地 SQL Server 数据库实例的迁移账号尚未创建,那么您可以参考 SQL Server User 创建,创建满足权限要求的迁移账号。 如果目标 RDS for SQL Server 实例迁移账号尚未创建,那么您可以参考 RDS 账号创建流程,创建对目标 RDS for SQL Server 实例有读写权限的迁移账号。 其他准备工作如果您需要进行不停机迁移,那么还需要设置本地 SQL Server 数据库实例日志格式为 full。 如果本地 SQL Server 数据库实例的日志格式不为 full,那么需要通过下面两个步骤设置: 在源数据库执行: alter database database_name set recovery_model_desc=’full’, 其中 database_name 为需要迁移的数据库名。为了保证开启完整日志生效,需要在源数据库进行一次日志备份,在源数据库执行:BACKUP LOG database_name to DISK=backup_place WITH init , 其中 database_name 为待迁移的数据库名,backup_place 为备份文件存储的地址。 迁移任务配置当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。 进入数据传输 DTS 控制台,点击右上角的创建迁移任务,开始任务配置。本地 SQL Server 数据库实例及目标 RDS for SQL Server 实例连接信息配置。 在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中: 任务名称 默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。 源实例连接信息 实例类型:选择 有公网 IP 的自建数据库 数据库类型:选择 SQL Server主机名或IP地址:配置本地 SQL Serever 数据库实例的访问地址,这个地址必须为公网访问方式端口:SQL Server 实例监听端口数据库账号:SQL Server 数据库实例访问账号数据库密码:上面指定的 SQL Server 访问账号对应的数据库实例密码 目标 RDS 实例连接信息 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS for SQL Server 实例的实例 ID。 DTS 支持经典网络和 VPC 网络的 RDS 实例数据库账号:RDS for SQL Server 实例的连接账号数据库密码:上面指定的数据库账号对应的数据库实例密码 迁移对象及迁移类型配置。 迁移类型 DTS 支持结构迁移、全量数据迁移、增量数据迁移。 如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。 如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。 迁移对象 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。默认情况下,对象迁移到 RDS 实例后,对象名跟本地 SQL Server 数据库实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤 预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。 至此,完成将本地 SQL Server 数据库实例到 RDS for SQL Server 实例的数据迁移任务配置。
2019-12-01 23:09:42 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地 SQL Server 数据库实例的数据迁移到 RDS for SQL Server 实例。SQL Server 迁移支持增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 SQL Server 数据库的迁移工作。 本小节简单介绍使用数据传输服务 DTS(以下简称 DTS) 进行 SQL Server->RDS for SQL Server 数据迁移的任务配置流程。 迁移类型对于 SQL Server->RDS for SQL Server 数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下: 结构迁移 DTS 将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、表触发器、同义词、SQL 存储过程、SQL 函数、plan guid、自定义类型、rule、default。 全量数据迁移 全量迁移将 SQL Server 实例的存量数据全部迁移到目标 RDS 实例。如果您只进行全量数据迁移,那么迁移过程中本地 SQL Server 数据库实例新增的业务写入不会被同步到目标 RDS 实例。 如果您还选择了增量数据迁移,那么迁移过程中,本地 SQL Server 数据库实例的增量写入数据会被同步到目标 RDS 实例。 迁移限制 当前 SQL Server 结构迁移和全量数据迁移支持 SQL Server 2005,2008,2008 R2,2012 和 2016 版本,增量数据迁移支持 SQL Server 2008,2008 R2,2012 和 2014 版本。如果迁移的对象使用了对象名映射功能,则有一定几率导致依赖该对象的其他对象迁移失败。不支持 sql_variant 数据类型。结构迁移不支持 assemblies、库级存储过程、service broker、全文索引、全文目录、分布式 schema、分布式函数、CLR 标量函数、CLR 标值函数、内部表、聚合函数、系统的迁移。如果使用结构迁移 + 全量数据迁移 + 增量数据迁移,在结构迁移开始后,增量数据迁移开始前,请不要对迁移涉及的对象进行 DDL 操作,否则有一定几率会导致迁移失败。增量迁移的限制如下: 有限支持 DDL 语句同步,具体支持的 DDL 语句请参考 增量数据迁移过程中支持同步的 DDL 操作 章节。只支持含有聚簇索引,且聚簇索引为主键或者唯一键的表。不支持只更新大字段的 update 语句的同步。不支持含有计算列的表。一个增量迁移任务只支持一个数据库的迁移。如果同时有多个数据库需要进行增量数据迁移,那么需要创建多个迁移任务。 增量数据迁移过程中支持同步的增量数据迁移过程中支持同步的 DDL 操作 增量迁移过程中支持同步的 DDL 操作及其限制条件(在括号内说明)包括: CREATE TABLE (不支持函数,分区,默认值)ALTER TABLE … ADD COLUMN (不支持默认值)ALTER TABLE … DROP COLUMNALTER TABLE … ALTER COLUMN (不支持默认值)CREATE INDEX (不支持 index 属性)SP_RENAME table_nameSP_RENAME column_name 迁移权限要求当使用 DTS 进行 SQL Server 迁移时,不同迁移类型,对本地 SQL Server 数据库实例及目标 RDS for SQL Server 实例的迁移账号权限要求如下: 迁移类型 结构迁移 全量迁移 增量迁移 本地 SQLServer 数据库实例 select select sysadmin 目的 RDS for SQL Server 实例 读写权限 读写权限 读写权限 迁移流程数据传输服务在进行 SQL Server 上云迁移时,为了解决对象间的依赖,提高迁移成功率。 结构对象及数据的迁移顺序如下: 进行结构对象 表、视图、同义词、自定义类型、rule、default、plan guid 的迁移。全量数据迁移。进行结构对象 SQL 存储过程、SQL 函数、触发器、外键 的迁移。增量数据迁移。 如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移100%,全量迁移100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3)中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。待迁移状态显示为“迁移完成”后,表示全量数据迁移任务已经完成,这时可以安全地手动结束任务。 迁移任务配置下面详细介绍使用 DTS 将本地的 SQL Server 迁移到 RDS for SQL Server 的任务配置流程。 RDS 实例数据库创建在数据迁移过程中,如果待迁移的数据库在目标 RDS for SQL Server 实例中不存在,那么 DTS 自动会创建同名的数据库。但是对于如下两种情况,您需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合:RDS 定义规范 (由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在本地 SQL Server 数据库实例跟目标 RDS for SQL Server 实例中名称不同。 对于这两种情况,您需要在配置迁移任务之前,先在 RDS 控制台完成 RDS for SQL Server 实例中数据库的创建。具体参考 RDS 数据库创建流程 RDS 使用手册。 迁移账号创建迁移任务配置,需要提供本地 SQL Server 数据库实例及目标 RDS 实例的迁移账号。迁移账号所需权限详见上文的迁移权限要求。 如果本地 SQL Server 数据库实例的迁移账号尚未创建,那么您可以参考 SQL Server User 创建,创建满足权限要求的迁移账号。 如果目标 RDS for SQL Server 实例迁移账号尚未创建,那么您可以参考 RDS 账号创建流程,创建对目标 RDS for SQL Server 实例有读写权限的迁移账号。 其他准备工作如果您需要进行不停机迁移,那么还需要设置本地 SQL Server 数据库实例日志格式为 full。 如果本地 SQL Server 数据库实例的日志格式不为 full,那么需要通过下面两个步骤设置: 在源数据库执行: alter database database_name set recovery_model_desc=’full’, 其中 database_name 为需要迁移的数据库名。为了保证开启完整日志生效,需要在源数据库进行一次日志备份,在源数据库执行:BACKUP LOG database_name to DISK=backup_place WITH init , 其中 database_name 为待迁移的数据库名,backup_place 为备份文件存储的地址。 迁移任务配置当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。 进入数据传输 DTS 控制台,点击右上角的创建迁移任务,开始任务配置。本地 SQL Server 数据库实例及目标 RDS for SQL Server 实例连接信息配置。 在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中: 任务名称 默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。 源实例连接信息 实例类型:选择 有公网 IP 的自建数据库 数据库类型:选择 SQL Server主机名或IP地址:配置本地 SQL Serever 数据库实例的访问地址,这个地址必须为公网访问方式端口:SQL Server 实例监听端口数据库账号:SQL Server 数据库实例访问账号数据库密码:上面指定的 SQL Server 访问账号对应的数据库实例密码 目标 RDS 实例连接信息 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS for SQL Server 实例的实例 ID。 DTS 支持经典网络和 VPC 网络的 RDS 实例数据库账号:RDS for SQL Server 实例的连接账号数据库密码:上面指定的数据库账号对应的数据库实例密码 迁移对象及迁移类型配置。 迁移类型 DTS 支持结构迁移、全量数据迁移、增量数据迁移。 如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。 如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。 迁移对象 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。默认情况下,对象迁移到 RDS 实例后,对象名跟本地 SQL Server 数据库实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤 预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。 至此,完成将本地 SQL Server 数据库实例到 RDS for SQL Server 实例的数据迁移任务配置。
2019-12-01 23:09:43 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地 SQL Server 数据库实例的数据迁移到 RDS for SQL Server 实例。SQL Server 迁移支持增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 SQL Server 数据库的迁移工作。 本小节简单介绍使用数据传输服务 DTS(以下简称 DTS) 进行 SQL Server->RDS for SQL Server 数据迁移的任务配置流程。 迁移类型对于 SQL Server->RDS for SQL Server 数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下: 结构迁移 DTS 将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、表触发器、同义词、SQL 存储过程、SQL 函数、plan guid、自定义类型、rule、default。 全量数据迁移 全量迁移将 SQL Server 实例的存量数据全部迁移到目标 RDS 实例。如果您只进行全量数据迁移,那么迁移过程中本地 SQL Server 数据库实例新增的业务写入不会被同步到目标 RDS 实例。 如果您还选择了增量数据迁移,那么迁移过程中,本地 SQL Server 数据库实例的增量写入数据会被同步到目标 RDS 实例。 迁移限制 当前 SQL Server 结构迁移和全量数据迁移支持 SQL Server 2005,2008,2008 R2,2012 和 2016 版本,增量数据迁移支持 SQL Server 2008,2008 R2,2012 和 2014 版本。如果迁移的对象使用了对象名映射功能,则有一定几率导致依赖该对象的其他对象迁移失败。不支持 sql_variant 数据类型。结构迁移不支持 assemblies、库级存储过程、service broker、全文索引、全文目录、分布式 schema、分布式函数、CLR 标量函数、CLR 标值函数、内部表、聚合函数、系统的迁移。如果使用结构迁移 + 全量数据迁移 + 增量数据迁移,在结构迁移开始后,增量数据迁移开始前,请不要对迁移涉及的对象进行 DDL 操作,否则有一定几率会导致迁移失败。增量迁移的限制如下: 有限支持 DDL 语句同步,具体支持的 DDL 语句请参考 增量数据迁移过程中支持同步的 DDL 操作 章节。只支持含有聚簇索引,且聚簇索引为主键或者唯一键的表。不支持只更新大字段的 update 语句的同步。不支持含有计算列的表。一个增量迁移任务只支持一个数据库的迁移。如果同时有多个数据库需要进行增量数据迁移,那么需要创建多个迁移任务。 增量数据迁移过程中支持同步的增量数据迁移过程中支持同步的 DDL 操作 增量迁移过程中支持同步的 DDL 操作及其限制条件(在括号内说明)包括: CREATE TABLE (不支持函数,分区,默认值)ALTER TABLE … ADD COLUMN (不支持默认值)ALTER TABLE … DROP COLUMNALTER TABLE … ALTER COLUMN (不支持默认值)CREATE INDEX (不支持 index 属性)SP_RENAME table_nameSP_RENAME column_name 迁移权限要求当使用 DTS 进行 SQL Server 迁移时,不同迁移类型,对本地 SQL Server 数据库实例及目标 RDS for SQL Server 实例的迁移账号权限要求如下: 迁移类型 结构迁移 全量迁移 增量迁移 本地 SQLServer 数据库实例 select select sysadmin 目的 RDS for SQL Server 实例 读写权限 读写权限 读写权限 迁移流程数据传输服务在进行 SQL Server 上云迁移时,为了解决对象间的依赖,提高迁移成功率。 结构对象及数据的迁移顺序如下: 进行结构对象 表、视图、同义词、自定义类型、rule、default、plan guid 的迁移。全量数据迁移。进行结构对象 SQL 存储过程、SQL 函数、触发器、外键 的迁移。增量数据迁移。 如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移100%,全量迁移100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3)中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。待迁移状态显示为“迁移完成”后,表示全量数据迁移任务已经完成,这时可以安全地手动结束任务。 迁移任务配置下面详细介绍使用 DTS 将本地的 SQL Server 迁移到 RDS for SQL Server 的任务配置流程。 RDS 实例数据库创建在数据迁移过程中,如果待迁移的数据库在目标 RDS for SQL Server 实例中不存在,那么 DTS 自动会创建同名的数据库。但是对于如下两种情况,您需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合:RDS 定义规范 (由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在本地 SQL Server 数据库实例跟目标 RDS for SQL Server 实例中名称不同。 对于这两种情况,您需要在配置迁移任务之前,先在 RDS 控制台完成 RDS for SQL Server 实例中数据库的创建。具体参考 RDS 数据库创建流程 RDS 使用手册。 迁移账号创建迁移任务配置,需要提供本地 SQL Server 数据库实例及目标 RDS 实例的迁移账号。迁移账号所需权限详见上文的迁移权限要求。 如果本地 SQL Server 数据库实例的迁移账号尚未创建,那么您可以参考 SQL Server User 创建,创建满足权限要求的迁移账号。 如果目标 RDS for SQL Server 实例迁移账号尚未创建,那么您可以参考 RDS 账号创建流程,创建对目标 RDS for SQL Server 实例有读写权限的迁移账号。 其他准备工作如果您需要进行不停机迁移,那么还需要设置本地 SQL Server 数据库实例日志格式为 full。 如果本地 SQL Server 数据库实例的日志格式不为 full,那么需要通过下面两个步骤设置: 在源数据库执行: alter database database_name set recovery_model_desc=’full’, 其中 database_name 为需要迁移的数据库名。为了保证开启完整日志生效,需要在源数据库进行一次日志备份,在源数据库执行:BACKUP LOG database_name to DISK=backup_place WITH init , 其中 database_name 为待迁移的数据库名,backup_place 为备份文件存储的地址。 迁移任务配置当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。 进入数据传输 DTS 控制台,点击右上角的创建迁移任务,开始任务配置。本地 SQL Server 数据库实例及目标 RDS for SQL Server 实例连接信息配置。 在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中: 任务名称 默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。 源实例连接信息 实例类型:选择 有公网 IP 的自建数据库 数据库类型:选择 SQL Server主机名或IP地址:配置本地 SQL Serever 数据库实例的访问地址,这个地址必须为公网访问方式端口:SQL Server 实例监听端口数据库账号:SQL Server 数据库实例访问账号数据库密码:上面指定的 SQL Server 访问账号对应的数据库实例密码 目标 RDS 实例连接信息 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS for SQL Server 实例的实例 ID。 DTS 支持经典网络和 VPC 网络的 RDS 实例数据库账号:RDS for SQL Server 实例的连接账号数据库密码:上面指定的数据库账号对应的数据库实例密码 迁移对象及迁移类型配置。 迁移类型 DTS 支持结构迁移、全量数据迁移、增量数据迁移。 如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。 如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。 迁移对象 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。默认情况下,对象迁移到 RDS 实例后,对象名跟本地 SQL Server 数据库实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤 预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。 至此,完成将本地 SQL Server 数据库实例到 RDS for SQL Server 实例的数据迁移任务配置。
2019-12-01 23:09:42 0 浏览量 回答数 0

问题

用户指南-数据迁移-使用 DTS 迁移数据-使用 DTS 迁移 MySQL 数据

使用数据传输服务(DTS)将本地数据库迁移到 RDS for MySQL,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。 背景信息 DTS 数据迁移支持 MySQL ...
李沃晟 2019-12-01 21:39:38 741 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档本小节介绍如何使用数据传输服务快速创建两个 RDS for MySQL 实例之间的实时同步作业,实现 RDS for MySQL 增量数据的实时同步。 支持功能 支持阿里云账号下两个 RDS for MySQL 实例间的实时同步。支持不同阿里云账号下的 RDS for MySQL 实例间的实时同步。暂不支持不同阿里云账号下的 RDS for MySQL 实例间的双向同步,具体支持时间将另行通知。 同步限制数据源 目前实时同步只能支持 RDS for MySQL 实例,暂不支持其他数据源类型。目标实例不支持访问模式为标准模式且只有外网连接地址的 RDS for MySQL 实例。不支持香港可用区 A 的 RDS for MySQL 实例的实时同步。对于 rename table tbl_name to new_tbl_name、create table tbl_name like new_tbl_name、 create…select…from new_tbl_name、alter table tbl_name rename to new_tbl_name,如果 new_tbl_name 不在指定的同步对象中,则不支持对此 DDL 进行复制。 同步架构目前数据传输服务提供的实时同步功能支持的同步架构有限,其仅能支持如下架构: A->B 即两个实例之间的单向同步。且要求实例 B 中同步的对象必须为只读,否则会导致同步链路异常,出现数据不一致的情况。 A->B/C/D 即一对多的分发式同步架构,这个架构对目标 RDS for MySQL 实例个数没有限制,但是要求目标实例中的同步对象必须为只读,否则会导致同步链路异常,出现数据不一致的情况。 B/C/D->A 即多对一的数据汇总架构。对于这种多对一的同步架构,为了保证同步数据一致性,要求每条同步链路同步的对象不相同。 A->B->C 即级联架构。 A->B->A 即实例A和实例B之间的双向同步架构。 注意:如果需要使用双向同步,需要在购买同步链路时,选择双向同步,并在 数据传输 DTS 控制台 中根据指引进行配置。 如果用户配置同步链路过程中,配置不在上述支持范围内的的同步架构,那么预检查中的复杂拓扑检查项会检查失败。 功能限制 不兼容触发器 如果同步对象为整个库且这个库中包含了会更新同步表内容的触发器,会导致同步数据不一致。 例如同步库为A,这个库中存在了两个表 A, B。表 A 上有一个触发器,触发器内容为在 insert 一条数据到表 A 之后,在表 B 中插入一条数据。这种情况下,在同步过程中,如果源实例有表 A 上的 insert 操作,就会导致表 B 在源实例跟目标实例数据不一致。 为了解决这个问题,只能将目标实例中的对应触发器删除掉。表 B 的数据由源实例同步过去。具体解决方案详见最佳实践中的,触发器存在情况下如何配置同步链路。 rename table 限制 rename table 操作需要满足限制条件方可正常同步,否则会导致同步数据不一致。例如同步对象只包含表 A,不包含表 B,如果同步过程中源实例执行了 rename A to B 的操作,那么改名后的表 B 的操作不会被同步到目标库。为了解决这个问题,可以选择同步表 A、B 对应的整个数据库。 准备事项在配置同步作业前,要确保同步作业的源及目标RDS实例都已经存在。如果不存在,那么请先购买RDS实例 购买 RDS 实例。 配置步骤下面我们详细介绍下创建任意两个 RDS 实例之间的同步链路的具体步骤。 购买同步链路。 进入数据传输 DTS 控制台,进入数据同步页面,点击控制台右上角 “创建同步作业” 开始作业配置。 在链路配置之前需要购买一个同步链路。同步链路目前支持包年包月及按量付费两种付费模式,可以根据需要选择不同的付费模式。 在购买页面需要配置的参数包括: 源地域 源地域为同步链路源实例所在地域。 目标地域 目标地域为同步链路目标实例所在地域。 实例规格 实例规格影响了链路的同步性能,实例规格跟性能之间的对应关系详见 数据同步规格说明。 数量 数量为一次性购买的同步链路的数量,如果购买的是按量付费实例,一次最多购买 99 条链路。 当购买完同步实例,返回数据传输控制台,点击新购链路右侧的“配置同步作业” 开始链路配置。 同步链路连接信息配置。 在这一步主要配置: 同步作业名称 同步作业名称没有唯一性要求,主要为了更方便识别具体的作业,建议选择一个有业务意义的作业名称,方便后续的链路查找及管理。 同步链路的 RDS 实例 ID 源跟目标 RDS 实例必须为两个不同的实例,选择 RDS 实例 ID 时,下拉菜单中只列出对应阿里云账号下的 RDS for MySQL 实例。 当这些内容配置完成后,可以点击授权白名单并进入下一步。 授权RDS实例白名单。 这个步骤,主要是将数据传输服务器 IP 添加到同步 RDS 实例的白名单中。避免因为 RDS 设置了白名单,数据传输服务器连接不上 RDS 导致同步作业创建失败。 为了保证同步作业的稳定性,在同步过程中,请勿将这些服务器 IP 从 RDS 实例的白名单中删除。 当白名单授权后,点击下一步,进入同步账号创建。 创建目标库上的同步账号。 这个步骤主要是在目标 RDS 实例上创建一个同步账号,账号名字为:dtssyncwriter,在同步过程中,不能删除这个账号,否则会导致同步链路中断。 选择同步对象。 当创建完目标 RDS 实例的同步账号后,即进入同步对象的选择步骤。实时同步的同步对象的选择粒度可以支持到表级别,即用户可以选择同步某些库或是同步某几张表。 如果选择的同步对象为整个库,那么这个库中所有对象的结构变更操作(例如 create table,drop view 等),都会同步到目标库。 如果选择的某张表,那么只有这个表的 drop/alter/truncate/rename table,create/drop index 的操作会同步到目标库。 当配置完同步对象后,进入同步初始化配置。 同步初始化配置。 同步初始化配置,初始化是同步链路启动的第一步,它会将源实例中已经存在同步对象的结构及数据在目标实例中初始化,作为后续增量同步数据的基线数据。 同步初始化类型细分为:结构初始化,全量数据初始化。默认情况下,需要选择结构初始化及全量初始化。 预检查。 当上面所有选项配置完成后,即进入启动之前的预检查。 当同步作业配置完成后,数据传输服务会进行限制预检查,当预检查通过后,可以点击 启动 按钮,启动同步作业。 当同步作业启动之后,即进入同步作业列表。此时刚启动的作业处于同步初始化状态。初始化的时间长度依赖于源实例中同步对象的数据量大小。当初始化完成后同步链路即进入同步中的状态,此时源跟目标实例的同步链路才真正建立完成。
2019-12-01 23:09:47 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档本小节介绍如何使用数据传输服务快速创建两个 RDS for MySQL 实例之间的实时同步作业,实现 RDS for MySQL 增量数据的实时同步。 支持功能 支持阿里云账号下两个 RDS for MySQL 实例间的实时同步。支持不同阿里云账号下的 RDS for MySQL 实例间的实时同步。暂不支持不同阿里云账号下的 RDS for MySQL 实例间的双向同步,具体支持时间将另行通知。 同步限制数据源 目前实时同步只能支持 RDS for MySQL 实例,暂不支持其他数据源类型。目标实例不支持访问模式为标准模式且只有外网连接地址的 RDS for MySQL 实例。不支持香港可用区 A 的 RDS for MySQL 实例的实时同步。对于 rename table tbl_name to new_tbl_name、create table tbl_name like new_tbl_name、 create…select…from new_tbl_name、alter table tbl_name rename to new_tbl_name,如果 new_tbl_name 不在指定的同步对象中,则不支持对此 DDL 进行复制。 同步架构目前数据传输服务提供的实时同步功能支持的同步架构有限,其仅能支持如下架构: A->B 即两个实例之间的单向同步。且要求实例 B 中同步的对象必须为只读,否则会导致同步链路异常,出现数据不一致的情况。 A->B/C/D 即一对多的分发式同步架构,这个架构对目标 RDS for MySQL 实例个数没有限制,但是要求目标实例中的同步对象必须为只读,否则会导致同步链路异常,出现数据不一致的情况。 B/C/D->A 即多对一的数据汇总架构。对于这种多对一的同步架构,为了保证同步数据一致性,要求每条同步链路同步的对象不相同。 A->B->C 即级联架构。 A->B->A 即实例A和实例B之间的双向同步架构。 注意:如果需要使用双向同步,需要在购买同步链路时,选择双向同步,并在 数据传输 DTS 控制台 中根据指引进行配置。 如果用户配置同步链路过程中,配置不在上述支持范围内的的同步架构,那么预检查中的复杂拓扑检查项会检查失败。 功能限制 不兼容触发器 如果同步对象为整个库且这个库中包含了会更新同步表内容的触发器,会导致同步数据不一致。 例如同步库为A,这个库中存在了两个表 A, B。表 A 上有一个触发器,触发器内容为在 insert 一条数据到表 A 之后,在表 B 中插入一条数据。这种情况下,在同步过程中,如果源实例有表 A 上的 insert 操作,就会导致表 B 在源实例跟目标实例数据不一致。 为了解决这个问题,只能将目标实例中的对应触发器删除掉。表 B 的数据由源实例同步过去。具体解决方案详见最佳实践中的,触发器存在情况下如何配置同步链路。 rename table 限制 rename table 操作需要满足限制条件方可正常同步,否则会导致同步数据不一致。例如同步对象只包含表 A,不包含表 B,如果同步过程中源实例执行了 rename A to B 的操作,那么改名后的表 B 的操作不会被同步到目标库。为了解决这个问题,可以选择同步表 A、B 对应的整个数据库。 准备事项在配置同步作业前,要确保同步作业的源及目标RDS实例都已经存在。如果不存在,那么请先购买RDS实例 购买 RDS 实例。 配置步骤下面我们详细介绍下创建任意两个 RDS 实例之间的同步链路的具体步骤。 购买同步链路。 进入数据传输 DTS 控制台,进入数据同步页面,点击控制台右上角 “创建同步作业” 开始作业配置。 在链路配置之前需要购买一个同步链路。同步链路目前支持包年包月及按量付费两种付费模式,可以根据需要选择不同的付费模式。 在购买页面需要配置的参数包括: 源地域 源地域为同步链路源实例所在地域。 目标地域 目标地域为同步链路目标实例所在地域。 实例规格 实例规格影响了链路的同步性能,实例规格跟性能之间的对应关系详见 数据同步规格说明。 数量 数量为一次性购买的同步链路的数量,如果购买的是按量付费实例,一次最多购买 99 条链路。 当购买完同步实例,返回数据传输控制台,点击新购链路右侧的“配置同步作业” 开始链路配置。 同步链路连接信息配置。 在这一步主要配置: 同步作业名称 同步作业名称没有唯一性要求,主要为了更方便识别具体的作业,建议选择一个有业务意义的作业名称,方便后续的链路查找及管理。 同步链路的 RDS 实例 ID 源跟目标 RDS 实例必须为两个不同的实例,选择 RDS 实例 ID 时,下拉菜单中只列出对应阿里云账号下的 RDS for MySQL 实例。 当这些内容配置完成后,可以点击授权白名单并进入下一步。 授权RDS实例白名单。 这个步骤,主要是将数据传输服务器 IP 添加到同步 RDS 实例的白名单中。避免因为 RDS 设置了白名单,数据传输服务器连接不上 RDS 导致同步作业创建失败。 为了保证同步作业的稳定性,在同步过程中,请勿将这些服务器 IP 从 RDS 实例的白名单中删除。 当白名单授权后,点击下一步,进入同步账号创建。 创建目标库上的同步账号。 这个步骤主要是在目标 RDS 实例上创建一个同步账号,账号名字为:dtssyncwriter,在同步过程中,不能删除这个账号,否则会导致同步链路中断。 选择同步对象。 当创建完目标 RDS 实例的同步账号后,即进入同步对象的选择步骤。实时同步的同步对象的选择粒度可以支持到表级别,即用户可以选择同步某些库或是同步某几张表。 如果选择的同步对象为整个库,那么这个库中所有对象的结构变更操作(例如 create table,drop view 等),都会同步到目标库。 如果选择的某张表,那么只有这个表的 drop/alter/truncate/rename table,create/drop index 的操作会同步到目标库。 当配置完同步对象后,进入同步初始化配置。 同步初始化配置。 同步初始化配置,初始化是同步链路启动的第一步,它会将源实例中已经存在同步对象的结构及数据在目标实例中初始化,作为后续增量同步数据的基线数据。 同步初始化类型细分为:结构初始化,全量数据初始化。默认情况下,需要选择结构初始化及全量初始化。 预检查。 当上面所有选项配置完成后,即进入启动之前的预检查。 当同步作业配置完成后,数据传输服务会进行限制预检查,当预检查通过后,可以点击 启动 按钮,启动同步作业。 当同步作业启动之后,即进入同步作业列表。此时刚启动的作业处于同步初始化状态。初始化的时间长度依赖于源实例中同步对象的数据量大小。当初始化完成后同步链路即进入同步中的状态,此时源跟目标实例的同步链路才真正建立完成。
2019-12-01 23:09:47 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档数据传输DTS提供的数据实时同步功能,简单易用。只需3个步骤,即可完成整个同步链路的配置。本小节介绍如何使用数据传输服务快速创建两个RDS(MySQL)实例之间的实时同步作业,实现RDS增量数据的实时同步。 同步限制 数据源 目前实时同步只能支持RDS MySQL实例,暂不支持其他数据源类型目标实例不支持访问模式为标准模式且只有外网连接地址的RDS实例不支持香港可用区A的RDS实例的实时同步 同步架构 目前数据传输服务提供的实时同步功能支持的同步架构有限,其仅能支持如下三种架构: A->B 即两个实例之间的单向同步。且要求B中同步的对象必须为只读,否则可能导致同步链路异常。 A->B/C/D 即1对多的分发式同步架构,这个架构对目标RDS实例个数没有限制,但是要求目标实例中的同步对象必须为只读,否则可能导致同步链路异常。 B/C/D->A 即多对1的数据汇总架构。对于多对1的同步架构,要求每个同步链路的同步对象不相同,保证同步完整性。 对于下面几种同步架构,暂时不支持: A->B->C 即级联架构。 A->B->A 即实例A和实例B之间的双向同步架构。 如果用户配置同步链路过程中,配置了这些不支持的同步架构,那么预检查中的复杂拓扑检查项会检查失败。 不兼容触发器 如果同步对象为整个库且这个库中包含了会更新同步表内容的触发器,那么可能导致同步数据不一致。 触发器内容为在insert一条数据到a之后,在b中插入一条数据。这种情况下,在同步过程中,如果源实例有a上的insert操作,就会导致b表在源实例跟目标实例数据不一致。 为了解决这个问题,只能将目标实例中的对应触发器删除掉。b表的数据由源实例同步过去。具体解决方案详见最佳实践中的,触发器存在情况下如何配置同步链路。 前提条件在配置同步作业前,要确保同步作业的源及目标RDS实例都已经存在。如果不存在,那么请先购买RDS实例购买RDS实例。 操作步骤下面我们详细介绍下创建任意两个RDS实例之间的同步链路的具体步骤。 购买同步链路。 进入数据传输服务控制台,进入数据同步页面。点击控制台右上角“创建同步作业” 开始作业配置。在链路配置之前需要购买一个同步链路。同步链路目前支持包年包月及按量付费两种付费模式,可以根据需要选择不同的付费模式。 在购买页面需要配置的参数包括: 源地域 源地域为同步链路源RDS实例所在地域。 目标地域 目标地域为同步链路目标RDS实例所在地域。 实例规格 实例规格影响了链路的同步性能,实例规格跟性能之间的对应关系详见 数据同步规格说明。 数量 数量为一次性购买的同步链路的数量,如果购买的是按量付费实例,一次最多购买99条链路。 当购买完同步实例,返回数据传输控制台,点击新购链路右侧的“配置同步作业” 开始链路配置。 同步链路连接信息配置。 在这一步主要配置: 同步作业名称同步作业名称没有唯一性要求,主要为了更方便识别具体的作业,建议选择一个有业务意义的作业名称,方便后续的链路查找及管理。同步链路的RDS实例ID源跟目标RDS实例必须为两个不同的实例,选择RDS实例ID时,下拉菜单中只列出对应阿里云账号下的RDS For MySQL实例。 当这些内容配置完成后,可以点击“授权白名单并进入下一步”。 授权RDS实例白名单。 这个步骤,主要是将数据传输服务器IP添加到同步RDS实例的白名单中。避免因为RDS设置了白名单,数据传输服务器连接不上RDS导致同步作业创建失败。 为了保证同步作业的稳定性,在同步过程中,请勿将这些服务器IP从RDS实例的白名单中删除。 当白名单授权后,点击下一步,进入同步账号创建。 创建目标库上的同步账号。 这个步骤主要是在目标RDS实例上创建一个同步账号,账号名字为:dtssyncwriter,在同步过程中,不能删除这个账号,否则会导致同步链路中断。 选择同步对象。 当创建完目标RDS实例的同步账号后,即进入同步对象的选择步骤。实时同步的同步对象的选择粒度可以支持到表级别,即用户可以选择同步某些库或是同步某几张表。 如果选择的同步对象为整个库,那么这个库中所有对象的结构变更操作(例如create table,drop view 等),都会同步到目标库。 如果选择的某张表,那么只有这个表的drop/alter/truncate/rename table,create/drop index 的操作会同步到目标库。 需要注意的是rename table操作可能导致同步数据不一致。例如同步对象只包含表A,不包含表B,如果同步过程中源实例执行了rename A to B的操作,那么改名后的B表的操作不会被同步到目标库。为了解决这个问题,可以选择同步表A、B对应的整个数据库。 当选择完同步对象后,即进入同步初始化选择。 同步初始化配置。 同步初始化配置,初始化是同步链路启动的第一步,它会将源实例中已经存在同步对象的结构及数据在目标实例中初始化,作为后续增量同步数据的基线数据。 同步初始化类型细分为:结构初始化,全量数据初始化。默认情况下,需要选择结构初始化及全量初始化。 预检查。 当上面所有选项配置完成后,即进入启动之前的预检查。 当同步作业配置完成后,数据传输服务会进行限制预检查,当预检查通过后,可以点击 启动 按钮,启动同步作业。 当同步作业启动之后,即进入同步作业列表。此时刚启动的作业处于同步初始化状态。初始化的时间长度依赖于源实例中同步对象的数据量大小。当初始化完成后同步链路即进入同步中的状态,此时源跟目标实例的同步链路才真正建立完成。
2019-12-01 23:09:39 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档数据传输DTS提供的数据实时同步功能,简单易用。只需3个步骤,即可完成整个同步链路的配置。本小节介绍如何使用数据传输服务快速创建两个RDS(MySQL)实例之间的实时同步作业,实现RDS增量数据的实时同步。 同步限制 数据源 目前实时同步只能支持RDS MySQL实例,暂不支持其他数据源类型目标实例不支持访问模式为标准模式且只有外网连接地址的RDS实例不支持香港可用区A的RDS实例的实时同步 同步架构 目前数据传输服务提供的实时同步功能支持的同步架构有限,其仅能支持如下三种架构: A->B 即两个实例之间的单向同步。且要求B中同步的对象必须为只读,否则可能导致同步链路异常。 A->B/C/D 即1对多的分发式同步架构,这个架构对目标RDS实例个数没有限制,但是要求目标实例中的同步对象必须为只读,否则可能导致同步链路异常。 B/C/D->A 即多对1的数据汇总架构。对于多对1的同步架构,要求每个同步链路的同步对象不相同,保证同步完整性。 对于下面几种同步架构,暂时不支持: A->B->C 即级联架构。 A->B->A 即实例A和实例B之间的双向同步架构。 如果用户配置同步链路过程中,配置了这些不支持的同步架构,那么预检查中的复杂拓扑检查项会检查失败。 不兼容触发器 如果同步对象为整个库且这个库中包含了会更新同步表内容的触发器,那么可能导致同步数据不一致。 触发器内容为在insert一条数据到a之后,在b中插入一条数据。这种情况下,在同步过程中,如果源实例有a上的insert操作,就会导致b表在源实例跟目标实例数据不一致。 为了解决这个问题,只能将目标实例中的对应触发器删除掉。b表的数据由源实例同步过去。具体解决方案详见最佳实践中的,触发器存在情况下如何配置同步链路。 前提条件在配置同步作业前,要确保同步作业的源及目标RDS实例都已经存在。如果不存在,那么请先购买RDS实例购买RDS实例。 操作步骤下面我们详细介绍下创建任意两个RDS实例之间的同步链路的具体步骤。 购买同步链路。 进入数据传输服务控制台,进入数据同步页面。点击控制台右上角“创建同步作业” 开始作业配置。在链路配置之前需要购买一个同步链路。同步链路目前支持包年包月及按量付费两种付费模式,可以根据需要选择不同的付费模式。 在购买页面需要配置的参数包括: 源地域 源地域为同步链路源RDS实例所在地域。 目标地域 目标地域为同步链路目标RDS实例所在地域。 实例规格 实例规格影响了链路的同步性能,实例规格跟性能之间的对应关系详见 数据同步规格说明。 数量 数量为一次性购买的同步链路的数量,如果购买的是按量付费实例,一次最多购买99条链路。 当购买完同步实例,返回数据传输控制台,点击新购链路右侧的“配置同步作业” 开始链路配置。 同步链路连接信息配置。 在这一步主要配置: 同步作业名称同步作业名称没有唯一性要求,主要为了更方便识别具体的作业,建议选择一个有业务意义的作业名称,方便后续的链路查找及管理。同步链路的RDS实例ID源跟目标RDS实例必须为两个不同的实例,选择RDS实例ID时,下拉菜单中只列出对应阿里云账号下的RDS For MySQL实例。 当这些内容配置完成后,可以点击“授权白名单并进入下一步”。 授权RDS实例白名单。 这个步骤,主要是将数据传输服务器IP添加到同步RDS实例的白名单中。避免因为RDS设置了白名单,数据传输服务器连接不上RDS导致同步作业创建失败。 为了保证同步作业的稳定性,在同步过程中,请勿将这些服务器IP从RDS实例的白名单中删除。 当白名单授权后,点击下一步,进入同步账号创建。 创建目标库上的同步账号。 这个步骤主要是在目标RDS实例上创建一个同步账号,账号名字为:dtssyncwriter,在同步过程中,不能删除这个账号,否则会导致同步链路中断。 选择同步对象。 当创建完目标RDS实例的同步账号后,即进入同步对象的选择步骤。实时同步的同步对象的选择粒度可以支持到表级别,即用户可以选择同步某些库或是同步某几张表。 如果选择的同步对象为整个库,那么这个库中所有对象的结构变更操作(例如create table,drop view 等),都会同步到目标库。 如果选择的某张表,那么只有这个表的drop/alter/truncate/rename table,create/drop index 的操作会同步到目标库。 需要注意的是rename table操作可能导致同步数据不一致。例如同步对象只包含表A,不包含表B,如果同步过程中源实例执行了rename A to B的操作,那么改名后的B表的操作不会被同步到目标库。为了解决这个问题,可以选择同步表A、B对应的整个数据库。 当选择完同步对象后,即进入同步初始化选择。 同步初始化配置。 同步初始化配置,初始化是同步链路启动的第一步,它会将源实例中已经存在同步对象的结构及数据在目标实例中初始化,作为后续增量同步数据的基线数据。 同步初始化类型细分为:结构初始化,全量数据初始化。默认情况下,需要选择结构初始化及全量初始化。 预检查。 当上面所有选项配置完成后,即进入启动之前的预检查。 当同步作业配置完成后,数据传输服务会进行限制预检查,当预检查通过后,可以点击 启动 按钮,启动同步作业。 当同步作业启动之后,即进入同步作业列表。此时刚启动的作业处于同步初始化状态。初始化的时间长度依赖于源实例中同步对象的数据量大小。当初始化完成后同步链路即进入同步中的状态,此时源跟目标实例的同步链路才真正建立完成。
2019-12-01 23:09:39 0 浏览量 回答数 0

回答

static final 修饰的不可变的变量,是常量。final表示终态,不可变,不可修改。static表示在类加载到内存的时候就创建。static final修饰的常量,一般用于接口或者数据库连接中,为了就是全局可用,不管哪个包、哪个类都可直接访问,二是一般服务器启动,类加载到内存便无法修改,就拿数据库连接来讲,就确定参数不可动,保证其他程序的修改不会影响数据库链接。所以当这种常量的值改变后,必须重启服务器,重新加载到内存才能生效。
蛮大人123 2019-12-02 01:54:07 0 浏览量 回答数 0

问题

关于 Db类中的批处理batch操作:报错

@JFinal 波哥你好,我有个小小的建议,希望能考虑一下,是关于 Db类中的批处理batch操作的。 从我个人而言,我使用最多就是读取文件的中的数据,进行...
kun坤 2020-06-06 16:02:33 1 浏览量 回答数 1

回答

你缓存的目的是干什么?我感觉你是好几个场景。######回复 @foodon : 上面那只是一个简单的举例而已 主要问题就是在查询列表!######回复 @SandKing : 缓存是为了加快常用功能的速度,但你这几个加到缓存的内容我没弄清作用。我猜想:1、以uid为key缓存用户是为了经需要用户的信息;2、以username为key缓存password是为了登陆;3、这就弄不懂是什么场景了。######缓存的目的 但然是让查询更快啊######没有人么  这么快 就要沉了。。。###### 是这个样子的 缓存的确是要让查询更快,但是缓存主要是为了多次查询的某一条记录做的 比如说99%的用户需要查询第99条记录,那么把这条记录写入缓存是比较好的方案 但是缓存是有局限性的,像你要统计全表有多少的2类用户,这不可以用缓存来做的,因为这里涉及到的记录是全表中的记录,所以你的问题2是不合适的,因为如果要实现这个功能就不要用缓存做 再一个一般缓存应该不是用时间触发超时的,一般是在每次你向缓存中插入一条记录的时候统计当前缓存中的记录条数,如果达到了缓存大小的极限,那么会用一种选择算法把其中的一条记录去掉。记住这里是向缓存中插入记录,不是所有插入记录的情况。对数据库写操作的时候要直接操作数据库的,只有读操作才经过缓存,而且如果是update的话要判断是不是某条记录与缓存中记录不一样了,那样要修改缓存中的记录。其实对于哪些记录要进缓存也是要用算法判断的,选择大多数用户会查询而且一般不修改的是比较好的可以进缓存的记录。 加缓存的问题很多的,建议查oracle数据库缓存的原理。数据库也是有缓存的,一般不用我们来在程序内设置缓存,如果你想要这方面的知识那么看看oracle缓存一些基本的原理吧。 ######如果一个玩家上线 要保证他的所有请求都比较快,所有的请求都不能超过20毫秒 20毫秒中要包括你的业务逻辑+数据查询等等######你说的这种是对要求不是特别高的情况,我们在做游戏的时候你更具用户要查询一个用户的列表什么的。对查询速度要求比较高! 我要做的是查询 全查询缓存 ,插入 更新 同时修改缓存和数据库###### 不建议用缓存,根本就是根据索引查对象。。 没有达到缓存的基本要求。。 ######这样做 比你查询库 快太多太多了######你是做的缓存吗?怎么这么复杂?缓存一个对象不可以吗?不太理解你的需求。###### 你这等于就是把缓存做数据库来用,所以那个超时移除可以去掉了. 至于那些不常用的数据,可以想办法做到要用到时加载,不用时剔除,这块才是你需要设计的地方,比如说针对这种数据启用超时. ######基本上就是这个意思! 用的时候加载OK没问题,不用时剔除这个就会出现我上面说的这个情况了!###### 引用来自“李三乎”的答案 是这个样子的 缓存的确是要让查询更快,但是缓存主要是为了多次查询的某一条记录做的 比如说99%的用户需要查询第99条记录,那么把这条记录写入缓存是比较好的方案 但是缓存是有局限性的,像你要统计全表有多少的2类用户,这不可以用缓存来做的,因为这里涉及到的记录是全表中的记录,所以你的问题2是不合适的,因为如果要实现这个功能就不要用缓存做 再一个一般缓存应该不是用时间触发超时的,一般是在每次你向缓存中插入一条记录的时候统计当前缓存中的记录条数,如果达到了缓存大小的极限,那么会用一种选择算法把其中的一条记录去掉。记住这里是向缓存中插入记录,不是所有插入记录的情况。对数据库写操作的时候要直接操作数据库的,只有读操作才经过缓存,而且如果是update的话要判断是不是某条记录与缓存中记录不一样了,那样要修改缓存中的记录。其实对于哪些记录要进缓存也是要用算法判断的,选择大多数用户会查询而且一般不修改的是比较好的可以进缓存的记录。 加缓存的问题很多的,建议查oracle数据库缓存的原理。数据库也是有缓存的,一般不用我们来在程序内设置缓存,如果你想要这方面的知识那么看看oracle缓存一些基本的原理吧。 呃,你现在做的都是数据库要做的功能啊。数据库本身是有缓存功能的。你们没有数据库工程师么,这些不应该是代码里要考虑的内容啊。你的总的要求就是要快速的进行数据查询,这应该是数据库里存储过程的功能啊。 平时用代码写的话做个小的缓存自己用还可以,要这样大型的用数据库自己来处理是最好的。 如果非要自己做的话,可以借鉴memDB的思路,我们可以在内存中虚拟一个数据库,按照jdbc driver的接口实现存储在内存中的数据库,你可以让一个专门的服务器用来定期把修改写入本地数据库。 这种情况真心不建议自己做缓存
kun坤 2020-06-11 14:01:26 0 浏览量 回答数 0

问题

名词解释都有哪些?

本文主要对 DRDS 涉及的专有名词及术语进行定义和解析,方便您更好地理解相关概念并使用 DRDS。 DRDS DRDS(Distributed Relational Database Service...
猫饭先生 2019-12-01 21:19:24 915 浏览量 回答数 0

云产品推荐

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