MySQL之 数据库操作管理/开发规范【附件world可下载】

news2025/2/25 6:18:46

一、 目的

为了在软件生命周期内规范数据库相关的设计、开发、运维工作,便于不同团队之间的沟通及协调,制定此文档,以期在相关规范上达成共识和默契,提升相关环节的工作效率及系统的可维护性。同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好保证。

二、 使用范围

本文档适用于研发人员、运维开发成员、DBA等所有能接触数到据库的人员。

三、 数据库管理人员规范

3.1、环境信息介绍

 DEV:开发环境
 SIT:系统集成测试环境
 UAT:用户验收测试环境
 PRD:生产环境
 PET:压测环境
 TEP:临时测试环境,主要用于及时回收
 OTHER:其他环境,JenKins、Airflow,不涉及数据库组件相关

3.2、实例申请流程&标准架构

3.2.1、申请流程

【要求】申请实例请注意如果没有使用量情况下尽量复用,可以后续迁移/独立出来;同时实例申请时给出业务量、QPS、TPS预估、特殊跑批情况说明等。
案例:一个数据库实例一张表,3.6W数据,造成资源浪费及增加不必要的维护成本。
在这里插入图片描述

【要求】资源申请流程

3.2.2、部署架构

【要求】标准部署架构及实例数量参考标准如下:

在这里插入图片描述
在这里插入图片描述

【要求】切记UAT环境需要保持和生产环境一致;并且涉及到生产环境改造,必须在UAT环境先进行改造验证,之后升级生产环境。
【建议】针对产品型系统、非供应商驻场开发、迭代缓慢(例如:一年例行更新一次)的情况,可以酌情及时释放非PRD环境,如有需要再申请重建数据库相关资源;需要BA确认。
【建议】对于开发人员dev等开发环境申请,尽可能复用现有自己已有环境;比如:开发团队A,已有环境DEV_A,现在另外项目需要MySQL_B,项目组成员尽可能在DEV_A新建schema即可完成项目需求;无限再次申请。若项目上线期间,两个完成不同的项目可以单独申请单独部署。
【建议】DEV、SIT环境如果没有特殊要求,尽可能保持一个一套环境。

3.2.3、基础架构变更

【要求】如遇到数据库、中间件、分布式、大数据等参数调整、重启服务、配置文件修改、优化、升级等涉及基础架构变更,需要进行OA工单申请,经审批后方可操作。
【要求】申请内容包含变更原因、影响范围、变更影响时间、操作人、关联方等主要内容。
【要求】OA工单入口:ITSM-》基础架构变更流程

3.3、部署

3.3.1、配置模板、系统参数调整

【要求】标准参数配置模板,详细见confluence体现,避免随意修改;如有必要提出标准化调整。
【建议】部署方式1、参考现有Ansible脚本推送方式;2、手工部署;但前提必须配置、系统参数按标准化模板
【要求】如超出标准范围,需要邮件申请,(比如:Redis生产环境只支持单机模式,不支持sentinel模式)。
【要求】UAT、PET、PRD环境保持一致、DEV、SIT尽可能单机即可。
【要求】如模板参数需要变更、或部署方式变更等等,需要团队成员会议讨论后,形成标准,记录在confluence;例如mysql5.7集群模板_20210314

3.3.2、部署

【要求】针对MySQL高可用集群(VIP+Proxysql+Orchestrator+MySQL),部署架构如下:
1、 业务无单独从库使用:主+备+从(DBA)+北京从库。
2、 业务抽数、读写分离主:主+备+从(DBA)+北京从库;只读、读写分离从库不参与切换。正常情况下3+1模式。 如自动切换后,待原主库恢复正常之后手工切回。
其中:主备可以互切换
3.3.3、实例版本
特别在业务招标过程中,经常会遇到供应商系统过于老化,给出的标配版本过于老旧;使用过旧的版本很大程度上供应商没有精力迭代自己的产品,或投入过少。
【要求】所有版本组件避免过于老旧(官方已放弃更新、版本更新频繁,使用N年前版本)。
【要求】所有版本组件避免过于最新版本,最多可以选择次新稳定版本,除非特殊需求外(如系统漏洞)避免踩坑。
【要求】当前各个组件版本列表,资源配置默认最小化,运行过程中如有需要增加走OA单独申请。默认资源配置:开发环境应低一档次。
【建议】非功能性评审过程中增加对组件版本要求,避免供应商要求的组件版本过低。
在这里插入图片描述

