让你提前认识软件开发(34):数据库的维护

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 第2部分 数据库SQL语言数据库的维护         对于某些大型软件产品,一旦商用,必然会存储很多用户信息,这就对产品所使用的数据库(以下简称业务数据库)带来了压力。

第2部分 数据库SQL语言

数据库的维护

 

        对于某些大型软件产品,一旦商用,必然会存储很多用户信息,这就对产品所使用的数据库(以下简称业务数据库)带来了压力。为了保证业务数据库的平稳运行,需要在日常工作中对数据库做一些基本的维护操作。

        业务数据库的维护规则如下:

1. 对业务数据库必须进行定期全量备份

        业务数据库的定期备份能在数据库被意外破坏时进行快速恢复,备份策略可以根据数据增量大小采用周计划或月计划。

        假如备份数据库db_100,则OracleSybaseSQL Server中的操作方法如下:

        (1) Oracle用户模式的备份

exp db_100/db_100 owner=db_100 buffer=8192(64000)

file=exp_db100.dmp(或磁带设备/dev/rmt0)

tables=

rows=y

compress=n

log= exp_db100.log

 

       参数说明:

       owner:将要卸出的用户名列表。

       buffer:缓冲区大小。

       file:由export创建的输出文件的名字。

       tables:将要卸出的表名列表。

       rows:指明是否卸出表数据的行数,缺省为“y”。

       compress:指明在装入期间是否将表数据压缩到一个区域中。如果在卸出数据时,指定参数compress=y,那么装入时,就会将数据压缩到一个初始区域中。这种选择可以保持初始化区域的原始大小。缺省为“y”。

       log:指定一个接收有用信息和错误信息的文件。

 

      (2) Sybase中数据库的备份

dump database db_100 with /home/data/db100.dmp(或磁带设备/dev/rmt0)

 

      (3) SQL Server中数据库的备份

use master

go

exec sp_addumpdevice 'disk', 'dev_db100',

disk ='C:\backup\dev_db100.dat'

go

backup database db_100 to dev_db100

go

 

2. 对业务数据库定期进行数据清理,清理前必须完成备份操作

        对每天记录增长较多的日志表采用备份表的机制,即建立和生产表一样结构的备份表,根据项目的需要决定生产表和备份表保留的时间。

        假设1000号业务要处理主日志生产表tb_mainlog,要求是该生产表保留2天的记录,备份表保留90天的记录,筛选日期的字段名为startdatetime,分批提交的间隔为60分钟,有一个存储过程pr_backuptable用于备份,则只需如下调用:

exec pr_backuptable ‘tb_mainlog’,’tb_mainlog_bak’,2,90,’startdatetime’, ‘yyyy.mm.dd hh:mi:ss’,60,’’

       参数说明:

       参数1:生产表名

       参数2:备份表名

       参数3:生产表保留的天数

       参数4:备份表保留的天数

       参数5:筛选日期字段名

       参数6:筛选日期字段的格式

       参数7:分批提交的间隔(单位:分钟)

       参数8:用于进行比较的扩展条件

 

3. 如果数据库没有设置截断日志(或者不归档模式),需要对数据库日志定期维护

        Oracle日志的归档模式的设置一般在安装时就需进行;Sybase数据库的选项“trunc log on chkpt”设为true,或者如果此选项设为false,则需要定期进行数据库的日志截断;SQL Server数据库的选项“autoshrink”设为true

        (1) 设置Oracle数据库的日志为不归档模式

        操作步骤为:

        1) 关闭数据库

        2) startup mount方式启动实例

        3) 切换模式

alter database noarchivelog;

alter database open;

 

        (2) Sybase中设置数据库db_100中“trunc log on chkpt”为true

use master

go

sp_dboption db_100,'trunc log on chkpt',true

go

use db_100

go

checkpoint

go

 

        (3) SQL Server中设置数据库db_100中“autoshrink”为true

