本文为您介绍MMA命令行工具,帮助您快速了解配置任务、迁移作业、查看作业状态、SQL兼容性检查等所使用的命令。

背景信息

MMA命令行工具位于bin目录下,包含工具如下:
  • configure:配置引导工具。详情请参见configure
  • gen-job-conf:生成任务配置工具。详情请参见gen-job-conf
  • mma_client :客户端命令行工具。详情请参见mma-client
  • mma_server:服务端命令行工具。详情请参见mma-server
  • sql-checker:SQL兼容性检查。详情请参见sql-checker

configure

通过运行bin目录下configure文件进行引导配置MMA。命令如下:
./configure

gen-job-conf

gen-job-conf为生成任务配置工具。
  • 表级别任务配置。
    1. 进入conf目录配置table_mapping.txt文件。该配置文件呈现待迁移表与目标表的对应关系,文件中每一行对应一个源数据库表到目标数据库表的迁移任务。内容如下:
      source_catalog.source_table1:dest_pjt.dest_table1

      全名的格式为库名.表名。例如source_catalog.source_table1:dest_pjt.dest_table1表示源表为source_catalog库中的表source_table1,目标表为dest_pjt项目下的表dest_table1。

    2. 进入bin目录执行以下命令,会根据conf目录下table_mapping.txt文件,在conf目录下生成MMA迁移配置文件TABLE-<source_catalog.>.<source_table1>-<dest_pjt>.<dest_table1>-<job_id>.json
      ./gen-job-conf --objecttype TABLE --tablemapping conf/table_mapping.txt
    3. 在生成的配置文件中添加以下三个属性指定迁移分区。
      • 内容示例
        {
          "mma.filter.partition.begin":"2021/01",
          "mma.filter.partition.end":"2021/05",
          "mma.filter.partition.orders":"lex/lex"
        }
      • 参数说明
        • mma.filter.partition.beginmma.filter.partition.end:斜线(/)分割的分区值,指定了迁移的分区范围。两者需要满足mma.filter.partition.begin<= mma.filter.partition.end
        • mma.filter.partition.orders:斜线(/)分割的分区值排序类型。排序类型有两种lex(普通字典序)和num(数字序),一般使用lex即可。
  • 库级别任务配置。
    • 命令格式
      ./gen-job-conf --objecttype CATALOG --sourcecatalog <sourcecatalog_name> --destcatalog <destcatalog_name>
    • 参数说明
      • sourcecatalog_name:源数据库名称。例如Hive数据库名。
      • destcatalog_name:目标数据库名称。例如MaxCompute项目名。

mma-client

使用mma-client工具进行任务的增删改查管理。
  • 命令格式
    进入bin目录执行以下命令查看mma-client工具命令格式以及参数。
    ./mma-client -h
  • 命令示例
    • 向MMA server提交迁移任务。
      ./mma-client --action SubmitJob --conf <TABLE-<source_db>.<source_table>-<dest_db>.<dest_table>-<job_id>.json>
      说明 TABLE-<source_db>.<source_table>-<dest_db>.<dest_table>-<job_id>.json:MMA迁移配置文件。详情参考gen-job-conf中的表级别任务配置。
    • 查看任务状态。
      ./mma-client --action GetJobInfo --jobid <job_id>
    • 查看迁移任务列表。
      ./mma-client --action ListJobs
    • 删除迁移任务。
      ./mma-client --action DeleteJob --jobid <job_id>
    • 重置迁移任务。
      ./mma-client --action ResetJob --jobid <job_id>
      说明
      • 状态为SUCCEEDED、FAILED、CANCELED三种状态下的任务可以被重置。
      • 当需要增量同步时,重置SUCCEEDED状态下的任务。
      • 当需要重试失败任务时,重置FAILED、CANCELED状态下的任务。

mma-server

mma-server为服务端命令行工具。MMA配置完成以后,进入bin目录执行以下命令启动MMA server。
./mma-server
说明 MMA server进程在迁移期间应当一直保持运行。若MMA server因为各种原因中断了运行,直接执行以上命令重启即可。MMA server进程在一台服务器最多只能存在一个。

sql-checker

使用sql-checker检查SQL脚本的兼容性。
  • 命令格式
    ./sql-checker [-d | -f | -q] [-s]
  • 参数说明
    • -d:包含SQL脚本(特指以.sql结尾的文件)的目录。
    • -f:用于指定SQL脚本文件所在路径。
    • -q:用于直接输入query。
    • -s:用于提供逗号分隔的MaxCompute SQL设置。
    说明 -d-f-q,三个选项互斥,每次执行最多选择其中一个。
  • 命令示例
    • 检查单个query。进入MMAbin目录执行以下语句,sql-checker直接输出此query的兼容性信息。
      ./sql-checker -q "select * test_db.test_tbl;"
    • 检查SQL脚本中所有query。进入MMAbin目录执行以下语句,sql-checker直接输出指定脚本(script.sql)兼容性总结。
      ./sql-checker -f /root/mingyou/scripts/script.sql
    • 检查目录下所有SQL脚本。进入MMAbin目录执行以下语句,sql-checker输出指定目录下各脚本的兼容性总结,并在最后汇总为该目录的兼容性总结。
      ./sql-checker -d /root/mingyou/scripts/
    • 指定MCQL settings。通常进行兼容性检查时,通过指定一些MCQL settings可以绕过不兼容的问题。
      ./sql-checker -d sample-queries-tpcds/ -s "odps.sql.decimal.odps2=true,odps.sql.type.system.odps2=true,odps.sql.validate.orderby.limit=false,odps.sql.timezone=UTC"
      参数说明
      • odps.sql.type.system.odps2=trueodps.sql.decimal.odps2=trueodps.sql.hive.compatible=false:以上三个配置指定使用MaxCompute2.0类型系统。
      • dps.sql.timezone=UTC:提供一个默认Timezone。