当前位置: 代码网 > it编程>数据库>Mysql > 一次mysql迁移至OceanBase操作实战记录

一次mysql迁移至OceanBase操作实战记录

2025年12月21日 Mysql 我要评论
前言mysqldump 是 mysql 数据库系统中的一个命令行工具,用于创建 mysql 数据库的逻辑备份。它能够导出数据库的结构和数据为 sql 语句文件,这个文件可以用于恢复数据库或在其他服务器

前言

mysqldump 是 mysql 数据库系统中的一个命令行工具,用于创建 mysql 数据库的逻辑备份。它能够导出数据库的结构和数据为 sql 语句文件,这个文件可以用于恢复数据库或在其他服务器上重建数据库。

ps:本次迁移使用了最基本的mysqldump导出进行后续迁移操作。

源库导出前的配置及导出脚本

本次源数据版本:mysql 8.0.31

导出之前的操作---数据库设置参数:

set persist default_collation_for_utf8mb4=utf8mb4_general_ci;

导出操作:

/mysql/bin//mysqldump -h 192.168.40.129  -uroot -p'mysqlpasswd' -p3306 --single-transaction --master-data=2 --set-gtid-purged=off --hex-blob --default-character-set=utf8mb4  --databases shanjiadb > shanjiadb_to_ob.sql

--single-transaction:确保一致性导出。

--master-data=2:记录 binlog 位置,可用于后续搭建增量同步(如果需要)。

--set-gtid-purged=off:如果 mysql 未开启 gtid,可忽略此选项。

处理导出后的sql文件

检查 sql 文件,可能需要手动修改一些 oceanbase不兼容的ddl或语法(例如,将lock语句注释掉).

如果前面没做字符集设置就导出了,可以用下列脚本批量替换:

sed -i 's utf8mb3_general_ci utf8mb4_general_ci g' *.sql
sed -i 's utf8mb4_0900_ai_ci utf8mb4_general_ci g' *.sql
sed -i 'charset=utf8mb3 charset=utf8mb4' *.sql

目标oceanbase准备及导入操作

前面已经将前期准备做好了,接下来可以在目标端ob数据库进行后续操作了。

在备份的表结构语句里,可能包含外键。在导入 oceanbase mysql 里时,如果外键依赖的表没有创建,导入脚本会报错,因此在导入之前需要禁用外键检查约束。

使用 source 命令或 mysql 客户端导入。

mysql> use shanjiaobdb;
 
mysql> source /data/backup/shanjiadb_to_ob.sql;
 
导入大量数据时,建议先禁用外键检查以提高速度:
 
set foreign_key_checks=0;
 
-- 导入操作
 
set foreign_key_checks=1;

本次的迁移操作,因某方便原因,其他一些细节点,并没有放上去,姑且当个笔记记录吧。

文参考文档:

https://www.oceanbase.com/docs/common-oceanbase-database-standalone-1000000003577510

到此这篇关于mysql迁移至oceanbase操作实战记录的文章就介绍到这了,更多相关mysql迁移至oceanbase内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com