在这之前当然要详细了解所有用户和用户权限,用户的数据对象等;然后建用户赋权限,并先转移不变的历史数据。
2003年年初我执行了这个任务。在凌晨,服务的停顿时间约为15分钟。
转移数据库服务器步骤如下:
01:00 序列号按预留空值的方法先建立起来。
(已生成*.sql文件,并让*.sh脚本可直接调用)
01:30 基本不变和变化不频繁的小表用exp和imp导出,导入。数据量约80M。
(已生成exp_small.sh和imp_small.sh脚本,可直接调用)
02:00 大表(100M以上)用CTS (create table a as select * b@databaselink) 方法建立起来,
建索引和约束关系。数据量约1G。
(已生成*.sql文件,并让*.sh脚本可直接调用)
02:30 停应用程序。(开始停服务的时间)
02:30 频繁修改或者影响用户使用的一些表也用CTS方法建立起来,建索引和约束关系。
数据量约80M。
建立存储过程(数量不多)。
(已生成*.sql文件,并让*.sh脚本可直接调用)
02:45 启动应用程序。(结束停服务的时间)
02:45 对变动频繁的表补差值。
(已生成*.sql文件,但要手工操作)
03:00 各项检查结束。
备注:在切换数据库服务器前,这些自动脚本都曾经执行过一到两次。估算过时间。
相关项目也做过应用测试。
-------------------------------------------------------------------------------------
24×7环境转移SQL Server数据库服务器
SQL Server数据库里个体数据库为适应24×7环境一般设置的是完全故障还原模式。 DBA可以在SQL Server企业管理器->管理->数据库维护计划 里设定数据库和日志文件的备份频率。 一般情况下每天凌晨做一次数据库的完整备份, 每隔两个小时做一次日志文件的备份。 (DBA当然也可以根据数据日志的大小及数据的重要程度来决定日志文件备份的间隔时间) 24×7环境转移SQL Server数据库也是根据完整备份和日志备份来转移并恢复数据的。 在SQL Server企业管理器的还原数据库的窗口图形界面,如下:还原完整备份数据库的时候我们要在选项的窗口中选择 [使数据库不再运行,但能还原其它事务日志] 或者 [使数据库为只读,但能还原其它事务日志] 这样,下一步才能做日志文件的恢复操作。 同样这样的恢复步骤可以写成T-SQL脚本: RESTORE FILELISTONLY FROM DISK = 'f:\backup_data\db_test\db_test_db_200406300300.BAK' RESTORE DATABASE db_test FROM DISK = 'f:\backup_data\db_test\db_test_db_200406300300.BAK' WITH NORECOVERY , MOVE 'db_test' TO 'D:\Microsoft SQL Server\MSSQL\Data\db_test_data.mdf', MOVE 'db_test_Log' TO 'D:\Microsoft SQL Server\MSSQL\Data\db_test_log.ldf' RESTORE Log db_test FROM DISK = 'f:\backup_data\db_test\db_test_tlog_200406300400.TRN' WITH NORECOVERY , MOVE 'db_test' TO 'D:\Microsoft SQL Server\MSSQL\Data\db_test_data.mdf', MOVE 'db_test_Log' TO 'D:\Microsoft SQL Server\MSSQL\Data\db_test_log.ldf' ...... ...... RESTORE Log db_test FROM DISK = 'f:\backup_data\db_test\db_test_tlog_200406300500.TRN' WITH RECOVERY , MOVE 'db_test' TO 'D:\Microsoft SQL Server\MSSQL\Data\db_test_data.mdf', MOVE 'db_test_Log' TO 'D:\Microsoft SQL Server\MSSQL\Data\db_test_log.ldf' NORECOVERY 选项指的是还原还没有最后完成,还能接收新的日志备份文件,用来恢复。 RECOVERY 选项指的是还原已经结束,数据库可以恢复使用。 当我们要转移大量数据库的时候,用T-SQL脚本操作就方便很多。
