数据库

数据迁移后的一致性校验

数据库

MySQL 中 redo log、undo log、binlog 的总结

Java 开发 / 数据库

通过 Jdbc + Job 解决跨库大表数据迁移

Java 开发 / 数据库

Error running jOOQ code generation tool: com.mysql.cj.jdbc.Driver..

数据库

MySQL 常用锁和 MVCC 总结

3月20日 · 2020年

[升级版]通过 Jdbc + Job 解决跨库大表数据迁移

152 0
前面写过一篇通过 Jdbc + Job 解决跨库大表数据迁移,那只是个初始版本,后面对其进行了优化改造,数据迁移性能大幅度提升。优化点单实例 Job 优化为多实例 Job单线程优化为多线程普通偏移优化为分段偏移...
1月27日 · 2020年

通过 Jdbc + Job 解决跨库大表数据迁移

420 0
将 scala 项目重构为 Java 微服务,在进行读迁移时,其中有一块业务数据量是亿级别的,需要进行跨库数据迁移(注意:表结构发生了很大变化),并且在迁移过程中尽量做到不停服迁移。针对亿级别的数据量级,肯定不能使用脚本迁移的方式迁移,更不可能使用 mysqldump 命令进行导入导出进行数据迁移。网上还有以导入导出文件的形式迁移百万级数据,但是这个操作需要修改 mysql 的配置,保险起见,直接 pass ...最终,选择通过 Jdbc 配合 Job 在双写阶段进行数据迁移,待数据迁移基本完毕,并且数据一致性校验没问题后,再进行读迁移的上线(此时,只需要业务方上线,将读切换到现在的微服务即可)。...
12月15日 · 2019年

Error running jOOQ code generation tool: com.mysql.cj.jdbc.Driver..

517 0
今天在用 JOOQ 生成代码的时候,即运行 mvn clean install 命令时,出现以下错误,代码中指定的驱动明明是“com.mysql.jdbc.Driver”,但是报错信息中显示的确是驱动“com.mysql.cj.jdbc.Driver”。经搜索,com.mysql.jdbc.Driver 是 mysql-connector-java 5 中的com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6 及以上版本中的.....
12月10日 · 2019年

MySQL 常用锁和 MVCC 总结

549 0
前段时间,在 scala 项目的某块业务迁移到微服务上线前,测试环境意外地发生了两次死锁问题,触发死锁的原因不同,一次是因为数据迁移不到位,由更新操作导致,解决方式是重写 update 方法。另一个是因为前人写的代码太过于随意,一个事务中包含了多个模版方法,由不同的子类去实现方法,后人在实现时,有可能并不知道自己实现的方法是被嵌套在事务中的,从而扩展了很多操作,操作中不乏有耗时的远程调用,从而一个小事务被慢慢积累成一个大事务,最终导致了死锁,由于老业务(scala 项目)很复杂,当时解决的方式是将死锁的方法异步处理。从那之后,自己断断续续做了一些关于 MySQL 并发相关的笔记,本文先梳理下 MySQL 控制并发访问的两种手段(MVCC 和几种常用锁)。...
12月5日 · 2019年

MySQL 中 redo log、undo log、binlog 的总结

5681 1
本文主要总结下重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)的概念。redo log 是物理日志,undo log 和 binlog 是逻辑日志,物理日志的恢复速度远快于逻辑日志。innodb 事务日志包括 redo log 和 undo log,redo log 是重做日志,提供前滚操作,undo log 是回滚日志,提供回滚操作。...
11月29日 · 2019年

数据迁移后的一致性校验

882 0
目前正在对 scala 项目(某块业务)重构,重构成 Java 微服务,业务、表设计都有些许变化,其中涉及到数据迁移,简单来说就是从老表迁到新表(表结构发生了变化)。为了保证迁移前后数据的一致性,需要进行一些必要的验证。本文主要讨论下自己在进行数据一致性校验时用到的方法,仅仅作为一种数据验证的思路,分享给大家,内容可能有一些瑕疵,欢迎大家指正。...