数据库运维原则

一、数据库运维工作总原则

1、能不给数据库做的事情不要给数据库,数据库只做数据容器。

2、对于数据库的变更必须有记录,可以回滚。

二、权限相关

总原则,以最低粒度控制权限。

SELECT权限:所有开发人员均可拥有自己业务范围内的表权限。

INSERT/UPDATE/DELETE权限:所有项目经理可以拥有自己业务范围内的表权限。

Structure权限:数据库管理员可以拥有。

Administration权限:系统管理员和数据库管理员可以拥有。

程序访问权限:根据IP和系统名建立用户名,只拥有必须表的访问权限。

全部权限:技术总监掌管,MySQL系统表mysql表权限除技术总监任何人不得拥有。

权限粒度:开发人员权限粒度到表一级,数据库管理员和系统管理员权限粒度到库一级。

访问限制:除DBA和系统管理员需要24小时保证可以操作数据库外,其他人均需要绑定IP。

密码强度:必须根据目标/来源/用户等信息设置密码,保证不用用户在不同主机从不同来源的密码不一样,每隔一段时间需要集中更换密码。

三、改表相关

总原则,以最少的开销按需记录数据,所有变更要有记录。

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/basis/

表结构修改流程:开发人员提交建/改/删表的SQL(必须有注释)给DBA,并且说明建/改/删表原因,DBA审查,与开发人员交流修正,由DBA执行SQL操作,并记录。

表结构改动注意:(越靠前优先级越高)

按需建立字段,不得采用远大于需求的类型。

尽量采用无符号型数据类型。

尽量采用固定长度类型。

尽量避免TEXT类型。

尽量用数字来代替字符。

可以用ENUM枚举数量不多的字符。

如果必须采用TEXT类型,如无特殊情况,必须拆表单独存放TEXT列。

存在必须用函数计算才能做条件的列,新建一存放函数计算结构,对新列进行索引,采用触发器自动更新。

记录修改时间尽量采用时间戳,不要采用时间类型列然后手动设置。

分离表中常用和不常用数据,分开存储。

历史数据要及时分离,按一定规则命名表或存放到数据仓库。

类似标记字段设计要合理,尽量避免在SQL中出现<>,尽量使用>/</=来完成条件查找。

类型选择细则参考已发的类型选择文档。

四、索引相关

总原则,以高并发SQL为核心建立索引,尽量复用索引。

除非某个字段经常单独作为查询字段,并且不会作为其他组合索引的第一个列,才为本字段建立单独的索引。

尽可能建组合索引,综合考量涉及的SQL,遵循尽量复用的原则建立索引。

优先处理高并发SQL的索引,很少使用的SQL或者只在闲时使用的SQL可以不为其索引。

小表可以不建立索引(如果参与关联需要为关联字段索引)。

索引后结果集仍较大可以增加排序字段进索引,若执行计划不使用,则删除。

关联字段除特殊情况都需要建索引。

要及时根据SQL的使用情况调整索引。

五、架构相关

总原则,尽可能在内存中完成大部分操作。

内存足够选择InnoDB(高并发数据与内存大小相当),内存不足用MyISAM,归档用Archive,事务相关用InnoDB,临时高并发数据用Memory。

Master-Slave架构,适合明显读大于写的情况。

Master-Master架构,无比使两个Master产生不同的主键,例如一台产生奇数主键,一台产生偶数主键,

单机事务用InnoDB,集群事务用LVS+NDB,切不可直接用NDB,效率极低。

分布式事务尽量避免,如果必须,则采用XA事务,分段提交,或者直接采用NDB集群引擎。

原则上历史数据和生产数据不要放在同一数据库,如历史数据极少使用,则建立新库将历史数据保持表名不变存入,只要USE改变数据库就可以查询历史数据,比较常用的历史数据采用表名+日期来存放相应的历史数据,通过表明和日期拼接来做历史查询。

主库写压力较大时采取级联复制,读库压力更大时采用一对多复制,以平衡压力为目标。

历史数据拆分由DBA与开发人员商议拆分时间,每次拆分时间由DBA与开发人员确认则删除或转移至数据仓库。

六、SQL相关

总原则,最小化查询结果集,不做不必要的操作,分散压力到平时。

尽量不做全表查询,根据需要选择需要的字段需要的行。

条件尽可能详细,不要让数据库扫描不必要的行。

选择条件尽可能按照一致的顺序出现,最大化利用索引。

尽量将大结果集操作拆分到多次执行,避免数据库长时间被锁。

七、工作流程

通过Cacti和mysqlreport脚本查看运行状态

通过mystat脚本监控实时状态

通过mysqlsla脚本分析昨日慢查,可作为计划任务每天定时执行,清空旧慢查

对每日慢查进行调优

通过mysqlidxchx脚本对无效索引进行检查

建表要询问哪些字段会用来查询和连接,建立索引

改字段要问清类型和范围,设立合适的数据类型

表结构的修改必须加注释,每个字段都要有注释,除了id

从数据库删除数据一定要先备份再删除。

每月末要执行历史数据清理,通过mysqldump –where来导出指定范围的数据,插入数据仓库。

无用表和字段要及时清理

作者:51cto博客 Oracle小混子

时间: 2024-12-04 21:52:45

数据库运维原则的相关文章

美团数据库运维自动化系统构建之路

