首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何做好大型遗留系统的数据迁移

如何采用有效的策略让业务部门降低预期,是数据迁移项目组要认真思考的问题。否则团队的辛苦付出不被认可,对团队伤害极大。...能够方便调节并发数等性能相关参数。 成功率统计程序设计。 错误日志分析程序设计。 其他辅助工具。 如何兼容业务系统的新变更。 重点说一下最后一点,很多时候在迁移程序开发阶段,业务系统还未开发结束。...性能调优大数量级的数据迁移,肯定会有性能的问题。数据迁移时,新老系统都不可用。因此,业务部门肯定希望数据迁移时间越短越好。这对性能是极大的挑战。关于性能优化,我有如下建议: 一定要有 APM 工具。...在高并发的迁移过程中,任何关于性能的参数调整都可能有想不到的影响。要不断试验,不能想当然。 成功率及错误分析报告 没有数据迁移经验的团队很可能在项目初期遗漏掉这两部分的开发工作。...上线失败方案虽然你经历的上线可能从来没有失败过,但不要以为这一次也一定会成功。如果出现问题,全部回滚还是部分回滚,都要提前计划好。先上线后面再补历史数据是一种方案。

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Go语言中常见100问题-#53-54 Not handling an error & defer errors

    下面的函数是实现一个给定账号ID从数据库中查询余额的功能,我们将使用database/sql中的query方法。具体实现如下,这里只关注查询本身,对结果转换处理不在这里讨论。...如何将defer func中的error与getBalance中的返回error建立联系呢,可以采用命名结果参数。...可能会出现,rows.Scan执行失败但rows.Close执行成功,最后返回的错误值为nil, 这并不是我们期望的效果。...上述实现的逻辑并不简单,预期的效果是 rows.Scan rows.Close 返回值 执行成功 执行成功 返回nil 执行成功 执行失败 返回rows.Close的错误 执行失败 执行成功 期望返回rows.Scan...的错误 执行失败 执行失败 到底返回哪个错误?

    55820

    第六章· Redis高可用sentinel

     ---- 检测实例的状态 Sentinel使用PING命令来检测实例的状态:如果实例在指定的时间内没有返回回复,或者返回错误的回复,那么该实例会被 Sentinel 判断为下线。...服务器对PING命令的有效回复可以是以下三种回复的其中一种: 1)返回 +PONG 。 2)返回 -LOADING 错误。 3)返回 -MASTERDOWN 错误。...2)基于Raft leader election协议 ,进行投票选举 3)如果当选失败,那么在设定的故障迁移超时时间的两倍之后,重新尝试当选。如果当选成功,那么执行以下步骤。...---- Sentinel自动故障迁移的一致性特质: 1)Sentinel自动故障迁移使用Raft算法来选举领头(leader)Sentinel ,从而确保在一个给定的周期(epoch)里,只有一个领头产生...如果服务器在给定的毫秒数之内,没有返回Sentinel发送的Ping命令的回复,或者返回一个错误,那么Sentinel将这个服务器标记为主观下线(subjectively down,简称SDOWN)。

    30740

    浅析redis主从、哨兵和Cluster

    127.0.0.1 , 端口号为 6379 , 而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)。...因为 Sentinel 的时间中断器默认每秒执行 10 次, 所以我们预期时间中断器的两次执行之间的间隔为 100 毫秒左右。...然而如果在集群创建的时候(或者过一段时间)我们为每个节点添加一个从节点A1,B1,C1,那么整个集群便有三个master节点和三个slave节点组成,这样在节点B失败后,集群便会选举B1为新的主节点继续服务...- 0 0 0 connected 0-5460 我的目标节点是 97a3a64667477371c4479320d683e4c8db5858b1....| 结果展示了执行的读和 写,和错误(由于系统不可用而没有接受的查询发生的错误)的数量.

    2.1K20

    如何配置 SLO

    数据库可用性或读可用性目标 错误率:是在给定的一小时间隔内,DB 的失败 SQL 执行次数除以总 SQL 执行次数。...读错误率:是在给定的一小时间隔内,DB 的失败查询 SQL 执行次数除以总 SQL 执行次数。...:是指请求尚未超过给定 DB 吞吐量,却被 DB 吞吐量限制,导致错误码 •吞吐量错误率:是在给定的一小时间隔内,给定 DB 的吞吐量失败请求总数除以总请求数。...那么,公式示例为: 吞吐量目标% = 100% -平均吞吐量错误率 一致性目标 SLI 为: 一致性违规率:是指在给定的 DB 中,在给定的一小时间隔内,对所选的一致性级别(按总请求数划分)执行一致性保证时无法发送的成功请求...那么,示例公式为: 延迟目标% = 100% - 总的延迟时间和的次数 / (DB 总使用时间/1H) 如:过去 1 个月,总的延迟时间和的次数为 50 次,分母为:30 * 24 / 1 = 720

    1.2K11

    MySQL 5.7 vs 8.0,哪个性能更牛?

    ,测试的表数量为20 测试分别在双1模式(安全性)和0 2模式(高级)下进行 参数 任选值 意味着 sync_binlog 0 binlog刷盘持久化由操作系统完成,性能好,存在丢失binlog的风险...在预期模式下的表现 双1配置,预期模式下,mysql5.7.22的tps,qps比mysql8.0.15好1/3左右;并发线程数增加后,tps,qps并没有增加,反而出现了下降的趋势 mysql5.7和...配置,预期模式下,mysql5.7.22性能比mysql8.0.15好1/3左右;转换并发数的上升,性能也没有上升,反而有下降的趋势 mysql5.7和mysql8.0在只写模式下的表现 0 2配置,只写模式下...()失败致命:MySQL错误:1461”不能创建超过max_prepared_stmt_count语句(当前值:16382)“致命:thread_init' function failed: /usr/...$thread_num --time=60 --report-interval=2 --db-ps-mode=disable --events=0 --db-driver=mysql $order

    1.1K20

    ASM存储高怎么办?这里有一套可用故障解决分析方案

    本案例通过某客户项目现场1次ASM存储容灾无法实现预期目标的问题分析解决过程,和大家共同探讨对于非预期问题的解决之道。...(3)db实例单开的情况下,会在关掉多路径130s左右完成disk offline正常运行;db实例2个节点全开,70s左右1个数据库日志LMHB报CKPT/LGWR阻塞超时的错误并且时间持续增加,期间有...结合上述分析得到的规律及测试数据,我做了多方尝试并深入思考: (1) 结合DB报出的70s超时警告,试图找到数据库的隐含参数调高后台进程HUNG住的检测阀值,多次尝试发现这个是硬限制,没有合适的参数控制...; (2) 结合上述现象,问题都出现在数据库检测到IO失败到offline disks的这段时间中,IO报错的时间点和多路径失效是吻合的,预期行为应该是数据库发现多路径失败,快速offline失败的磁盘并且使用...由于ASM DG使用的LUN裸设备,所以我修改了path_fail_secs参数,从120s减少为30s,修改后的确发现数据库检查到IO错误的的确从60s左右缩短到了30s左右。

    67620

    mycat学习

    rule.xml 是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在 这个目录下 log4j2.xml配置logs目录日志输出规则 wrapper.conf JVM相关参数调整 lib...1:host:user:password ​ 1:host:user:password 中 1 为 db 端加密标志,host 为 dataHost 的 host 名称 2.server.xml sequnceHandlerType...代表 str.length(), -1 代表 str.length()-1,大于0只代表数字自身 可以理解为substring(start,end),start为0则只表示0 例1:值“45abc”...最好事先规划好分片的数量,数据扩容时按分片组扩容,则原有分片组的数据不需要迁移。 由于分片组内数据比较均匀,所以分片组内可以避免热点数据问题。...规模可以预期,增长量比较稳定.优势可定时清理或者迁移数据 分片选择总结 1,根据业务数据的特性合理选择分片规则 2,善用全局表、ER关系表解决join操作 3,用好primaryKey让你的性能起飞

    70110

    shardCollection源码解析

    开启的shell命令是:db.adminCommand( {enableSharding: "数据库名"} ) 关键请求参数检查 请求参数检查主要检查三类:分片键、集合名以及chunk数量。...计算分割点时,以0点开始对称分割,依次往外计算分割范围,把区间(-MIN long, +MAX long)分割为与chunks数量相等的区间个数,然后从小到大排序,得到最终的分割点。...,可见,initialSplitPoints记录分割的5个大区间的边界值,为[-3,-1,1,3],而finalSplitPoints记录分割的10个小区间的边界值,为[-4,-3,-2,-1,0,1,2,3,4...返回的分片会先检查如下三类错误类型:一是是否生成一致的分片版本;二是是否DB版本过旧;三是是否错误为"不能隐式创建collection"。如果触发以上三种任意一种错误,都是直接抛出异常退出。...chunk数量,哈希分片如果没有指定该值,会默认设置为分片数的2倍,每个chunk的默认大小为64MB。

    1K30

    微服务开发:断路器详解

    当应用程序的远程服务调用失败次数超过给定阈值时,断路器将在特定时间段内跳闸。在此超时到期后,断路器允许有限数量的请求通过它。如果这些请求成功,则断路器将关闭并恢复正常操作。...OPEN State 一旦远程 API 调用失败百分比超过给定阈值,断路器就会将其状态更改为 OPEN 状态。调用微服务会立即失败,返回异常。也就是说,流量中断了。...HALF OPEN State 在 OPEN 状态停留给定的超时时间后,断路器自动将其状态变为 HALF OPEN 状态。在这种状态下,只允许有限数量的远程 API 调用通过。...如果失败调用计数大于此有限数量,则断路器再次变为 OPEN 状态,流量继续中断。否则关闭断路器,流量恢复正常。...现在 bufferedCalls 计数已按预期更新为 2。由于费率服务已启动,断路器仍处于关闭状态。

    22820

    OB 运维 | 一则 OMS 关联 OCP 报内部错误的诊断案例

    OceanBase 的 OMS 迁移工具功能很丰富,但实际运维中可能会遇到形形色色的问题,服务器内部错误 是比较 "令人头疼" 的一种报错(界面上往往无多余的有效信息提供排查),那么该如何着手呢?...2问题诊断 1. 日志分析 由于 OMS 白屏界面除 服务器内部错误 外无其它报错信息帮助诊断问题,所以第一时间准备登到 OMS 容器上查看 OMS-Console 组件日志。...这里的 2 个问题点: 问题 1:为啥 ALTER TABLE ocp_info DROP COLUMN ... 执行失败?...然而,当指定了 " -f " 参数时,将忽略 init 脚本中的 SQL 执行报错。 所以,OAT 获取到 init 脚本执行的报错码是 0,OAT 判断任务正常完成。...python -m omsflow.scripts.units,oms_init_manager --init-db 4结论 本次案例 OMS 无法关联 OCP (报“服务器内部错误”)是由于要往 OMS

    9310

    号外!!!MySQL 8.0.24 发布

    例如,诸如的查询SELECT * FROM t1 WHERE (SELECT a FROM t2 WHERE t2.a=t1.a) > 0可以重写为SELECT t1.* FROM t1 LEFT OUTER...转换导致在具有32个以上逻辑处理器的系统上错误的CPU掩码计算。此修复程序通过将1shift的 参数替换为来确保在计算CPU掩码时使用64位移位1LL。...当前两个参数之一LIKE是使用多字节字符集的字符串时,可能会出现问题,因为在这种情况下,空值被解释为意味着反斜杠(\)应该用作转义字符,从而破坏了预期的行为。...错误32008597) 将动态参数强制转换为时 YEAR(例如中的 ),未进行类型传播,从而导致执行了其中参数被使用失败的Prepared语句。...(缺陷#31173032,缺陷#32428131) 随着log_slow_extra系统变量启用了加Errno场到慢查询日志输出,错误号即使是失败的语句为0。

    3.7K20

    崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB

    export.csv.isRemoveCsvFileInSuccess=true# csv文件存储路径包含对schema和table的拼接,schema名或table名中包含以上字符时,将会被替换,以避免被操作系统识别错误导致迁移失败...;不过这可能会使某些表(比如AA$与AA.)在替换后使用的csv文件存储路径相同,导致迁移失败(No such file or directory),可以通过重新迁移失败表来解决export.csv.path.replacement.from...export.csv.isRemoveCsvFileInSuccess=true# csv文件存储路径包含对schema和table的拼接,schema名或table名中包含以上字符时,将会被替换,以避免被操作系统识别错误导致迁移失败...5.6一致性校验六、遇到的问题与解决过程6.1遇到的问题安装过程中使用了外置库,然后外置库和目标业务库是同一套数据,导致各种冲突现象,具体如下:1.评估缓慢,不完全兼容的情况下忽略不兼容对象,刷下兼容报告时会报如下错误...6.2解决过程1.将YMP单独部署在一台服务器上,使用默认内置库。2.修改默认内置库为外置库,外置库不能和目标迁移数据库是一个实例。在此特别感谢崖山官方的李梦莹大拿,凌晨0:30帮我把问题解决了

    10310

    微服务架构10个最重要的设计模式

    转向微服务的整个目标将失败(例如,团队授权,独立开发)。 更好的方法是为每个微服务都提供自己的数据存储,以使数据库层中的服务之间不存在强耦合。...通过在给定时间重新处理该业务实体的所有事件,可以扣除该业务实体的状态。因为数据存储为一系列事件,而不是通过直接更新数据存储来存储,所以各种服务可以从事件存储中重播事件以计算其各自数据存储的适当状态。...如果在一定时间内的故障数量超过阈值,则它将跳闸并进入"打开状态"。 · 打开:来自微服务的请求立即失败,并返回异常。超时后,断路器进入半开状态。...消费者驱动的合同测试可以在这方面为我们提供帮助。此处,消费者微服务所有者团队编写了一个测试套件,其中包含针对特定提供者微服务的请求和预期响应(用于同步通信)或预期消息(用于异步通信)。...同样,断路器模式可以极大地帮助处理此类应用程序中的错误情况。将旧的Monolithic应用程序迁移到微服务中具有很大的挑战性,而Strangler模式可以帮助迁移。

    1K10

    StarRocks跨集群迁移最佳实践|得物技术

    同步总耗时(天)=待同步数据总量(MB)/预期同步最大速率(MB/s)/每天可同步时间(个小时/天)注意准确的待迁移数据量评估,依赖数据时间范围的确认。...预期同步最大速率(MB/s),需要兼顾集群当前流量和预估可承受的最大流量,避免因数据同步给集群造成预期外的压力,影响线上服务稳定性。方案实施方案一:外表1....CREATE EXTERNAL TABLE external_db.external_t( k1 DATE, k2 INT, k3 SMALLINT, k4 VARCHAR(2048...insert into external_db.external_t select * from db.other_table;3. 优缺点方案二 Flink SQL1....通常SlotNum/TM设置为1,Parallelism设置为3,以长耗时换取导入任务的运行稳定性。为避免任务失败带来的重跑工作量,单表每次任务可以迁移部分分区,多次执行。4.

    27510

    分库分表—4.数据迁移系统文档一

    ,1核对查询数据)', status int(12) null comment '迁移状态:1同步中,2同步完成,3同步失败', retry_times int default 0 null...enum OperateResult { FAILED ("失败", "1"), SUCCESS ("成功", "0"); }(5)操作类型——OperateTypepublic enum...步骤五:更新迁移明细表记录和迁移记录为同步状态。循环滚动查询出来的每一批次数据处理完后,就更新迁移明细表中该批次的同步状态。当循环滚动从源数据库查不出数据后,就更新本次迁移记录为同步状态。...然后开始统计订单数量,统计⽅式是,对每天的订单数量⽣成⼀条订单数据统计记录。⽐如,最早的⼀条订单创建时间为2020-01-01。下⼀步会计算这个时间,距离当前全量数据迁移任务执⾏时有⼏天,假设有1年。...'每个逻辑库中表的数量', is_deleted tinyint(1) default 0 null comment '0:未被删除,1:已删除', create_time datetime

    3700
    领券