前言
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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论