3.3.4、实例规格参考

3.3.4.1、MySQL规格

在这里插入图片描述

3.3.4.2、MongoDB规格

在这里插入图片描述
在这里插入图片描述

3.3.4.3、Redis规格

在这里插入图片描述

3.3.4.1、ElasticSearch规格

在这里插入图片描述

3.4、账户权限

【要求】严格把控好管理权限,只将管理权限赋予管理员。
【要求】禁止有 super 权限的应用程序账号存在。
【要求】禁止有 DDL、 DCL 权限的应用程序账号存在。
【要求】部署完系统,给出的账号DEV、SIT至少两个(应用账号、个人使用账号),并注明账号用途;对于UAT、PET、PRD默认1个应用账号,如需个人账号单独申请,且权限最小化。

3.4.1、个人账户

【要求】DEV、SIT:数据库Owner权限。
【建议】UAT、PET、PRD: 仅SELECT权限,超出范围OA另外单独申请。

3.4.2、应用账户

【要求】DEV、SIT、UAT、PET、PRD:INSERT/DELETE/UPDATE/SELECT/EXECUTE;
【要求】如需要超出增删改查之外,如DDL权限应做以下限制:
1、 上会评审,确认业务需求,明确使用范围;并且在授权时限制白名单。
2、 限制使用场景
由于:大表增加列、索引等情况可能会造成线上阻塞情况;增加字段如before、after场景不适用等等……

3.4.3、账户命名规则

【要求】个人账户:精确到个人;比如GRANT SELECT ON TEST.* TO ’qiaoyujin’@’%’;
【要求】应用账户:应用、业务名称;
【要求】其他应用类似抽数使用,需要精确到具体表名;比如数仓抽数使用GRANT ALL SELECT ON table.* TO ’dwh’@’%’;
【建议】应用本身使用,应使用应用缩写;比如cbp_write

3.4.4、权限申请

【要求】OA提交变更申请(OA->基础架构->数据库)
【建议】必要条件:业务系统、schema、业务表名(不建议全部授权),特殊需要,特殊审批。
【要求】UAT、PRD环境一致,在创建PRD环境时,直接将UAT环境权限、用户COPY到PRD 环境。后续变更需业务团队单独提出申请。比如:业务运行一段时间,业务提出UAT增加drop权限,PRD环境需要业务团队OA申请单独授权。
【要求】权限最小化原则
【要求】访问路径除DEV环境外,本地办公环境禁止开通数据库相关端口访问,必须指定通过堡垒机访问数据库。

3.4.5、密码规则

【要求】 所有组件需要密码认证的情况下,必须适配认证机制;且密码不能过于简单(123456、888888等等)。
【要求】密码要求8位以上,包含数字、字母(大、小写)、特殊字符
【要求】密码特殊字符“!”,“@” ,“#” ,“$” ,“%”等除外,只允许包含指定下划线“_” ,如7yrREE123_123

3.4.6、账号申请模板

