<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>分区 on </title>
    <link>/tags/%E5%88%86%E5%8C%BA/</link>
    <description>Recent content in 分区 on </description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Sat, 03 Oct 2026 21:08:41 +0800</lastBuildDate><atom:link href="/tags/%E5%88%86%E5%8C%BA/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>MySQL 8 迁到 OceanBase 4.2 的兼容差异与分区取舍</title>
      <link>/posts/mysql-to-oceanbase-migration/</link>
      <pubDate>Sat, 03 Oct 2026 21:08:41 +0800</pubDate>
      
      <guid>/posts/mysql-to-oceanbase-migration/</guid>
      <description>为什么把 MySQL 迁到 OceanBase prize-service 是奖池活动的后端服务，在整体架构里的位置见H5 应用容器与奖池的架构。它负责抽奖券扣款、奖池入账、派奖结算和事件发布，核心存储原先跑在 MySQL 8 上。
迁移的出发点在写入扩展：系统按每天 3 亿笔交易设计（平均每秒约 3500 笔），抽奖券流水和奖池流水跟着交易写入，单机 MySQL 的写入能力就是上限；在应用层上分库分表中间件（比如 ShardingSphere）又要自己维护分片键，跨分片的对账查询和事务都得改。OceanBase 的 MySQL 模式兼容 MySQL 协议和大部分语法，多节点扩展和多副本高可用由数据库自己提供，应用层不用再加分片这一层。
服务的开发和测试基线原先基于 MySQL 8：Testcontainers 拉取 mysql:8.0，表结构由 Liquibase 管理，Hibernate 启动时按实体校验表结构。测试环境接入的是 OceanBase 云服务上的 MySQL 模式租户，SELECT VERSION() 返回 5.7.25-OceanBase-v4.2.5.7。
为了逐项摸清两边的行为差异，本地对照了两个容器：MySQL 8.0.46（官方镜像 mysql:8.0）和 OceanBase CE 4.2.5.5（镜像 oceanbase/oceanbase-ce:4.2.5-lts，MODE=mini 单节点），两边均使用默认参数。
迁移过程中的兼容性注意点 迁移中遇到的差异有六处：会话变量的默认值、Hibernate 生成的锁语句、三处事务并发行为，以及一次性运维脚本里的几个参数。
会话变量的默认值 连上数据库后首先对照会话变量，下表为本地两个容器中 SHOW VARIABLES 的输出：
变量 MySQL 8.0.46 OceanBase CE 4.2.5.5 transaction_isolation REPEATABLE-READ READ-COMMITTED lower_case_table_names 0 1 collation_server utf8mb4_0900_ai_ci utf8mb4_general_ci sql_mode ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER time_zone SYSTEM +00:00 innodb_lock_wait_timeout 50 50 ob_trx_lock_timeout 无此变量 -1 ob_query_timeout 无此变量 10000000（微秒） 前五行各自影响的地方：</description>
    </item>
    
  </channel>
</rss>
