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

万里数据库分布式GreatDB集群binlog-server解决方案-部署和启动

原创 Dbb 2024-04-18
536

部署和启动

首先,需要建构集群的一个 binlog-server 节点,该节点需要额外添加如下配置。

gdb-binlog-server = ON

具体启动binlog-server数据抽取任务步骤如下:

  1. 配置binlog-server节点,并启动binlog-server节点。

  2. 通过greatsqldump工具,对GreatDB集群进行全量逻辑备份,并记录逻辑备份完成时,sqlnode和所有shard的gtid值。

    1. 使用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
      
    2. 将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';
    ```
  1. 连接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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论