在异步镜像中移动镜像数据库文件实战
在异步数据库镜像中,移动镜像数据库文件实战
某数据库部署为异步数据库镜像,镜像数据库所在磁盘空间不足,我得移动镜像数据库文件到新的磁盘上。
在异步数据库镜像中,应用程序连接到主数据库访问。我们这里要根据你的线上环境考虑选择哪种方式合适:
直接重做镜像,将数据文件放在新的位置。
直接移动镜像数据库文件。
移动数据库文件的所有操作都是对镜像数据库实例,如果镜像数据库实例上没有其他线上主数据库,不会对线上业务产生影响的情况下,可以直接移动镜像数据库文件。
1. 在主库上点击“Pause”,暂停镜像会话。
2. 在镜像库上使用Alter Database指向一个新的位置。
a) 确定DXListing数据库的逻辑文件名称以及这些文件在磁盘上的当前位置。
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('DXListing'); GO
b) 使用 ALTER DATABASE更改每个文件的位置。
USE master; GO ALTER DATABASE DXListing MODIFY FILE (NAME = DXListing, FILENAME = 'E:\SQL-DATA\DXListing.mdf'); GO ALTER DATABASE DXListing MODIFY FILE (NAME = DXListing_log, FILENAME = 'E:\SQL-DATA\DXListing.ldf'); GO
3. 停止镜像数据库所在实例的SQL Server服务。
4. 移动镜像数据库文件到一个新位置,并确保文件上的权限也还在。
5. 启动镜像数据库所在实例的SQL Server服务。
6. 在主库上点击“RESUME”,恢复镜像恢复,并验证镜像成功恢复。
还有一种方式,只需要重启镜像数据库所在实例的SQL Server服务,而不用暂停服务一段时间用于移动数据文件,实际线上我是用这种方式操作的。
1. 在主库上点击“Pause”,暂停镜像会话。
2. 在镜像库上使用Alter Database指向一个新的位置。
a) 确定DXListing数据库的逻辑文件名称以及这些文件在磁盘上的当前位置。
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('DXListing'); GO
b) 使用 ALTER DATABASE更改每个文件的位置。
USE master; GO ALTER DATABASE DXListing MODIFY FILE (NAME = DXListing, FILENAME = 'E:\SQL-DATA\DXListing.mdf'); GO ALTER DATABASE DXListing MODIFY FILE (NAME = DXListing_log, FILENAME = 'E:\SQL-DATA\DXListing.ldf'); GO
3. 重启镜像数据库所在实例的SQL Server服务。
4. 移动镜像数据库文件到一个新位置,并确保文件上的权限也还在。
这时,我们来看看镜像状态。
在主库上:
在镜像库上:
可以看到,镜像库状态不正常。这时,我在镜像库上执行以下操作:
USE master GO ALTER DATABASE DXListing SET PARTNER RESUME GO
报错如下:
Msg 945, Level 14, State 2, Line 1
Database 'DXListing' cannot be opened due to inaccessible files or insufficient memory or disk space. See the SQL Server errorlog for details.
5. 使DXListing数据库 OFFLINE 再 ONLINE,以实施更改。(当然,此时重启SQL Server服务应该也可以,但建议还是在数据库级别操作)
USE master GO ALTER DATABASE DXListing SET OFFLINE ALTER DATABASE DXListing SET ONLINE GO
错误如下:
Msg 954, Level 14, State 1, Line 1
The database "DXListing" cannot be opened. It is acting as a mirror database.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.
这时,我们再来看看数据库状态。
在镜像库上:
在主库上:
发现状态已经正常。之前的错误可以忽略。
6. 在主库上点击“RESUME”,恢复镜像会话。验证镜像状态已同步。
参考:
https://msdn.microsoft.com/zh-cn/library/bb522469.aspx
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
华为交换机S5700升级实例
华为交换机S5700升级实例 近期我写了一篇文章,是在测试vSphere虚拟交换机中的"专用VLAN",此功能需要上层交换机的支持。专用VLAN,思科称为PVLAN,华为称为MUX VLAN。 文章详见 http://wangchunhai.blog.51cto.com/225186/1857192 我的环境中都是华为的交换机。先在一个环境中,测试,创建了4个VLAN,其中一个是主VLAN,另3个是辅助VLAN。但是我想为主VLAN设置端口地址时,出错: vlan 1030 mux-vlan subordinate separate 31 subordinate group 32 to 33 [HW5724]inte Vlanif 1030 Error: The VLAN is already a MUX VLAN. 但我随后在另一个网络中测试,同样是华为S5700-24TP-SI的交换机,测试通过。 vlan batch 11 12 13 inte vlan11 ip addr 192.168.11.254 24 vlan 11 mux-vlan subordinate separa...
- 下一篇
在异步镜像中移动主数据库文件实战
在异步数据库镜像中,移动主数据库文件实战 某数据库部署为异步数据库镜像,主数据库所在磁盘空间不足,我得移动主数据库文件到新的磁盘上。 在异步数据库镜像中,应用程序连接到主数据库访问。我们这里要根据你的线上环境考虑选择哪种方式合适: 1. 手动故障转移到镜像库,然后再移动新的镜像数据库文件。 2. 直接移动主数据库文件。 我个人认为,如果业务无法容忍长时间停机,建议先手工故障转移到镜像库,业务切换连接串。如果此时,新的镜像库所在实例上还有其他线上业务数据库,以业务第一,建议重做镜像,将数据库文件放到新的位置。待镜像搭建完成后,再重新手工故障转移回来,业务也指向回来。 由于我们线上业务恰好有停机维护时间窗口。在此期间,我直接移动主数据库。下面,我们先来尝试在业务停机期间,直接移动主数据库文件。 1. 在主数据库上做完整备份,避免出现问题。 2. 在主库上点击“Pause”,暂停镜像会话。 3. 在主库上使用Alter Database指向一个新的位置。 a) 确定WMS数据库的逻辑文件名称以及这些文件在磁盘上的当前位置。 SELECTname,physical_name FROMsys.m...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2配置默认Tomcat设置,开启更多高级功能