DMS指引教程

1、前提条件

1.1 开通DMS账号

开通DMS账号权限需要在OpsCloud上提交阿里云RAM策略申请,流程审批完成后DMS账号和初始化密码将发送钉钉通知

RAM

1.2 登录DMS

DMS登录地址:登录DMS

DMS Login

请注意选择RAM用户登录并填入收到的账号密码

1.3 数据库权限申请

在DMS页面顶部导航栏安全与规范中选择权限工单,点击右上角的权限申请

privileges

根据需求在权限工单页面选择对应的环境、数据库、权限类型等

privileges detail

2、DMS使用

2.1 SQL查询

DMS顶端导航栏选择SQL窗口, 选择相应的数据库

SQL Console

进入编辑窗口,写入SQL语句,点击执行可得到结果集

select

2.2 导出工单

如需要导出数据集或导出整表,顶端导航栏选择数据库开发数据导出SQL结果集导出

export

导出工单填写示例

export detail

2.3 数据变更

如果需要执行数据变更,请在顶端导航栏选择数据库开发数据变更普通数据变更,填写相关信息,并提交流程

CRUD

注意! 如果提交的是MongoDB变更工单, 回滚SQL语句必填,否则不予通过。示例如下:

执行SQL

db.test.remove({name:"tom"})

回滚SQL

db.test.insert({name:"tome",age:NumberInt(18),address:"shenzhen"})

3、审批流程

workflow

3.1 日常变更

日常变更由开发人员自行提交变更工单,由TL和DBA审批

3.2 版本发布

版本发布因开发人员较多,涉及的模块也较多,因此需要项目组内部按照不同模块合并汇总SQL语句,并由TL进行review后,统一进行变更工单提交,由TL和DBA进行审批

issuse

4、注意事项

4.1 资源命名规则

资源命名格式为:{云服务}_{数据库类型}_{实例名}_{环境},操作时应先确认环境和数据库正确,再进行操作

key value desc
云服务 ali 阿里云
aws 亚马逊云
数据库类型 RDS MySQL
mongo MongoDB
环境 dev CI开发环境
daily 测试环境
gray 灰度环境
prod 生产环境

4.2 MongoDB语法

DMS针对MongoDB支持下列语法

操作类型 命令列举
CRUD 查询:aggregate,find,findOne,count,distinct,getIndexes,
getShardDistribution,isCapped,stats,dataSize,storageSize,
totalIndexSize,totalSize
更新:insert,save,findAndModify,remove,update
索引:createIndex,createIndexes
DB命令 commandHelp,currentOp,getCollectionInfos,
getCollectionNames,getLastError,getLastErrorObj,
getLogComponents,getPrevError,getProfilingStatus,
getReplicationInfo,getSiblingDB,help,isMaster,
listCommands,printCollectionStats,printReplicationInfo,
version,serverBuildInfo,serverStatus,stats

DMS不支持db.getCollection('xxxx').insert()语法,请直接使用db.xxxx.insert()

更新操作

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)
选项 类型 描述
query document 更新的过滤条件
update document 更新模式
upsert boolean (可选)没有匹配到查询条件时,是否创建新文档,默认为false
multi boolean (可选)是否更新匹配到的多个结果,false则只更新第一条

更新单个文档

db.books.update(
   { item: "EFG222" },
   { $set: { reorder: false, tags: [ "literature", "translated" ] } },
   { upsert: false, multi: false }
)

更新多个文档

db.books.update(
   { item: "EFG222" },
   { $set: { reorder: false, tags: [ "literature", "translated" ] } },
   { upsert: false, multi: true }
)

插入操作

插入单个文档

db.products.insert( { item: "card", qty: 15 } )

插入多个文档

db.products.insert(
   [
     { _id: 11, item: "pencil", qty: 50, type: "no.2" },
     { item: "pen", qty: 20 },
     { item: "eraser", qty: 25 }
   ]
)

删除操作

DMS仅支持remove命令

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)
选项 类型 描述
query document 指定删除条件
justOne boolean (可选)是否只删除匹配到的第一个文档,默认为false
db.products.remove( { qty: { $gt: 20 }, $isolated: 1 } )

MongoDB语法请参考:MongoDB官网文档

4.3 变更规范

  • [ALL] 禁止全表update
  • [ALL] 禁止全表delete
  • [ALL] 禁止truncate和drop操作
  • [ALL] 工单中禁止使用USE database等无关命令
  • [MySQL] DDL需要在多个国家执行,请选择所有国家的数据库
  • [ALL] Insert批量插入需要合并为单条Insert语句的写法

results matching ""

    No results matching ""