openGauss

开源数据库

openGauss社区官网

开源社区

迁移实践案例

一.迁移评估

对现有业务系统进行调研,主要包括服务器硬件信息、操作系统信息、业务部署形态、业务特征、数据量、全量的待评估 SQL 语句等。

1.对于机器资源受限(4C8G)场景,提供一套数据库参数列表,以最大限度地提升数据库和迁移性能。

(1)全量迁移阶段,建议关闭的参数,这些参数都可以直接修改生效:

ssl=off
fsync=off
audit_enabled=off
autovacuum = off
track_activities = off
track_counts = off
track_sql_count = off
enable_instr_track_wait = off
enable_instr_rt_percentile=off
enable_instance_metric_persistent=off
enable_logical_io_statistics=off
enable_user_metric_persistent=off
enable_instr_cpu_timer = off
enable_resource_track = off
enable_asp=off
enable_stmt_track=false
enable_cachedplan_mgr = off
enable_global_syscache = off
light_comm = on
instr_unique_sql_count=0

(2)提升数据库性能,建议修改的值:

参数名参数类型reload 生效参数描述
max_process_memoryPOSTMASTER一个数据库节点可用的最大物理内存
shared_buffersPOSTMASTERopenGauss 使用的共享内存大小
cstore_buffersPOSTMASTER列存所使用的共享缓冲区的大小
wal_buffersPOSTMASTER用于存放 WAL 数据的共享内存空间的 XLOG_BLCKSZ 数
advance_xlog_file_numPOSTMASTER在后台周期性地提前初始化 xlog 文件的数目
log_checkpointsSIGHUP在服务器日志中记录检查点和重启点的信息
enable_codegenUSERSET开启代码生成优化,目前代码生成使用的是 LLVM 优化
wal_receiver_timeoutSIGHUP从主机接收数据的最大等待时间
enable_pbe_optimizationUSERSET对以 PBE(Parse Bind Execute)形式执行的语句进行查询计划的优化
max_files_per_processPOSTMASTER设置每个服务器进程允许同时打开的最大文件数目
pagewriter_sleepSIGHUP脏页数量不足 pagewriter_threshold 时,后台刷页线程将 sleep 设置的时间继续刷页
enable_slot_logUSERSET是否开启逻辑复制槽主备同步特性

2.针对全量业务 SQL,利用 Datakit 兼容性评估工具进行分析,评估语法的兼容度,包括完全兼容,部分兼容,不兼容三种场景,评估结果示例如下:

二.应用适配

根据迁移评估的结果,针对不兼容的部分,业务侧进行修改并验证。比如:语法错误的,重新修改 SQL 的写法,直到能正确运行。

三.数据迁移

利用 DataKit 一站式迁移平台进行业务迁移,实时展示迁移进度,迁移全流程可视化,并集成监控、运维等能力,实现全场景简单、高效、完整的迁移。

针对无增量数据的业务,采用离线迁移模式,主要包括全量迁移和全量校验两个阶段;

针对有增量数据的业务,采用在线迁移模式,主要包括全量迁移、全量校验、增量迁移、增量校验、反向迁移五个阶段。全量迁移和全量校验完成后,会自动进入增量迁移和增量校验阶段。

具体操作:

1)点击进入 DataKit 服务“数据迁移 -> 迁移任务中心”目录下

2)点击“创建数据迁移任务”按钮

3) 开始“选择迁移源库和目的库”步骤。选择源端数据库(MySQL 端),选择目的端数据库(openGauss 端),并点击“添加子任务”按钮,支持添加多条子任务。成功添加子任务后,在页面下方选择对应子任务的“迁移过程模式”,支持选择“在线模式”和“离线模式”。 “选择迁移源库和目的库”配置成功,点击下一步。

4) 开始“配置迁移过程参数”步骤。直接使用默认参数即可,点击“下一步”。

5) 开始“分配执行机资源”步骤。页面会展示所有的执行机列表信息,页面左侧复选框,勾选一台已安装迁移套件(portal)的执行机,点击完成,创建迁移任务成功。

6)点击迁移任务记录右侧的“启动”,开始迁移,在详情中可以观测具体的迁移过程和进度。

四.试运行

所有业务迁移完毕后,通过原有业务测试用例和方法对业务进行单元测试和集成测试,测试通过后,方可正式上线。

五.生产割接

针对有增量数据的业务,等增量数据将要追平后,可进行业务割接。

图示中增量迁移——剩余待写入数据:0 条,即标志增量数据已追平。

业务割接可总结为如下三个步骤:

(1)设置应用所在的源端 MySQL 备机为只读(set global read_only=1),此时除具有超级管理员的用户(如迁移用户)具有写入权限,普通用户(如业务用户)无写入权限;

(2)等增量数据全部迁移完成后,停止增量迁移,并启动反向迁移;

(3)修改应用的配置文件,将应用由 MySQL 切换至 openGauss 数据库,并启动应用程序。

至此已实现应用无缝切换至 openGauss 数据库。