美团点评技术沙龙由美团点评技术团队主办,每月一期.每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域. 目前沙龙会分别在北京.上海和厦门等地举行,要参加下一次最新沙龙活动?赶快关注微信公众号"美团点评技术团队". 本次沙龙主要围绕数据库相关的主题,内容包括美团数据库自动化运维系统构建.点评侧MySQL自动化服务平台RDS.美团数据库中间件.和小米高级DBA带来的Redis Cluster的大规模运维实践. 讲师简介 宁龙,美团网高级DBA,现负责美

从一个简单的约束看规范性的SQL脚本对数据库运维的影响

原文:从一个简单的约束看规范性的SQL脚本对数据库运维的影响   之前提到了约束的一些特点,看起来也没什么大不了的问题,http://www.cnblogs.com/wy123/p/7350265.html以下以实际生产运维中遇到的一个问题来说明规范的重要性. 如下是一个简单的建表脚本,表面上看起来并没有什么问题.其中创建了3个约束,一个主键约束,一个唯一约束,一个默认值约束,该脚本执行起来没有任何问题. USE Test GO if exists(select 1 from sys.table

专访平安科技数据库技术专家梁海安:数据库运维未来很大一部分工作会被平台或工具代替

杭州·云栖大会将于2016年10月13-16日在云栖小镇举办,在这场标签为互联网.创新.创业的云计算盛宴上,众多行业精英都将在这几天里分享超过450个演讲主题. 为了帮助大家进一步了解这场全球前言技术共振盛会的内容,采访了各个论坛的大咖,以飨读者. 以下为正文: 梁海安,平安科技数据库管理技术专家.2006年毕业后即加入平安科技数据库团队,十年Oracle运维管理经验,近几年主要负责PostgreSQL运维管理.目前主要负责平安科技PostgreSQL推广,整体数据库监控平台建设,自动化运维,数

论数据库运维的全流程管控技术

本文讲的是 论数据库运维的全流程管控技术,"重建设 轻管理"一直是我国各行业信息化发展的主要困境,这个问题在数据库系统的建设.管理工作中同样存在.近年来,这种局面造成的后果已开始明显显现:各类来自内部或第三方外包人员的数据泄露.丢失和被篡改事件频频发生,由此导致的珍贵数据资产损失和相关系统功能瘫痪等情况,如同紧箍咒一般,三不五时地刺激着运维部门本就紧绷的神经. 数据库运维安全现状 数据库运维人员需要承担数据库系统的权限分配.故障处理.性能优化.数据迁移备份等工作任务.这些关键环节中,如

Postgresql数据库运维笔记

1. 对象创建 研发.测试无权创建.删除数据库和表,也无权修改表结构,都由DBA统一操作 a)创建数据库: CREATE DATABASE dbsample           --数据库名不能与现有库重复,pg严格区分大小写,因此请统一小写命名,不能使用特殊字符(@ # &等),不能以数字开头,可以以字母和下划线开头,不能超过63个字符 WITH OWNER = postgres                    --指定数据库的属主为postgres       ENCODING = '

《IT运维之道》——13.3 数据库

13.3 数据库 数据库是一个单位或是一个应用领域的通用数据处理系统,它存储的是属于企业和事业部门.团体和个人的有关的数据集合.数据库中的数据是从全局观点出发建立的,按一定的数据模型进行组织.描述和存储.其结构基于数据间的自然联系,从而可提供一切必要的存取路径,且数据不再针对某一应用,而是面向全组织,具有整体的结构化特征. 数据库中的数据是为众多用户所共享其信息而建立的,已经摆脱了具体程序的限制和制约.不同的用户可以按各自的用法使用数据库中的数据:多个用户可以同时共享数据库中的数据资源,即不同的

《IT运维之道》一13.3 数据库

13.3 数据库 数据库是一个单位或是一个应用领域的通用数据处理系统,它存储的是属于企业和事业部门.团体和个人的有关的数据集合.数据库中的数据是从全局观点出发建立的,按一定的数据模型进行组织.描述和存储.其结构基于数据间的自然联系,从而可提供一切必要的存取路径,且数据不再针对某一应用,而是面向全组织,具有整体的结构化特征. 数据库中的数据是为众多用户所共享其信息而建立的,已经摆脱了具体程序的限制和制约.不同的用户可以按各自的用法使用数据库中的数据:多个用户可以同时共享数据库中的数据资源,即不同的

MySQL智能运维与实践,看关系型数据库如何优雅应对云时代

随着互联网场景的导入,非结构化的海量数据给传统数据库的处理能力带来了极大的挑战,作为最受欢迎的开源关系型数据库,MySQL一步步地占领了原有商业数据库市场.如今Google.Facebook.网易.淘宝等大公司都在使用MySQL数据库.而MySQL的发展也从1.0到如今的8.0版本,其功能的完善和稳定性也得到了很好的保证. 本文包含以下三部分: MySQL8.0 的新特性 云时代MySQL的运维实践 金融行业最佳应用场景 今年8.0版本将会带来哪些惊喜呢? MySQL 8.0 新特性一览 1.I

运维经验:回滚段异常的特殊救急方法

跟着恩墨一起读好书运动开始啦!咱们作为DBA不仅要外部打扮自己,更要从内部武装.近期,小编将分享冷菠老师的<Oracle高性能自动化运维>一部分精选章节分享给大家.如果你对内容很感兴趣,还是要去买一本比较好哦. 购买:https://item.jd.com/12128635.html 冷菠 冷菠,资深DBA,著有<Oracle高性能自动化运维>,有近10年的数据库运维.团队管理以及培训经验.擅长数据库备份恢复.数据库性能诊断优化以及数据库自动化运维等.目前致力于大数据.智能一体化.