部署和启动
首先,需要建构集群的一个 binlog-server 节点,该节点需要额外添加如下配置。
gdb-binlog-server = ON
具体启动binlog-server数据抽取任务步骤如下:
配置binlog-server节点,并启动binlog-server节点。
通过greatsqldump工具,对GreatDB集群进行全量逻辑备份,并记录逻辑备份完成时,sqlnode和所有shard的gtid值。
使用greatsqldump工具获取一份全量数据
./bin/greatsqldump --user=xxx --password=xxx --host=xxx --port=xxx --skip-comments --single-transaction --flush-logs --no-data --set-gtid-purged=COMMENT --greatdb-cluster --sql-log-bin=0 --databases xxx > a.sql将a.sql导入到目标数据库中执行
如果目标数据库是单机实例,需要添加如下配置,保证同步序列时不再依赖greatdb engine。
gdb_sequence_force_frontend=ON
1. 将a.sql中的建表建库语句导出到b.sql
```shell
cp a.sql b.sql
sed -i '/LOCK TABLES .* WRITE;/,/UNLOCK TABLES;/d' b.sql
```
1. 在binlog-server节点中执行b.sql
```sql
# connect binlog-server
> reset master;
> set sql_log_bin=OFF:
> source b.sql;
> set sql_log_bin=ON;
```
1. 在a.sql中,包含集群所有节点的gtid信息,如下所示
```sql
/* SET @@GLOBAL.GTID_PURGED='+636c7573-7465-725f-3100-000000000000:1-44';*/
/* greatdb cluster shards gtid information */
/* greatdb-cluster shard_name=sd1 : SET @@GLOBAL.GTID_PURGED='+09e8e601-c906-11eb-843a-ec5c6826bca3:1-4'*/
/* greatdb-cluster shard_name=sd2 : SET @@GLOBAL.GTID_PURGED='+09fc6fdc-c906-11eb-8452-ec5c6826bca3:1-4'*/
/* greatdb-cluster shard_name=sd3 : SET @@GLOBAL.GTID_PURGED='+0a175783-c906-11eb-8482-ec5c6826bca3:1-2'*/
```
将这些gtid拼接,在binlog-server节点中执行gtid_purge命令
```sql
# connect binlog-server
> SET GLOBAL GTID_PURGED='636c7573-7465-725f-3100-000000000000:1-44,09e8e601-c906-11eb-843a-ec5c6826bca3:1-4,
09fc6fdc-c906-11eb-8452-ec5c6826bca3:1-4,0a175783-c906-11eb-8482-ec5c6826bca3:1-2';
```
连接binlog-server节点,启动数据抽取任务,启动命令如下:
START BINLOG SERVER FROM master_host='xxx',master_port=xxx,master_user='xxx',master_password='xxx';其中,master_host,master_port,master_user,master_password为GreatDB集群中处于'online'状态的一个sqlnode节点所对应的IP地址,端口号,用户名和密码。
受sequence实现方式的限制。如果主集群有使用sequence,需要打开连接到binlog server的备节点的如下参数(后面会优化sequence实现方式):
--# 备集群主节点 或 备实例(单机部署方式) gdb_binlog_server_slave_mode=ON
注意:如果GreatDB集群中,所有节点的binlog文件均未purge,用户可以选择跳过第2步,直接通过binlog-server抽取全量集群数据。
停止binlog-server数据抽取任务命令如下:
STOP BINLOG SERVER;
如果在停止binlog-server数据抽取任务后想再次启动数据抽取任务,可以使用上面步骤3中的启动命令。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