sp_dboption db_100,'autoshrink',true

 

4. 对数据库索引进行定期维护

        对SybaseSQL Server数据库中的表中的索引要定期进行update statistics维护。如果索引失效,则重建索引。

        例如,要更新tb_userinfo表中所有索引中所有列的统计信息,可采用以下语句:

update index statistics tb_userinfo

 

5. 定期查看数据库任务的运行结果日志和数据库可用空间最大值

        在数据库运行过程中,要经常通过日志来查看相关任务的运行结果是否正常,并查看数据库剩余空间数,如果可用空间已经很小了,则要进行一定的文件清理操作。

 

6. 对数据库进行大批量的增、删、改操作后建议对表进行一致性检查和索引的重建

        在经过大规模的操作的时候,有可能会无意中破坏掉数据表的结构,因此需要在操作完成之后对表进行一致性检查。如果发现表结构出现异常,则需要重建表及相应的索引。

 

        在某些业务软件产品中,数据的维护是一项复杂、繁重而长期的工作,相关维护经验也只有在实际操作过程中才能够累积起来。

 

 

(本人微博: http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
弹性计算 NoSQL 网络安全
软件开发常见之云数据库Redis连接不上如何解决,修改配置后,需要重启下redis服务,配置才能生效呢,是重启,而不是重载配置,最后导致的问题是点击了的重启,配置修改了之后必须点击重启,而不是修改
软件开发常见之云数据库Redis连接不上如何解决,修改配置后,需要重启下redis服务,配置才能生效呢,是重启,而不是重载配置,最后导致的问题是点击了的重启,配置修改了之后必须点击重启,而不是修改
|
4月前
|
NoSQL Java 关系型数据库
软件开发常用之若依修改之添加数据库,添加redis,利用RDM连接宝塔
软件开发常用之若依修改之添加数据库,添加redis,利用RDM连接宝塔
|
4月前
|
前端开发 JavaScript NoSQL
软件开发常见流程之若依项目修改,前后端本地启动,本地必须有Redis+Navicate启动数据库
软件开发常见流程之若依项目修改,前后端本地启动,本地必须有Redis+Navicate启动数据库
|
存储 NoSQL MongoDB
软件开发入门教程网之MongoDB 数据库引用
【摘要】 本章将会讲解考虑这样的一个场景,我们在不同的集合中 (address_home, address_office, address_mailing, 等)存储不同的地址(住址,办公室地址,邮件地址等)。 这样,我们在调用不同地址时,也需要指定集合,一个文档从多个集合引用文档,我们应该使用 DBRefs。
|
NoSQL MongoDB 数据库
开心档-软件开发入门之MongoDB 删除数据库
【摘要】 本章将会讲解删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名。
|
NoSQL MongoDB 数据库
软件开发入门教程网 之MongoDB 创建数据库
【摘要】 本章将会讲解如果数据库不存在,则创建数据库,否则切换到指定数据库。
|
SQL 关系型数据库 MySQL
软件开发入门教程网之MySQL 删除数据库
使用普通用户登陆 MySQL 服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库,所以我们这边使用 root 用户登录,root 用户拥有最高权限。
|
SQL Oracle 关系型数据库
开心档-软件开发入门之Python 操作 MySQL 数据库
本文主要讲解Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。
开心档-软件开发入门之Python 操作 MySQL 数据库
|
SQL 关系型数据库 MySQL
软件开发入门教程网之 MySQL 管理 MySQL ALTER命令 MySQL 复制表 MySQL 连接 MySQL 创建数据库 MySQL 创建数据表 MySQL 数据类型 MySQL 导出数据 M
MySQL 表中使用INSERT INTOSQL语句来插入数据。 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。 ​​语法​​
|
SQL 关系型数据库 MySQL
软件开发入门教程网 之MySQL 删除数据库
使用普通用户登陆 MySQL 服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库,所以我们这边使用 root 用户登录,root 用户拥有最高权限。 在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。