在异步镜像中移动主数据库文件实战

在异步数据库镜像中,移动主数据库文件实战


某数据库部署为异步数据库镜像,主数据库所在磁盘空间不足,我得移动主数据库文件到新的磁盘上。

在异步数据库镜像中,应用程序连接到主数据库访问。我们这里要根据你的线上环境考虑选择哪种方式合适:

1. 手动故障转移到镜像库,然后再移动新的镜像数据库文件。

2. 直接移动主数据库文件。

我个人认为,如果业务无法容忍长时间停机,建议先手工故障转移到镜像库,业务切换连接串。如果此时,新的镜像库所在实例上还有其他线上业务数据库,以业务第一,建议重做镜像,将数据库文件放到新的位置。待镜像搭建完成后,再重新手工故障转移回来,业务也指向回来。

由于我们线上业务恰好有停机维护时间窗口。在此期间,我直接移动主数据库。下面,我们先来尝试在业务停机期间,直接移动主数据库文件。

1. 在主数据库上做完整备份,避免出现问题。

2. 在主库上点击“Pause”,暂停镜像会话。

3. 在主库上使用Alter Database指向一个新的位置。

a) 确定WMS数据库的逻辑文件名称以及这些文件在磁盘上的当前位置。

SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID(‘WMS‘);
GO

b) 使用 ALTER DATABASE更改每个文件的位置。

USE master;
GO
ALTER DATABASE WMS
MODIFY FILE (NAME = FLUXWMS_DEMO, FILENAME = ‘ H:\SQL-LOG\WMS.mdf‘);
GO

4. 重启主数据库所在实例的SQL Server服务。(这里对于主数据库所在实例上还有其他业务数据库,务必得考虑对其他业务的影响,我们选择移动镜像数据库文件的第二种方法)

5. 移动主数据库文件到一个新位置,并确保文件上的权限也还在。

6. 使WMS数据库 OFFLINE 再 ONLINE,以实施更改。(当然,此时重启SQL Server服务应该也可以,但如果操作的主库所在实例上有其他业务数据库,会受到影响,建议还是在数据库级别操作)

USE master
GO
ALTER DATABASE WMS SET OFFLINE
ALTER DATABASE WMS SET ONLINE
GO

这时,我们再来看看数据库状态。

在主库上:

发现状态已经正常。

7. 在主库上点击“RESUME”,恢复镜像会话。验证镜像状态已同步。

这样也验证了Alter Database移动数据库文件的操作是修改了master系统数据库,而不会被同步到镜像数据库。

时间: 2024-10-27 03:03:58

在异步镜像中移动主数据库文件实战的相关文章

在异步镜像中移动镜像数据库文件实战

在异步数据库镜像中,移动镜像数据库文件实战 某数据库部署为异步数据库镜像,镜像数据库所在磁盘空间不足,我得移动镜像数据库文件到新的磁盘上. 在异步数据库镜像中,应用程序连接到主数据库访问.我们这里要根据你的线上环境考虑选择哪种方式合适: 直接重做镜像,将数据文件放在新的位置. 直接移动镜像数据库文件. 移动数据库文件的所有操作都是对镜像数据库实例,如果镜像数据库实例上没有其他线上主数据库,不会对线上业务产生影响的情况下,可以直接移动镜像数据库文件. 1. 在主库上点击"Pause",暂

如何在oracle中导入dmp数据库文件

Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用. 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径, 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出.

64位系统中连接Access数据库文件的一个问题

近日在windows 7 64位系统中编译以前写的程序,发现在连接Access数据库时总是出现异常,提示“Microsoft.Jet.OLEDB.4.0”未在本机注册,同样的代码在32位的xp系统中却没有问题,经过一番搜索后找到一个比较简便的处理办法,特在此做一下记录. 原因估计:数据库文件使用Access2003格式的*.mdb文件,其对应的OLEDB 4.0在win7 64位系统中支持不是很好. 处理办法:将数据库文件升级为Access2007格式的*.accdb文件,按如下修改连接字符串,

在 SQL Server 中的网络数据库文件的支持说明

其实就是一个学员问SQL Server 是否能存放的于NAS(UAC 的路径下). 官方的回答简略版本为:可以,需要满足一些强制性的硬件要求.但需要考虑一系列的性能的问题. http://support.microsoft.com/kb/304261/zh-cn

iOS 把数据库文件打包到mainbundle中,查找不到路径的解决办法;以及在删除bundle中文件的可行性

在开发中有时我们需要把数据库文件打包到我们的项目中,一般我们都是在外部用工具生成数据库文件,然后拉入项目中,但是我们在程序中查找改文件时,返回的路径总是nil 解决办法: 原因我们拉入其他资源文件(比如:图片.代码文件等)Xcode都会自动添加到target 的 "Build Phases" 下 "Copy Bundle Resources目录下,但是我们拉过来的数据库文件这里是找不到的,可能是Xcode无法识别这类文件(当我们拉去过来时),所以我们要做的就是把刚才添加的db

如何将打开res/raw目录中的数据库文件?

在Android中不能直接打开res /raw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中, 然后再打开该数据库文件. 复制的基本方法是使用getResources().openRawResource方法获得res/raw目录中资源的 InputStream对象, 然后将该InputStream对象中的数据写入其他的目录中相应文件中. 在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目

人人都是 DBA(V)SQL Server 数据库文件

SQL Server 数据库安装后会包含 4 个默认系统数据库:master, model, msdb, tempdb. SELECT [name] ,database_id ,suser_sname(owner_sid) AS [owner] ,create_date ,user_access_desc ,state_desc FROM sys.databases WHERE database_id <= 4; master master 数据库包含用于记录整个服务器安装信息和后续创建的所有数

创建及修改数据库文件

//创建数据库 LtsDatabase create database LtsDatabase on //创建数据库文件 (name=LtsDatabase_data,  //数据库文件名字filename='D:\temp\LtsDatabase_data.mdf', //D:\temp文件夹必须已经存在size=6, //初始大小maxsize=12, //最大大小filegrowth=10% //每次增长率)log on //创建事务日志文件(name=LtsDatabase_log,fi

数据库镜像中成功收缩事务日志文件 (转载)

数据库镜像中成功收缩事务日志文件 数据库已经运行在数据库镜像的时候怎么收缩事务日志文件呢?? 我们有一个产品数据库发现事务日志文件已经到到了60GB,而数据库本身才30GB.需要收缩事务日志文件. 经过一个礼拜的观察,平均没有有1.5GB的日志,99%的日志是在晚上产生的,周末有16GB的日志,看来大部分是非工作时间批处理产生的. 我觉得收缩日志文件,怎么做呢??google来半天也没什么好的办法,大部分说是要切换到simple模式,重新构建数据库镜像数据库.这对产品环境影响比较大. 只有自己摸