事由:XXXX
账号类型:应用使用/个人使用
数据库类型:Oracle/MySQL/SQLServer
绑定白名单:数据库访白名单(127.0.0.1
数据库地址:127.0.0.1
数据库名称:db1
申请表名:ALL/table_1;table_2;table_3…………(遵循权限最小化原则)
账号名称:应用账号(应用名称_标识符)、个人账号(个人姓名小写全拼)
账号权限:(如:SELECT, INSERT, UPDATE, DELETE, EXECUTE/SELECT/其他)
说明:一般个人仅只读SELECT权限;
应用账号:SELECT, INSERT, UPDATE, DELETE, EXECUTE

3.4.7、账号回收

【要求】 用户因离职、岗位调动等原因而不允许使用原账号时,不论原用户是否知晓或同意,系统管理员应当及时注销该用户个人账号并回收权限。禁止将原个人账号转交其他人员继续使用。
【要求】账号回收涉及对象包含内部员工、外包员工,凡涉及到数据库账号者。

3.5、发版

3.5.1、变更申请

【要求】需要提前和数据平台同学预约,以便留人值守,特殊情况除外。
【要求】评审完之后,建议BA同学提前发出上线脚本,便于提前审核评估。
【要求】OA提交变更单入口:
在这里插入图片描述

    注意:所有流程待审批完成之后方可执行。 

【发版】发版流程如下:待确认
在这里插入图片描述

【要求】脚本变更后,如业务需要增加变更脚本,需重新提交变更单。
【要求】业务团队目前只有DEV、SIT脚本执行权限;UAT、PRD执行权限全部由数据平台团队完成;区别在于UAT:邮件申请;PRD需要OA申请审批。
【要求】若DBA同学开发代码需要线上执行,必须由另外一个同学协助执行,便于互审。
【要求】如发布单子漏发SQL,需要重新提交OA申请。
【要求】申请模板如下:
应用名称:新核心
IP:127.0.0.1
数据库:cbb
变更原因:由于新核心上线移植数据中存在部分还款方式为等额本息,但是含有尾款的合同;会导致新核心对应的尾款展期业务无法处理;因此需要修正此部分合约;
附件SQL:上传SQL脚本
【要求】数据变更,需要单独申请数据库变更单,禁止和业务发布单合并发布,DDL变更可以可业务变更合并发布。

3.5.2、执行变更

【要求】对于普通主从复制,进入主库执行;采用show salve hosts、show processlist查看
【要求】对于高可用集群proxysql,避免

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1473968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单聊聊现在的AI

简单聊聊现在的AI 前言主要的AI模型和形式LLM - Large Language Model(大语言模型)BOT(机器人)LAM - Large Action Models(大行动模型)Agent(智能体) 结尾 前言 好久没回来写博客&a…

java 通过 microsoft graph 调用outlook

废话不多说 一 官方文档 先看一下官方文档,https://learn.microsoft.com/zh-cn/graph/tutorials/java?contextoutlook%2Fcontext&tabsaad&tutorial-step1 其中的代码,可以通过地址下载:https://developer.microsoft.com/en-us/gra…

基于uniapp框架的古汉语学习考试系统 微信小程序python+java+node.js+php

1、一般用户的功能及权限 所谓一般用户就是指还没有注册的过客,他们可以浏览主页面上的信息。但如果需要其它操作时,要登录注册,只有注册成功才有的权限。 2、管理员的功能及权限 用户信息的添加和管理,古汉语信息加和管理和学习视频添加和管…

下载 axios.js 文件到本地【linux】

方式一 npm install axios在$NODE_PATH/node_modules/axios/dist路径下即可找到axios.js。 方式二 1、百度搜索 GitHub 官网:https://github.com/ 2、搜索 axios 3、点击 axios/axios 4、下载到本地 5、解压,进入到 dist 文件夹** 参考&#x…

代码随想录算法训练营第四天

● 自己看到题目的第一想法 24.两两交换链表中的节点 方法:虚拟头节点 思路: 设置虚拟头节点dummyhead 设置临时指针cur dummyhead; cur每次向前移动两步 循环条件: cur ! nullptr && cur->next ! nullptr && cur->…

springBoot整合Redis(一、Jedis操作Redis)

在springboot环境下连接redis的方法有很多,首先最简单的就是直接通过jedis类来连接,jedis类就相当于是redis的客户端表示。 但是因为现在比较常用的是:StringRedisTemplate和RedisTemplate,所以jedis只做简单的介绍。 一、Jedis…

3D生成式AI模型与工具

当谈到技术炒作时,人工智能正在超越虚拟世界,吸引世界各地企业和消费者的注意力。 但人工智能可以进一步增强虚拟世界,至少在某种意义上:资产创造。 AI 有潜力扩大用于虚拟环境的 3D 资产的创建。 AI 3D生成使用人工智能生成3D模…

【pytorch】常用便捷代码

文章目录 条件与概率torch.tensor()torch.rand()torch.randn()torch.randint()torch.multinominal() 逻辑运算torch.argmax()torch.max()torch.sum()torch.tanh()torch.pow() 功能性操作 torch.nn.functionalF.normalize()F.elu()F.relu()F.softmax() 张量计算torch.zeros()tor…

CentOS7 Hive2.3.8安装

CentOS7 Hive2.3.8 安装 建议从头用我的博客,如果用外教的文件到 一、9)步骤了,就用他的弄完,数据库不一样,在9步骤前还能继续看我的 一、 安装MySQL 0.0)查询mariadb,有就去0.1),没有就不管…

