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 ""