跳到主要内容

使用外部元数据库

NineData 社区版支持将元数据存储于企业自有 MySQL 数据库,实现高可用、集中化元数据管理。

前提条件

  • NineData 社区版版本至少为 4.1.0。当前版本号,可登录 NineData 社区版控制台查看,位于页面左上角。

    version

  • 自有 MySQL 数据库版本为 8.0 及以上,且账号需要具备创建数据库(CREATE DATABASE)的权限。若没有该权限,则需提前创建好以下数据库并赋予账号库的所有权限:meta、scheduler、slow_log、track_event、replication_exec、replication_metastore

  • 确保部署 NineData 社区版的服务器能够访问外部 MySQL 元数据库实例。

方案一:自动建库模式(推荐)

此方案允许 NineData 自动创建元数据库,无需手动创建。

  1. 访问自建 MySQL 元数据库。

  2. 创建 NineData 专用用户。

    CREATE USER 'ninedata'@'%' IDENTIFIED BY '<Your-Password>';
  3. 授予全局权限。

    GRANT ALL ON *.* TO 'ninedata'@'%';
  4. 在部署 NineData 社区版服务的 docker run 命令中传入如下 META_DB 环境变量,格式为 -e META_DB=<数据库账号>:<数据库密码>@<数据库 Host>:<数据库端口号>。示例如下:

    docker run -p 9999:9999 --privileged -v /opt/ninedata:/u01 -e META_DB=ninedata:123456@127.0.0.1:3306 --name ninedata -d swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:4.1.0

方案二:手动建库模式

此方案适用于无法授予 NineData 建库权限的场景,需手动预创建所需数据库,并对账号授予这些数据库的完全管理权限。

  1. 访问自建 MySQL 元数据库。

  2. 通过 CREATE DATABASE 语句创建所有所需元数据库。

    CREATE DATABASE meta;
    CREATE DATABASE scheduler;
    CREATE DATABASE slow_log;
    CREATE DATABASE track_event;
    CREATE DATABASE replication_exec;
    CREATE DATABASE replication_metastore;
  3. 创建用户并对齐授予上述数据库的完全管理权限。

    CREATE USER 'ninedata'@'%' IDENTIFIED BY '<Your-Password>';
    GRANT ALL PRIVILEGES ON meta.* TO 'ninedata'@'%';
    GRANT ALL PRIVILEGES ON scheduler.* TO 'ninedata'@'%';
    GRANT ALL PRIVILEGES ON slow_log.* TO 'ninedata'@'%';
    GRANT ALL PRIVILEGES ON track_event.* TO 'ninedata'@'%';
    GRANT ALL PRIVILEGES ON replication_exec.* TO 'ninedata'@'%';
    GRANT ALL PRIVILEGES ON replication_metastore.* TO 'ninedata'@'%';
    FLUSH PRIVILEGES;
  4. 在部署 NineData 社区版服务的 docker run 命令中传入如下 META_DB 环境变量,格式为 -e META_DB=<数据库账号>:<数据库密码>@<数据库 Host>:<数据库端口号>。示例如下:

    docker run -p 9999:9999 --privileged -v /opt/ninedata:/u01 -e META_DB=ninedata:123456@127.0.0.1:3306 --name ninedata -d registry.cn-hangzhou.aliyuncs.com/ninedata_public/ninedata:4.1.0