kuka协作机器人LBR系列 issy15R930导入到ros2_rviz(带外观文件)

kuka协作机器人LBR系列 issy15R930导入到ros2_rviz(带外观文件)外观文件未调整好,外观仍需进一步研究,外观文件dae与轮廓(碰撞)文件STL并未完全对应起来。在blender里面看了一下UR机器人的文件,是对应的&am…

Springboot教程(二)——过滤器、拦截器

过滤器 过滤器可以在调用控制器方法之前进行一些操作,过滤器类一般放在filter包下。 配置类注册 使用过滤器时,要实现Filter接口,并重写doFilter方法: class TestFilter : Filter {override fun doFilter(request: ServletReq…

苹果发布iPhone 16:革命性创新重新定义智能手机体验

(苹果总部,加利福尼亚州,2024年2月23日)——今天,全球领先的科技公司苹果公司再次震撼世界,宣布推出iPhone 16,这款革命性的智能手机重新定义了人们对于手机的期望和体验。 iPhone 16的发布代表…

数字孪生的技术开发平台

数字孪生的开发平台可以基于各种软件和硬件工具来实现,这些平台提供了丰富的功能和工具,帮助开发人员构建、部署和管理数字孪生系统,根据具体的需求和技术要求,开发人员可以选择合适的平台进行开发工作。以下列举了一些常见的数字…

再探二分法

推荐阅读 智能化校园:深入探讨云端管理系统设计与实现(一) 智能化校园:深入探讨云端管理系统设计与实现(二) 文章目录 推荐阅读二分查找题目思路解法左闭右闭式写法左闭右开式写法 二分查找 题目 给定一个…

十六:网络编程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 01、网络编程概述02、网络通信要素概述03、通信要素1:IP和端口号3.1、IP的理解与InetAddress类的实例化3.2、端口号的理解 04、通信要素2:网…

主从复制实现Redis集群

主从复制实现Redis集群实验 (一主二从): 实验环境: 使用Docker 搭建 Redis 版本 5.0.5 打开一个终端窗口,在其中运行如下命令创建一个名为redis-master的Redis容器。注意,它的端口是6379 (本地的端口:映射到容器的端口) docker run -itd--name redis-m…

【wails】(6):使用wails做桌面应用开发,使用gin+go-chatglm.cpp进行本地模型运行,在windows上运行成功

1,整体架构说明 主要使用,参考的开源项目是: https://github.com/wailsapp/wails 前端项目: https://github.com/Chanzhaoyu/chatgpt-web 运行模型: https://github.com/Weaxs/go-chatglm.cpp 参考代码: h…

【VSCode】SSH Remote 通过跳板机连开发机提示“bash行1 powershell未找到命令”

需求背景 因为需要,在家我需要挂上公司VPN然后SSH连到跳板机,然后再从跳板机SSH进开发机。 问题背景 跳板机进开发机输入完密码显示 bash行1 powershell未找到命令VSCode SSH Remote跳板机配置请自行搜素其他文章config配置 注意其中ssh.exe地址请根据…

消息中间件篇之RabbitMQ-延时队列

一、延时队列 延迟队列:进入队列的消息会被延迟消费的队列。 场景:超时订单、限时优惠、定时发布。 延迟队列死信交换机TTL(生存时间)。 二、死信交换机 当一个队列中的消息满足下列情况之一时,可以成为死信&#xf…

React Hooks概述及常用的React Hooks介绍

Hook可以让你在不编写class的情况下使用state以及其他React特性 useState ● useState就是一个Hook ● 通过在函数组件里调用它来给组件添加一些内部state,React会在重复渲染时保留这个state 纯函数组件没有状态,useState()用于设置和使用组件的状态属性。语法如下…