利用日志传送来实现数据库的可用性

简介:



这不是一个新技术,SQL SERVER2000时就已经有了,2005中没有什么太大的改进,,还是由三项操作组成:

1.   在主服务器中备份事务日志
2.   然后将备份的事务日志文件复制到辅助服务器中
3.   在辅助服务器中还原日志备份
 
大家看到了这个过程还是很简单的,也就是在实现的应用中,对你所正在使用听数据库进行一个事务日志备份。备份成功后,复制到辅助服务器,这个过程不应该是管理员手动执行,而应该是通过调度来实现。然后再做一个调度,在辅助服务器上进行还原。但日志传送到此就结束了,它并不会因为主要服务器故障而实现自动转移,这是实现不了的,这个转移工作已经要由手动来实现。这点和复制是一样的。如果是通过应用程序来连接的话,还要改源代码来实现转移。这和群集和镜像是不一样的。
 
日志传送所使用的角色:
主服务器和数据库  (生产用服务器及所使用到的数据库)
辅助服务器和数据库  (用于存放备份的服务器及相应数据库)
监视服务器     用于监视主要服务器和辅助服务器的通讯,以及主服务器的运行状态,
               应该是一个专门的服务器,那如果机器不够可以和辅助服务器在一起。
               可以监视主服务器是否做了备份,这个备份是否复制,辅助服务器什么候还原等等,那么这个地方,监视到出现问题怎么办,可以给管理员发邮件以通知管理员。这要结合作业来实现。
 
 
主服务器和辅助服务器的关系:可以不是一:一的关系,可以多个主要服务器对应一个辅助服务器,用于存放多个主要服务器上的备份,以节约硬件资源
 
这三个角色如何进行工作的,全部是通过SQL Server AGET来实现的,所以一定要确保在所有角色上都要运行代理服务,分别执行以下作业:
主要服务器: 备份作业
辅助服务器: 复制作业,还原作业
监视服务器:警报作业
但这一系列的作业,不需要我们一一创建,只要我们配置好日志传送之后,系统会自动创建。当然前提是数据库恢复模型应该是完全或是大容量日志
 
下面我们就来看一下具体的实施步骤:
1.   确定主服务器,辅助服务器和监视服务器
2.   为事务日志备份创建文件共享,是好是一个文件服务器(我们就在主要服务器上)
3.   制定主数据库的备份计划
4.   可以为主服务器配置一个或是多个辅助服务器,注意:辅助服务器上数据库不能写,但是可以查询,
5.   配置一个监视服务器,有两种方法,可以使用存储过程,也可以使用SSMS
 
有了上面的理论介绍,下面就可以动手了:
我们的目的很明确就是
配置日志传送
监视日志传送
实现手动的转移到辅助服务器
清除日志传送
 
步骤1:创建共享文件夹用于存放相关文件
         我们在SERVER1上创建两个共享文件夹, server2上创建一个共享文件夹,如上图所示:
其中  primarydata\logs 用于存放主服务器备份文件的。主服务器代理用户必须是域用户。
      Secondarydata\logs 系统会将 PRIMARY\logs中的日志复制到此供辅助服务器使用。
      Databaseback   用于存放生产数据库的副本
 
步骤2 备份主服务器上的数据库,注意一个数据库只能有一个日志传送
         我们以 dufei 数据库为例:辅助服务器上不能有同名数据库。
        backup database dufei to disk='c:\databasebackup\dufei.bak'
这个文件夹是主服务器上的一个共享文件夹
我们为了测试方便,我们在此创建一个表,并插入一条记录:
 
USE DUFEI
GO
CREATE TABLE YG
(
ID CHAR(4),
UNAME VARCHAR(10),
SEX CHAR(2)
)
INSERT INTO YG VALUES ('0001','岳雷','')
GO
BACKUP LOG DUFEI TO DISK='C:\DATABASEBACKUP\DUFEI.BAK'
GO
步骤3  开始在主服务器上配置日志传送
下面是添加辅助服务器:
我们这里选择第二种初始化辅助数据库的方法:
但这个时候确定键是不能用的,是因为我们的操作还没有结束。我们还要复制日志文件到SECONDARYDATA\logs文件夹下。
下面的操作就是指定还原事务日志的模式:
有两种模式,这两种模式差别是很大的。
 
到此时三步就已经完成了。  备份----复制----还原。
 
最后我们再来指定监视服务器。
到这里为止,日志传送就配置结束了:点击确定
测试:到SERVER2上可以看到DUFEI数据库已经创建成功了,并且岳雷这条记录也出现在辅助数据库中。
并且在SERVER2的共享文件夹中可以看到相应的日志文件也复制过来了。
 
与复制的目的是一样的,结果也相同,都不能实现自动的转移,但事务复制要求参与的表必须要有主键,而日志传送不需要。
 
日志文件应该是两分钟复制一次,但我们也没有必要每次都打开文件夹来查看,我们可以利用监视功能来监视服务器的运行状况。并定义一个警报来对你的日志传送进行监控,如果发生了故障,则通过操作员。但默认情况下,警报肯定是用不了的,我们要设置一下,如:
我们在监视服务器上:会发生自动多出两个警报
如果希望这两个警报能正常工作,我们要设置一下,过程如下:
1.   定义操作员:
2.   配置警报:
此时,再启用网卡,则一切又OK了!
1.   查看日志传送状况Z
在监视服务器上:
 
可以测试一下,我们在主服务器上创建一个表,或是更新一条记录,会很快的反映到辅助服务器。
最近我们来看一下如何手动的实现故障转移
1.   我们手动停止主要服务器上的SQL SERVER服务,删除相应的DUFEI数据库所对应的MDF文件  再次启动服务器,会发现DUFEI数据库已经不能用了。
2.   在辅助服务器上,禁用代理,运行命令
此时,辅助服务器上的DUFEI数据库就不再是只读了。!
但要注意的是:监视服务器上的代理作业也应该禁用,不然会不停的发出警报。
 
好,我们的实验就到此结束了!
 
最后可以清除日志传送:
关于日志传送就介绍到此! 





 本文转自 dufei 51CTO博客,原文链接:http://blog.51cto.com/dufei/88720,如需转载请自行联系原作者

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
9月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
441 6
|
存储 缓存 监控
【YashanDB数据库】数据库运行正常,日志出现大量错误metadata changed
数据库运行正常,日志出现大量错误metadata changed
|
10月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1798 5
|
存储 消息中间件 Kafka
聊一聊日志背后的抽象
本文从思考日志的本质开始,一览业界对日志使用的最佳实践,然后尝试给出分布式存储场景下对日志模块的需求抽象,最后是技术探索路上个人的一点点感悟。
833 81
|
11月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
1043 0
|
数据库
【YashanDB数据库】YAS-02079 archive log mode must be enabled when database is in replication mode
YAS-02079 archive log mode must be enabled when database is in replication mode
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
562 3
|
关系型数据库 MySQL 数据库
DZ社区 mysql日志清理 Discuz! X3.5数据库可以做定期常规清理的表
很多站长在网站日常维护中忽略了比较重要的一个环节,就是对于数据库的清理工作,造成数据库使用量增加必须多的原因一般有2个:后台站点功能开启了家园,此功能现在很少有论坛会用到,但是灌水机会灌入大量垃圾信息致使站长长时间未能发觉;再有就是程序默认的一些通知类表单会存放大量的、对于网站日常运行并无意义的通知信息。
776 3
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
644 9

热门文章

最新文章