首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

虚拟机磁盘文件丢失恢复教程

因服务器突然断电原因导致Xen Server服务器中一台VPS(即Xen Server虚拟机)不可用,虚拟磁盘文件丢失,通过电话联系北亚数据来进行恢复。硬件环境是Dell 720服务器配戴一张H710P的RAID卡,由4块希捷2T STAT硬盘组成的RAID 10,上层环境是Xen Server 6.2版本操作系统,虚拟机是Windows Server 2003系统,10G系统盘 + 5G数据盘两个虚拟机磁盘,上层是Web服务器(ASP + SQL 2005的网站架构)。 【数据恢复过程】 将客户数据盘以磁盘底层扇区的方式镜像到备份空间上后,仔细分析底层数据发现Xen Server服务器中虚拟机的磁盘都是以LVM的结构存放的,即每个虚拟机的虚拟磁盘都是一个LV,并且虚拟磁盘的模式是精简模式的。LVM的相关信息在Xen Server中都有记载,查看“/etc/lvm/backup/frombtye.com “下LVM的相关信息发现并没有存在损坏的虚拟磁盘信息,因此可以断定LVM的信息已经被更新了。接着分析底层看能否找到未被更新的LVM信息,在底层发现了还未更新的LVM信息。 根据未被更新的LVM信息找到了虚拟磁盘的数据区域,发现该区域的数据已被破坏。分析后发现造成虚拟机不可用的最终原因是因为虚拟机的虚拟磁盘被破坏,从而导致虚拟机中的操作系统和数据丢失。而导致这种情况的发生很有可能是虚拟机遭遇网络攻击或hack入侵后留下恶意程序造成的。仔细核对这片区域后发现,虽然该区域有很多数据被破坏了,但还是发现了很多数据库的页碎片。因此可以尝试将许多数据库的页碎片拼成一个可用的数据库。

03

MySQL主从同步读写分离的集群配置

大型网站为了解决大量的高并发访问问题,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器支持,如此多的数据库连接操作,服务器性能再好数据库必然会崩溃。数据丢失的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的连接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached等。如果资金充足的话,必然会想到假设服务器集群,来分担主数据库的压力。或者在硬件设备上,投入大量资金,购买高性能的服务器。出名的有f5,硬件负载,软件负载等。 Ok切入今天的主题,利用MySQL主从配置,实现读写分离,减轻数据库压力。这种方式,在如今很多网站里都有使用,也不是什么新鲜事情,今天总结一下,方便大家学习参考一下。 读写分离: 1.多个服务器肯定比一个服务器好。 2.在数据库写入的时候,会加入大量的锁(排它锁,共享锁等等),从而影响性能。 3.数据更安全,多数据库存在备份数据。 搭建环境: 1.搭设一台Master服务器(win7系统64bit,Ip:10.10.2.33) 2.一台台Slave服务器(winXp系统32bit,ip:10.10.2.157) 原理:主服务器(Master)负责网站写操作,从服务器负责查询操作。主从服务器利用MySQL的二进制日志文件,实现数据同步。二进制日志由主服务器产生,从服务器响应获取同步数据库。

02

Mysql主从配置,实现读写分离

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。Ok切入今天微博主题,利用MySQL主从配置,实现读写分离,减轻数据库压力。这种方式,在如今很多网站里都有使用,也不是什么新鲜事情,今天总结一下,方便大家学习参考一下。

01

利用SQLServer2005复制功能实现与Oracle数据库同步

在项目中经常会遇到一个项目操作几个数据库的情况,若是同种类型的数据库也还好说,可以直接链接两个数据库,也可以用数据库的同步功能。若我们的项目使用SQLServer2005进行开发,而且项目中要用到Oracle数据库中的数据,那么又该怎么实现拉?一般来说方案有以下几种。 1.分别建立链接对数据库进行操作,SQLServer可以用ADO.NET,操作Oracle可以用OLEDB或者用System.Data.OracleClient(需要添加引用才能用) 这种方案的优点就是简单,各自写各自的数据库操作代码,缺点就是不能将两个数据库中的表直接进行联合查询,链接Oracle的每台机器必须安装OracleClient才可以使用。 2.使用同义词操作Oracle数据库。 这种方法的具体操作我在以前的文章中已经写清楚了,这样做一来可以进行表的联合查询二来不需要每台机器都安装OracleClient,但是还是有一个缺点:效率低,比如对同义词使用like去查找需要的数据,如果是直接连Oracle数据库也许只要0.1秒就可以找到答案,但是用同义词可能就要等10秒20秒或更久。原来SQLServer并不是直接把查询语句传递给Oracle,让Oracle执行操作,而是将所有数据都取到SQLServer服务器上,边取数据边分析,直到满足查询条件为止。其实这种数据放在两个服务器上还有一个缺点就是一旦Oracle服务器宕机,即使我们这边的所有服务器都是好的,那么我们的程序中用到Oracle数据的地方就无法使用。 3.直接链接Oracle数据库+同义词+作业+异常跳转 方式。 这种方法具体讲就是我们的程序直接用OLEDB(OracleClient)链接Oracle数据库,同时SQLServer服务器也建立了同义词指向Oracle,在SQLServer上建立作业,将同义词中的数据拷贝到SQLServer服务器的表中。一旦Oracle宕机,程序中就会捕捉到异常,于是就使用SQLServer中的数据。这样做比较复杂,需要一定的编程,效率也不是特别高,但是优点也是明细的,平时链接Oralce服务器,异常情况下链接SQLServer中的备份数据,保证了程序的正常运行。 4.直接编写一个程序,以服务或自启动方式一直运行,每隔一段时间将Oracle数据库中的数据写到SQLServer数据库中。 这种方法就是编程复杂,具有很大难度。 5.利用SQLServer2005的复制功能将Oracle数据库中的数据同步到SQLServer服务器中,程序只操作SQLServer,不链接Oracle数据库。 这种方法不需要编写任何代码,由于只对SQLServer进行查询,所以查询效率高可以做多表链接,开发人员也不需要再装OracleClient,也不用害怕Oracle服务器宕机导致我们的相关程序无法使用。优点倒是很多,那么有没有缺点拉?缺点还是有的,主要是取得的数据不是实时的数据,Oracle那边的数据更新了,我们这边还有可能是老数据。 前面的四种方法我就不用多讲了,这次主要是讲第五种方法的具体实现:

01
领券