暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

万里数据库分布式从GreatDB Cluster迁移到MySQL

原创 Dbb 2024-04-18
208

从GreatDB Cluster迁移到MySQL

GreatDB Cluster支持使用greatsqldump对GreatDB Cluster进行逻辑全量备份。

使用greatsqldump进行逻辑备份

总共分为三步:

  1. 使用greatsqldump对集群进行全量逻辑备份,生成sql文件
  2. 修改sql文件中的建表语句
  3. 在MySQL端执行sql文件

greatsqldump导出sql文件

 greatsqldump --no-tablespaces --compact --skip-tz-utc --single-transaction --flush-logs --set-gtid-purged=COMMENT --greatdb-cluster --sql-log-bin --databases xxx > test.sql

在备份文件开头处,会生成所有shard当前GTID的位置,如下所示:

 // 这里是SQLNode的GTID位置
 34 /* SET @@GLOBAL.GTID_PURGED='+636c7573-7465-725f-3100-000000000000:1-110';*/
 35 /* greatdb cluster shards gtid information */
 // 下面是各个SHARD的GTID位置
 36 /* greatdb-cluster shard_name=sd1 : SET @@GLOBAL.GTID_PURGED='+ea4a2fff-9def-11eb-bf66-e454e8995a0e:1-13'*/
 37 /* greatdb-cluster shard_name=sd2 : SET @@GLOBAL.GTID_PURGED='+ea3eb229-9def-11eb-bf7e-e454e8995a0e:1-7'*/
 38 /* greatdb-cluster shard_name=sd3 : SET @@GLOBAL.GTID_PURGED='+ea407101-9def-11eb-bf96-e454e8995a0e:1-2'*/

修改SQL文件

由于原始导出的sql文件默认的引擎是GreatDB引擎,而单机MySQL是没有这种引擎的,有两种方式可以解决这个问题:

  1. 替换引擎名称

    sed -i 's/ENGINE=GreatDB/ENGINE=InnoDB/g' test.sql
    
  2. 设置MySQL端的SQLMode,去掉NO_ENGINE_SUBSTITUTION选项,这样如果找不到对应引擎,就会创建成默认引擎了。

导入SQL文件

M导入方式如下:

# mysql -h127.0.0.1 -P3306 -uroot -pxxx < test.sql
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论