`
tedeyang
  • 浏览: 329803 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据安全探讨——入门级探讨

阅读更多

数据安全探讨——入门级探讨

数据库的数据安全是商业系统必须解决的问题,以往我们也采用了一些手段进行定期数据备份,比如定期备份sybase,mysql热备份等。这次地税服务器中坏掉的硬盘给我们敲响了警钟:数据安全还需要得到我们的加倍重视 ,单机定时备份不能满足我们的要求。
目前公司已经部署的项目中最好的数据安全方案是国税申报服务器使用的“Mysql双机热备份”——这个名称其实是个误解,因为通常意义上的“双机热备份”要求系统在错误发生时能自动切换服务器——Mysql官方把它称为"主从机间的单向异步复制 ",见:参考文档 。文档介绍得很详细,我就不鹦鹉学舌了——国税组也比我更有发言权。我就大致介绍一下它的实现原理和一些显著特征。

【MySQL主从机单向复制】

现在有一台MySql数据库A,我们再加一台数据库B做备份和查询。
1, A作为主机,B作为从机互连(用sql就可以实现了);
2,主机可以执行任意sql,从机B则只能执行select语句。
3, 从机B不停地监听A的活动。每当A执行insert、delete、update操作时,B就去解析这些操作的二进制日志,把相应数据的改变同步到自己库里,这样就实现了单向 数据复制。
4, 这种复制是异步 的,也就是说从机B不需要一直在线。每当B第一次连上A时,B会把上次同步后产生的数据改变复制到自己库里,然后保持监听状态。
5,从机B怎么知道要复制的数据是哪些呢?这是通过分析A的二进制日志的时间戳 。因此A必须开启二进制日志功能。
6,AB是两台独立的服务器 。这种系统的架构不需要额外的管理软件
7,从机B可以执行查询,所以这部分负载可以被B分流
8,如果A的硬盘完蛋,那么系统就暂时完蛋了。需要手工用B的数据来恢复数据库,因此不具备无缝切换性 ,但用于实时性不高的应用还是非常理想的。

下面研究研究oracle数据库的备份能力。

【oracle高级复制】

一开始,我发现了oracle的高级复制(Advanced Replication)功能囊括了双机单向复制的能力,这是由其"物化视图复制"功能提供的——当然“高级复制”的能力主要是用于分布式系统的数据同 步,备份能力是一个小小的附带结果。在详细阅读了相关资料后,发现“高级复制”真的是很“高级”,需要了解一堆术语和sql,而且复制精确到对象级别 (表、模式等),整库备份实现起来很麻烦。功能强大,但是配置和管理相当麻烦,因此转寻其他解决途径。
"oracle高级复制"中文资料:


附件 : Advanced.Replication.Research.by.Kamus.pdf (2007-9-25 11:27, 307.39 K)
该附件被下载次数 11

因为对oracle的技术体系缺乏了解,所以这真是“探索”工作。初步了解到oracle具有Dataguard/rman,还有待分析.

【oracle Data Guard技术】

Oracle Data Guard是一种整库备份、恢复技术,Oracle8i 中引入,并在Oracle9i 中做了很大改进 。在这之前,oracle的备份工作全要手工进行。与“高级复制”不同,它只能用于同构环境(即相同的操作系统),也无法对细节(单个表,用户等)进行复制。它就相当于上面提到的MySQL的热备份。

附件 : oracle 9i dataguard概述.rar (2007-9-26 10:45, 524.19 K)
该附件被下载次数 9

转载一篇blog,讲的简单易懂 http://www.onlyblog.com/blog2/hnshicq/archives/2007/8148.html

 


另外还有一篇资料《Dataguard配置Step by Step 》,详细(:对了解oracle者而言)介绍了unix下实施dataguard的步骤。(该网站和itpub.net的oracle版块是国内极好的oracle资料库,最好的当然是oracle官网)

【oracle stream replication】

从oracle 9iR2开始,出现了一种"流复制(stream replication) "技术,这种复制模式类似"高级复制",但是更加强大和高效。不但具备了"高级复制"的所有优点,还大大减少了cpu性能消耗和数据传输量 。 这是因为在传输日志时,它会先将日志进行逻辑分析,将结果进行传送而不是把所有redo log傻傻地全部传给备份数据库。举个例子,如果你先给表A插入一条数据,然后删除掉。那么“流复制”在经过日志分析后就知道表A其实没有被改变,因此就 不需要传输任何数据。这种智能分析能力是之前的所有复制手段都比不上的。(PS:如果大家用过HSQLDB就会知道,HSQLDB在数据库关闭时也会执行 类似操作,能够大大缩小存储空间)
“流复制”在oracle 10g中得到了极大的增强,不但提供了迁移“高级复制”到“流复制”的脚本,还提供了很好的配置和监控工具,可见oracle决心力推“stream replication”来提供更加简单强大的数据复制的能力。

 

补充:

Mysql的主从复制是通过二进制日志来实现的

先说一下这个很重要的二进制日志
Mysql 数据库开启二进制日志后,服务器会把所有的执行成功的事务(当然也包括 sql 了)都保存在二进制日志中,这种日志可以通过数据库进行重新执行(在快照的基础上),通过定期的快照+二进制日志,在很大程度上可以保障数据的安全和完整 性,比如数据库崩溃、数据库误操作。几种主要的数据库都有类似的功能,当然叫法不同而已。国税就通过这个功能,挽救了被误删的一个申报期的数据,就在实现 双机热备以后不久,实在是万幸。

Mysql的主从复制是二进制日志的一个扩展应用,从机是主机的一个快照+马上执行的二进制日志,从机使 用特定权限的用户不断获取主机不断更新的二进制日志,然后马上执行(从国税服务器的实际使用看,速度在毫秒级),从而实现了数据的复制,这个已经可以称为 是双机热备份了(所谓热备也是就在线备份),实际上主从复制是不限于二台服务器的,还可以有 A—>B,A—>C,A—>D,或A—>B—>C—>D 等更复杂的结构

这种机制,可以扩展到生产机和查询机(甚至多台查询机)的应用,分流查询压力,国税就是采用的这种模式。

从理论上是可以 A—>B,B—>A,实现简易的“集群”,而且它是肯定可以正常工作起来的,不过实际应用中,一旦出现很高频率的更新,同步很快就会崩溃了,顺便提一下,Mysql已经有集群的解决方案了。

主从复制从数据库层面是没有解决无缝切换的要求,但通过应用层是完全可以实际的,并不需要太复杂的处理,加个判断主机的状态,发现异常后,中断从机的复制,把数据访问指向从机即可。


【2007-9 bbs】

 

分享到:
评论

相关推荐

    B系列课程(SAP-MM):第9课:项目采购-寄售——入门版.zip

    在本课程“B系列课程(SAP-MM):第9课:项目采购-寄售——入门版”中,我们将深入探讨SAP MM模块中的一个重要功能——寄售业务。SAP MM,即Material Management,是SAP系统中的物料管理模块,主要用于处理企业的...

    Java语言程序设计教程(Java 7)——入门与提高篇04

    在深入探讨Java面向对象的高级特性之前,需要明确几个基本概念。面向对象编程(OOP)是一种编程范式,它使用“对象”来设计应用和程序。对象可以包含数据,以字段(通常称为属性或成员变量)的形式表示,以及代码,...

    深入解析Oracle——DBA入门、进阶与诊断案例

    《深入解析Oracle——DBA入门、进阶与诊断案例》是一本专为Oracle数据库管理员(DBA)设计的详尽指南。这本书旨在帮助初学者掌握Oracle数据库的基本操作,并引导有经验的DBA深入理解Oracle的高级特性,同时提供实用...

    深入浅出Oracle——DBA 入门、 进阶与诊断案例

    《深入浅出Oracle——DBA入门、进阶与诊断案例》是盖国强先生的一本经典著作,专门针对Oracle数据库管理进行深入讲解。这本书对于想要成为Oracle DBA(数据库管理员)或者希望提升自己在Oracle数据库管理技能的人来...

    实战无线通信应知应会——新手入门,老手温故.pdf

    《实战无线通信应知应会——新手入门,老手温故》是一本旨在全面解析无线通信领域的教材,适合于新手入门以及资深工程师温习提升。本书深入浅出地讲解了无线通信的基础理论与实践操作,从无线通信的本质出发,探讨了...

    Java基础知识——Java入门与加深

    本文将深入探讨Java的基础知识,旨在帮助初学者快速入门并进一步加深对Java的理解。 首先,我们来了解一下Java的核心概念。Java是基于C++语言发展而来的,但去除了指针等复杂特性,使代码更加安全。它的“Write ...

    软件测试入门级的经典资料

    本压缩包包含两本经典的入门级资料——《软件测试从这里开始》和《软件性能测试从这里开始》,它们将帮助你系统地学习软件测试的基础知识。 《软件测试从这里开始》是一本全面介绍软件测试基础的书籍,它涵盖了以下...

    Visual C++高级编程技术——MFC与多线程篇.rar

    本教程“Visual C++高级编程技术——MFC与多线程篇”将深入探讨这两个关键概念。 MFC是C++面向对象编程的一个重要框架,它基于Windows API,将复杂的Win32 API函数封装为易于理解和使用的类。MFC包含了一系列的类,...

    JavaScript基础教程——入门必看篇

    本文将深入探讨JavaScript的基础知识,帮助初学者快速入门。 首先,JavaScript是一种基于对象和事件驱动的描述性语言,这意味着它依赖于已有的对象来执行任务,并通过事件(如用户点击按钮)来触发代码执行。它也是...

    JAVA入门到精通——30天学通JAVA

    封装是将数据和操作数据的方法绑定在一起,对外提供安全接口。继承允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码的重用。多态则允许子类对象可以替代父类对象,提供不同的实现方式,增强了程序...

    NET游戏编程入门经典—— C#篇

    《.NET游戏编程入门经典——C#篇》是一本针对初学者的游戏开发指南,主要以Microsoft的.NET框架和C#编程语言为基础,讲解如何利用这些工具进行游戏开发。这本书涵盖了从基础概念到实际项目实现的多个重要知识点,...

    入门级的增删改查的系统【客户信息管理系统】.zip

    《入门级的增删改查的系统——客户信息管理系统》 在信息技术日益发达的今天,信息管理系统已经成为各行各业不可或缺的一部分。本项目,名为“人工智能-项目实践-信息管理系统的设计与开发”,是一个面向初学者的...

    书附件源程序 ASP.NET 1.1入门经典—— Visual C#.NET 2003编程篇.rar

    《ASP.NET 1.1入门经典——Visual C#.NET 2003编程篇》是清华大学出版社出版的一本面向初学者的技术书籍,旨在帮助读者掌握ASP.NET 1.1框架下的C#编程技术。这本书的源码压缩包包含了书中各个章节的示例代码,为学习...

    ASP.NET+3.5从入门到精通——基于C#源代码

    本书《ASP.NET+3.5从入门到精通——基于C#源代码》显然是针对初学者设计的,旨在帮助读者通过实例学习和理解ASP.NET 3.5的核心概念和技术。 在描述中提到的源代码,意味着读者可以深入到实际的编程实践中,通过阅读...

    ASP_NET 入门经典——C# 编程篇.rar

    在C#编程篇中,我们将深入探讨以下关键知识点: 1. **C#基础**:C#是一种面向对象的编程语言,具有类型安全性和垃圾回收机制。学习C#的基本语法,包括变量、数据类型、控制流(如if语句、for循环和while循环)、...

    MyBatis框架的学习(二)——MyBatis架构与入门

    在本篇文章中,我们将深入探讨MyBatis的架构,并逐步引导你完成MyBatis的入门配置。 首先,理解MyBatis的核心架构是至关重要的。MyBatis的主要组件包括SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession和...

    K8GT豪华版入门教程——如何ROOT及如何删除系统自带的软件.pdf

    **K8GT豪华版入门教程——如何ROOT及如何删除系统自带的软件** 在深入探讨如何在K8GT豪华版设备上进行ROOT和删除系统自带软件之前,首先要理解ROOT权限的本质。在Android操作系统中,ROOT权限是指获取了系统最高...

    c#学生管理系统 含数据库,非常适宜入门级

    《C#学生管理系统详解——基于Access数据库的初学者实践指南》 C#学生管理系统是一款针对初学者设计的应用程序,旨在帮助他们理解并掌握C#编程语言以及数据库管理的基础知识。这个系统采用Microsoft Access数据库...

Global site tag (gtag.js) - Google Analytics