sqlserver数据库迁移的几种方式
方法一:将\Microsoft SQL Server\MSSQL\DATA文件夹中的syntt_datamdf和syntt_logldf文件复制到安装有数据库服务器的机器的文件夹中(可以是本机的\Microsoft SQL Server\MSSQL\DATA\文件夹),然后进入企业管理器。
右键点击“数据库”,在浮动菜单中选择“所有任务”中的“附加数据库”。在随后的提示页面中选择刚才复制过来的MDF文件,如果想指定数据库的所有者,在“指定数据库所有者”选择框中选择你认为合适的用户。
如果想修改数据库的名字,可在“附加为”框中输入新的数据库名字(对本数据库,不建议这么做,因为这样的话,整个程序中所有涉及数据库连接的代码都要随之修改,那将是不必要的劳动)。在进行完上述的工作之后,直接点击“确定”就可进行数据的SQL Server 数据转移转移。
方法二:(方法一)是针对数据库中没有本数据库的服务器,如果数据库中已经建有与该数据库名称相同的数据库,则直接按照备份数据库的恢复 *** 作就可完成数据的SQL Server 数据转移转移。方法如下所述:这种方法首先要在本机上建立一个备份文件,具体 *** 作介绍如下:1、 在企业管理器中打开服务器组以及指定的服务器。
然后右键点击需要备份的数据库在这里是syntt,在浮动菜单中选择“所有任务”菜单下的“备份数据库”,打开数据备份对话框。2、 选择“常规”选项卡,在名称对话框中输入本分 名称,在“描述”文本框中输入备份集描述文本信息。
在“备份”组下选择备份 *** 作类型,共有以下几种:数据库—完全:完整备份数据库。数据库—差异:增量备份数据库。
事务日志:事务日志备份。文件和文件组:数据库文件和文件组备份。
在“目的”组中指定备份设备或者备份文件名称,选择“添加”按钮添加备份设备或者文件;“删除”按钮用来删除备份设备和备份文件;选择“内容”按钮,则可查看已经存储在备份设备或文件中的备份信息。在“重写”组中有两种选项:追加到媒体:选择该选项,表示需要保存备份设备或文件中以前的备份数据。
重写现有媒体:要求本次被分数据覆盖以前的备份数据,从而节省存储空间。在“调度”组中,安排数据备份的时间。
用来指定数据库备份在将来的某个时间执行3、 “选项”选项卡,设置数据库备份 *** 作选项。其中的内容主要有以下几项:完成后验证备份:要求在备份结束时对备份数据进行校验。
备份后d出磁带:只对磁带备份设备有效,他要求在备份结束时自动卸带。删除事务日志中不活动的条目:要求在事务日志备份结束时删除事务日志中的已经完成的事务日志条目。
检查媒体集名称和备份集到期时间:要求在备份前检查介质集名称和原备份集中备份SQL Server 数据转移的有效期,以防止意外重写破坏原来的备份数据。备份集到期时间:设置备份集的有效期。
初始化并标识媒体:只对磁带设备有效。选择该选项后,SQL Server在备份时将Microsoft定义的磁带格式信息写入介质的开始部分。
此时,可以在“媒体集名称”和“媒体集描述”文本框中定义介质集名称和介质描述信息。4、 在进行完上述的 *** 作之后,剩下的任务就是点击“确定”,使系统开始进行数据库的备份 *** 作。
到目前为止,我们已经有了一个数据库的备份文件,剩下的任务就是怎么将这个文件还原至另外的数据库服务器中了。1、因为使用企业管理器进行数据库的恢复只能是在本机进行,所以在进行数据还原之前,必须将刚才所作的备份文件复制到本机,然后在本机选择“syntt”数据库,右键点击它,在显示出来的浮动菜单中选择“所有任务”下的“还原数据库”。
2、在还原数据库对话框中,在“常规”选项卡中的选择“从设备”的数据恢复方法,通过“选择设备”按钮选择刚才复制过来的文件。“常规”选项卡与“选项”选项卡中的具体内容如下所示:“常规”选项卡:数据库恢复方法:包括“数据库”、“文件组或文件”、“从设备”三种恢复方式。
“数据库”方式:选择该项时,从“显示数据库备份”列表中选择需要显示的指定数据库备份 ,从“要还原的第一个备份”列表框中选择首先使用哪一个备份集恢复数据库;“文件组或文件”:选择它时,数据库恢复部件列出指定数据库备份 中备份的数据库文件或文件组,管理员可从这些备份文件中选择恢复那个数据库文件或文件组;“从设备”:选择它时,管理员选择恢复数据库或其日志所使用的备份设备,之后再从该备份设备中选择使用哪一次备份中的数据恢复数据库或其日志。3、点击“确定”,完成恢复 *** 作。
非原创。
sql server中有行迁移现象吗有的,和oracle一样,SQL中也有行迁移行迁移记包含forwarding_stub 和forwarded 两种类型。
这两类记录是因为数据页不能容纳更新后的记录而产生的,不是因为记录长度超过8060B引起的,所以这两类记录依然是行内记录,与行溢出记录是不同的。这两种记录总是成对出现的,当出现forwarding_stub时,在别的页面中一定有与之对应的一条forwarded记录。
forwarding记录也叫forwarding_stub记录,记录头标志为0x04,它是一条完整的数据记录。虽然结构看起来特殊,但还是符合一般记录的结构,记录中主要内容就是在行中用8字节保存了指向移出后的记录的位置指针。
forwarded 记录,有时直接叫做迁移记录。记录头部标志为0x32 它也是一条完整记录,格式跟一般记录略有差异,大体结构还是相同的。
这里是存储了溢出前的那条记录的真实数据。 这两种记录的具体存储结构比较简单和直观,其逻辑结构会在下面的实例列举中结合具体数据记录来分析说明。
测试这种的方法太长了,不在这里具体列出,你可以到51CTO里面找一下,搜索SQL行迁移有具体的测试方法。
sql server中有行迁移现象吗有的,和oracle一样,SQL中也有行迁移
行迁移记包含forwarding_stub 和forwarded 两种类型。这两类记录是因为数据页不能容纳更新后的记录而产生的,不是因为记录长度超过8060B引起的,所以这两类记录依然是行内记录,与行溢出记录是不同的。
这两种记录总是成对出现的,当出现forwarding_stub时,在别的页面中一定有与之对应的一条forwarded记录。
forwarding记录也叫forwarding_stub记录,记录头标志为0x04,它是一条完整的数据记录。虽然结构看起来特殊,但还是符合一般记录的结构,记录中主要内容就是在行中用8字节保存了指向移出后的记录的位置指针。
forwarded 记录,有时直接叫做迁移记录。记录头部标志为0x32 它也是一条完整记录,格式跟一般记录略有差异,大体结构还是相同的。这里是存储了溢出前的那条记录的真实数据。
这两种记录的具体存储结构比较简单和直观,其逻辑结构会在下面的实例列举中结合具体数据记录来分析说明。
测试这种的方法太长了,不在这里具体列出,你可以到51CTO里面找一下,搜索SQL行迁移有具体的测试方法
SQL数据库如何自动备份和恢复一、备份数据库
1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server
2、SQL Server组-->;双击打开你的服务器-->;双击打开数据库目录
3、选择你的数据库名称(如论坛数据库Forum)-->;然后点上面菜单中的工具-->;选择备份数据库
4、备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份
二、还原数据库
1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server
2、SQL Server组-->;双击打开你的服务器-->;点图标栏的新建数据库图标,新建数据库的名字自行取
3、点击新建好的数据库名称-->;然后点上面菜单中的工具-->;选择恢复数据库
4、在d出来的窗口中的还原选项中选择从设备-->;点选择设备-->;点添加-->;然后选择你的备份文件名-->;添加后点确定返回,这时候设备栏应该出现您刚才选择的数据库备份文件名,备份号默认为1(如果您对同一个文件做过多次备份,可以点击备份号旁边的查看内容,在复选框中选择最新的一次备份后点确定)-->;然后点击上方常规旁边的选项按钮
5、在出现的窗口中选择在现有数据库上强制还原,以及在恢复完成状态中选择使数据库可以继续运行但无法还原其它事务日志的选项。在窗口的中间部位的将数据库文件还原为这里要按照你SQL的安装进行设置(也可以指定自己的目录),逻辑文件名不需要改动,移至物理文件名要根据你所恢复的机器情况做改动,如您的SQL数据库装在D:\Program Files\Microsoft SQL Server\MSSQL\Data,那么就按照您恢复机器的目录进行相关改动改动,并且最后的文件名最好改成您当前的数据库名(如原来是zw0001mdf,现在的数据库是zw0002,就改成zw0002mdf),日志和数据文件都要按照这样的方式做相关的改动(日志的文件名是ldf结尾的),这里的恢复目录您可以自由设置,前提是该目录必须存在(如您可以指定d:\sqldata\zw0002mdf或者d:\sqldata\zw0002ldf),否则恢复将报错
6、修改完成后,点击下面的确定进行恢复,这时会出现一个进度条,提示恢复的进度,恢复完成后系统会自动提示成功,如中间提示报错,请记录下相关的错误内容并询问对SQL *** 作比较熟悉的人员,一般的错误无非是目录错误或者文件名重复或者文件名错误或者空间不够或者数据库正在使用中的错误,数据库正在使用的错误您可以尝试关闭所有关于SQL窗口然后重新打开进行恢复 *** 作,如果还提示正在使用的错误可以将SQL服务停止然后重起看看,至于上述其它的错误一般都能按照错误内容做相应改动后即可恢复
如何设置才能使sql每半小时备份一次SQL Server数据库备份工具 22
数据库使用过程中历史表记录的增多数据库的增大导致以下问题的出现
1 数据库性能大幅下降
2 报表生成等要求数据库大数据量 *** 作时导致数据库响应短暂停止甚至完全停止响应
3 数据库备份或同步等数据库维护时间加长
本程序为绿色软件无需安装, 正确配置参数后即可运行,通过使用备份计划(可配置)定时将数据库中历史表的历史记录转移到备份机器上,减小生产机运行数据库,转移报表生成等大幅占用数据库 *** 作到备机以减小生产机压力
实现说明:
1 增加一台备份机器
2 备机上建立一个还原库用以还原当前数据库的备份和一个历史库用以保存历史数据
3 根据调度计划定时将当前生产机数据库备份到备机
4 还原备机还原库并将还原库中新增或更新数据导入备机历史库,目的为尽量少的占用当前数据库而使用备机资源
5 删除生产机数据库中已成功转移的历史数据
6 删除使用过的文件和清理数据库日志,减少磁盘占用
特点:
1 所有参数可配置
2 占用生产机数据库资源少, 仅备份 *** 作(历史表数据转移后备份时间大大减短且大多数情况下仅进行差异备份)
3 *** 作速度快,且费时 *** 作部分都基本在备机,不占用生产机资源
4 自动备份当前数据库日志和截断备份机器上数据库日志
5 自动删除使用过的文件,减少磁盘空间占用
6 整个 *** 作过程提供详细错误日志以方便维护
7 与SQL SERVER自带的发布订阅功能不同,历史数据只在备机上保留一份(如需备份备机历史数据请自行解决或定制此需求),生产机数据库只保留有生产必须的数据量即可,可尽可能的减少当前生产机数据库的数据量减少资源占用,将历史数据转移到备机上
8 无需更改现有系统
9 和其他备份程序的区别:主要针对历史数据转移需求,数据库备份只是一个前提,转移历史数据减小生产机数据库压力才是此程序的实质
升级说明:
1 去除所有标识部分,供公共使用
2 延长一次运行时间限制到30天
附:
1 如果有意请联系public_release@sina
2 可提供源代码(vc)和实现其他定制需求
3 此共享发布程序每次运行限制为30天(可放开),请不要相信其他的所谓破解版,实为其他非善意软件的安装程序包,如果不想有一次运行30天的限制,使用额外的程序在29天时关闭程序后重新启动即可
如何查询SQL Server备份还原历史记录SQL Server在msdb数据中维护了一系列表,用来存储执行所有备份和还原的细节信息。即使你正在使用第三方的备份应用程序,只要这个应用程序使用SQL Server的虚拟设备接口(Virtual Device Interface---VDI)来执行备份和还原执行,那么执行细节依然被存储在这一系列表中。
存储细节的表包括:
backupset
backupfile
backupfilegroup (SQL Server 2005 upwards)
backupmediaset
backupmediafamily
restorehistory
restorefile
restorefilegroup
logmarkhistory
suspect_pages (SQL Server 2005 upwards)
你可以在Books Online里面找到上面这些表的具体说明。
下面这个脚本可以帮你找出每个数据库近期的备份信息:
SELECT bname, atype, MAX(abackup_finish_date) lastbackup
FROM msdbbackupset a
INNER JOIN mastersysdatabases b ON adatabase_name COLLATE DATABASE_DEFAULT = bname COLLATE DATABASE_DEFAULT
GROUP BY bname, atype
ORDER BY bname, atype
指定数据库最后20条事务日志备份信息:
SELECT TOP 20 bphysical_device_name, abackup_start_date, afirst_lsn, auser_name FROM msdbbackupset a
INNER JOIN msdbbackupmediafamily b ON amedia_set_id = bmedia_set_id
WHERE atype = 'L'
ORDER BY abackup_finish_date DESC
指定时间段的事务日志备份信息:
SELECT bphysical_device_name, abackup_set_id, bfamily_sequence_number, aposition, abackup_start_date, abackup_finish_date
FROM msdbbackupset a
INNER JOIN msdbbackupmediafamily b ON amedia_set_id = bmedia_set_id
WHERE adatabase_name = 'AdventureWorks'
AND atype = 'L'
AND abackup_start_date > '10-Jan-2007'
AND abackup_finish_date
如果说安装了数据库的那台服务器设备要迁移,那么它是不会影响到你的项目的。需要修改的地方是你项目的连接字符串里的IP地址。
具体要做的工作如下:
1、企业内部要相互沟通,及时告诉用户什么时候开始暂停使用系统软件,以免因暂停服务器运行而造成用户的数据丢失。
2、搬迁到新地址后,需要把数据库连接字符串的IP地址替换成新的IP地址。
首先,暂停SQL2000数据库,将MDF和LDF文件备份。
这些文件复制到新机器,尝试直接附加,如果两个SQL版本一致,就这个方法最直接。但如果失败,尝试下面几个方法。
一般来说,不同SQL版本迁移数据,推荐使用两种方法进行转换:
1·使用数据库备份还原,在2000中备份成bak文件,到新系统中还原,这个方法的成功率比直接附加大的多,但如果数据库中存在特殊性不兼容的结构,此方法也可能失败,这时候使用第二种方法;
2·在2000中对数据库导出完整脚本(sql文件),在新系统中创建一个空库,执行该脚本。并使用DTS导入数据。
想知道你的mysql装在哪里吗?CentOS7一般是装在/var/lib/mysql中的
在完成迁移之前,先用下面的指令来停止mysqld服务
service mysqld stop,或者直接点sudo systemctl stop mysqld
然后用df-h指令看服务器上剩余空间是多少,假设我们新挂了一块500G的硬盘到/data上
那么请把mysql整个文件夹拷贝到/data中,像下面这样:
sudo cp -rf /var/lib/mysql /data/mysql,拷完以后原来的mysql文件夹就可以删除了
然后再修改/etc/mycnf,这个也是需要su的:
sudo vi /etc/mycnf
里面有一个字段叫[mysqld],将datadir和socket修改成这样:
datadir=/data/mysql
socket=/data/mysql/mysqlsock
接下来,有的人说要修改/etc/initd/mysqld,但我的服务器不需要,直接通过
service mysqld start就可以启动SQL服务了,远程也可以连接上,但是:
当你使用终端mysql -u root -p的时候,就会报下面这个错:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysqlsock'
这个时候,你有两种解决办法,一种是造一个软连接
ln -s /data/mysql/mysqlsock /var/lib/mysql/mysqlsock,原因是你已经删掉之前的mysql目录了
另外一种办法,是在/etc/mycnf下面新建一个新字段:
[mysql]
socket=/data/mysql/mysqlsock
第一种方法不需要重启mysql server,第二种方法需要重启mysql server,
然后,你就可以成功地从终端里进入mysql了
敲黑板,不要在[mysql]下面自做主张地写上datadir=/data/mysql,这样会导致本地命令行登录时报错:Unknown Variable: datadir=/data/mysql
Oracle Goldengate目前支持主被动式的双向配置,换而言之OGG可以将来自于激活的主库的数据变化完全复制到从库中,从库在不断同步数据的同时已经为计划内的和计划外的outages做好了故障切换的准备,也就是我们说的Live Standby。这里我们重点介绍一下配置Oracle Goldengate Live Standby系统的步骤,和具体的故障切换过程。
如果自己搞不定可以找ASKMACLEAN专业ORACLE数据库修复团队成员帮您恢复!
SQL> conn clinic/clinicConnected
SQL> drop table tv;
create table tv (t1 int primary key,t2 int,t3 varchar2(30));
Table dropped
SQL>
Table created
SQL> drop sequence seqt1;
create sequence seqt1 start with 1 increment by 1;
Sequence dropped
SQL> SQL>
Sequence created
declare
rnd number(9,2);
begin
for i in 1100000 loop
insert into tv values(seqt1nextval,idbms_randomvalue,'MACLEAN IS TESTING');
commit;
end loop;
end;
/
/ 以上脚本在primary主库的某个应用账户下创建了测试用的数据,
接着我们可以使用各种工具将数据初始化到从库中,如果在这个过程中
希望实时在线数据迁移的话,可以参考《Goldengate实现在线数据迁移》
/
/ 注意我们在Live Standby的环境中往往需要复制sequence序列,以保证切换到备库时业务可以正常进行 /
/ 初始化备库数据后,确保已与主库完全一致 /
primary :
SQL> select sum(t2) from tv;
SUM(T2)
----------
2498624495
SQL> select last_number from user_sequences;
LAST_NUMBER
-----------
100001
standby:
SQL> select sum(t2) from tv;
SUM(T2)
----------
2498624495
SQL> select last_number from user_sequences;
LAST_NUMBER
-----------
100001
以上完成准备工作后,我们可以进入到正式配置Goldengate live stanby的阶段,包括以下步骤:
配置由主库到备库的extract、replicat、data pump,该步骤同普通的单向复制没有太大的区别
配置由备库到主库的extract、replicat、data pump
启动由主库到备库的extract、replicat、data pump
接下来我们会实践整个配置过程:
1
创建由主库到备库的extract、data pump、replicat
GGSCI (rh2oraclecom) 10> dblogin userid maclean
Password:
Successfully logged into database
GGSCI (rh2oraclecom) 11> add trandata clinic
Logging of supplemental redo data enabled for table CLINICTV
GGSCI (rh2oraclecom) 4> add extract extstd1,tranlog,begin now
EXTRACT added
GGSCI (rh2oraclecom) 5> add exttrail /d01/ext/cl,megabytes 100,extract extstd1
EXTTRAIL added
GGSCI (rh2oraclecom) 7> view params extstd1
-- Identify the Extract group:
EXTRACT extstd1
-- Specify database login information as needed for the database:
userid maclean, password maclean
-- Specify the local trail that this Extract writes to:
EXTTRAIL /d01/ext/cl
-- Specify sequences to be captured:
SEQUENCE clinicseqt1;
-- Specify tables to be captured:
TABLE clinic;
-- Exclude specific tables from capture if needed:
-- TABLEEXCLUDE
GGSCI (rh2oraclecom) 17> add extract pumpstd1,exttrailsource /d01/ext/cl,begin now
EXTRACT added
GGSCI (rh2oraclecom) 98> add rmttrail /d01/rmt/cl,megabytes 100,extract pumpstd1
RMTTRAIL added
GGSCI (rh2oraclecom) 129> view params pumpstd1
-- Identify the data pump group:
EXTRACT pumpstd1
userid maclean, password maclean
-- Specify database login information as needed for the database:
userid maclean, password maclean
RMTHOST rh3oraclecom, MGRPORT 7809
-- Specify the remote trail on the standby system:
RMTTRAIL /d01/rmt/cl
-- Pass data through without mapping, filtering, conversion:
PASSTHRU
sequence clinicseqt1;
Table clinic;
在备库上配置由主库到备库的replicat:
GGSCI (rh3oraclecom) 4> add replicat repstd1,exttrail /d01/rmt/cl,begin now
REPLICAT added
GGSCI (rh3oraclecom) 49> view params repstd1
-- Identify the Replicat group:
REPLICAT repstd1
-- State that source and target definitions are identical:
ASSUMETARGETDEFS
-- Specify database login information as needed for the database:
userid maclean, password maclean
-- Specify tables for delivery:
MAP clinic, TARGET clinic;
-- Exclude specific tables from delivery if needed:
-- MAPEXCLUDE
2
创建由备库到主库的extract、data pump、replicat
GGSCI (rh3oraclecom) 51> dblogin userid maclean
Password:
Successfully logged into database
GGSCI (rh3oraclecom) 52> add trandata clinic
Logging of supplemental redo data enabled for table CLINICTV
/ 不要忘记在备库端的相关表加上追加日志 /
GGSCI (rh3oraclecom) 53> add extract extstd2,tranlog,begin now
EXTRACT added
GGSCI (rh3oraclecom) 54> add exttrail /d01/ext/cl,megabytes 100,extract extstd2
EXTTRAIL added
GGSCI (rh3oraclecom) 58> view params extstd2
-- Identify the Extract group:
EXTRACT extstd2
-- Specify database login information as needed for the database:
userid maclean, password maclean
-- Specify the local trail that this Extract writes to:
EXTTRAIL /d01/ext/cl
-- Specify sequences to be captured:
SEQUENCE clinicseqt1;
-- Specify tables to be captured:
TABLE clinic;
-- Exclude specific tables from capture if needed:
-- TABLEEXCLUDE
GGSCI (rh3oraclecom) 59> add extract pumpstd2,exttrailsource /d01/ext/cl,begin now
EXTRACT added
GGSCI (rh3oraclecom) 60> add rmttrail /d01/rmt/cl,megabytes 100,extract pumpstd2
RMTTRAIL added
GGSCI (rh3oraclecom) 63> view params pumpstd2
-- Identify the data pump group:
EXTRACT pumpstd2
userid maclean, password maclean
-- Specify database login information as needed for the database:
userid maclean, password maclean
RMTHOST rh2oraclecom, MGRPORT 7809
-- Specify the remote trail on the standby system:
RMTTRAIL /d01/rmt/cl
-- Pass data through without mapping, filtering, conversion:
PASSTHRU
sequence clinicseqt1;
Table clinic;
在主库上配置replicat:
GGSCI (rh2oraclecom) 136> add replicat repstd2,exttrail /d01/rmt/cl,begin now,checkpointtable macleanck
REPLICAT added
GGSCI (rh2oraclecom) 138> view params repstd2
-- Identify the Replicat group:
REPLICAT repstd2
-- State that source and target definitions are identical:
ASSUMETARGETDEFS
-- Specify database login information as needed for the database:
userid maclean, password maclean
-- Specify tables for delivery:
MAP clinic, TARGET clinic;
-- Exclude specific tables from delivery if needed:
-- MAPEXCLUDE
3
完成以上OGG配置后,可以启动主库到备库的extract、pump、以及replicat:
GGSCI (rh2oraclecom) 141> start extstd1
Sending START request to MANAGER
EXTRACT EXTSTD1 starting
GGSCI (rh2oraclecom) 142> start pumpstd1
Sending START request to MANAGER
EXTRACT PUMPSTD1 starting
GGSCI (rh3oraclecom) 70> start repstd1
Sending START request to MANAGER
REPLICAT REPSTD1 starting
/ 如果你是在offline状态下配置的话,那么此时可以启用应用了/
接下来我们尝试做有计划的主备库切换演练:
1
首先停止一切在主库上的应用,这一点和DataGuard Switchover一样。在保证没有活动事务的情况下,才能切换干净。
2
在主库端使用LAG等命令了解extract的延迟,若返回如"At EOF, no more records to process"的信息,则说明所有事务均已被抽取。
GGSCI (rh2oraclecom) 144> lag extstd1
Sending GETLAG request to EXTRACT EXTSTD1
Last record lag: 0 seconds
At EOF, no more records to process
在EOF的前提下关闭extract:
GGSCI (rh2oraclecom) 146> stop extstd1
Sending STOP request to EXTRACT EXTSTD1
Request processed
3
同样对pump使用LAG命令,若返回如"At EOF, no more records to process"的信息,则说明已抽取的数据都被发送到备库了。
GGSCI (rh2oraclecom) 147> lag pumpstd1
Sending GETLAG request to EXTRACT PUMPSTD1
Last record lag: 3 seconds
At EOF, no more records to process
在EOF的前提下,关闭data pump
GGSCI (rh2oraclecom) 148> stop pumpstd1
Sending STOP request to EXTRACT PUMPSTD1
Request processed
3
检查备库端replicat的同步情况,如返回"At EOF, no more records to process",则说明所有记录均被复制。
GGSCI (rh3oraclecom) 71> lag repstd1
Sending GETLAG request to REPLICAT REPSTD1
Last record lag: 5 seconds
At EOF, no more records to process
在EOF的前提下关闭replicat
GGSCI (rh3oraclecom) 72> stop repstd1
Sending STOP request to REPLICAT REPSTD1
Request processed
4
紧接着我们可以在备库上为业务应用用户赋予必要的insert、update、delete权限,启用各种触发器trigger及cascade delete约束等;
以上手段在主库上对应的 *** 作是收回应用业务的权限,disable掉各种触发器及cascade delete约束,
之所以这样做是为了保证在任何时候扮演备库角色的数据库均不应当接受任何除了OGG外的手动的或者应用驱动的业务数据变更,
以保证主备库间的数据一致。
5
修改原备库上的extract的启动时间到现在,已保证它不去抽取那些之前的重做日志
GGSCI (rh3oraclecom) 75> alter extstd2 ,begin now
EXTRACT altered
GGSCI (rh3oraclecom) 76> start extstd2
Sending START request to MANAGER
EXTRACT EXTSTD2 starting
若之前没有启动由备库到主库的pump和replicat的话可以在此时启动:
GGSCI (rh3oraclecom) 78> start pumpstd2
Sending START request to MANAGER
EXTRACT PUMPSTD2 starting
GGSCI (rh2oraclecom) 161> start repstd2
Sending START request to MANAGER
REPLICAT REPSTD2 starting
6此时我们可以正式启动在原备库现在的主库上的应用了
接下来我们尝试回切到原主库上:
1前提步骤与之前的切换相似,首先停止在原备库上的任何应用,
之后使用LAG命令确认extract和replicat的进度,在确认后关闭extract和replicat。
完成在主库上的维护工作:包括赋予权限,启用触发器等等。
2修改原主库上的extract的开始时间为当前,保证它不去处理之前的重做日志:
GGSCI (rh2oraclecom) 165> alter extract extstd1,begin now
EXTRACT altered
3此时我们已经可以启动在原主库现在的主库上的应用了
4启动最早配置的由主库到备库的extract、pump、replicat:
GGSCI (rh2oraclecom) 166> start extstd1
Sending START request to MANAGER
EXTRACT EXTSTD1 starting
GGSCI (rh2oraclecom) 171> start pumpstd1
Sending START request to MANAGER
EXTRACT PUMPSTD1 starting
GGSCI (rh3oraclecom) 86> start repstd1
Sending START request to MANAGER
REPLICAT REPSTD1 starting
以上完成了OGG的Live Standby中主备库之间的计划内的切换Switchover,That's Great!
不是简单的事。
一般新旧系统的数据库表结构会有很大的变化,所以一般是用从旧系统导入excel表,调整至新系统能认的格式,再导入新系统。
如果数据库表结构相差不大的话,还可以用sql的导入数据来完成,但得一个一个的搞呀,很是麻烦。
我们在实际应用开发中,经常会用到数据库迁移,以使我们开发的应用具有可迁移性,下面我采用反射技术,运用工厂模式编写了一个数据库迁移的小例子,如下:
本例中实现了 SQLSERVER 和 MySQL 的迁移
工厂中封装的主要方法可属性
获取程序集所在文件路径的成员变量:
private static readonly string AssemblyPath = ConfigurationManagerAppSettings["AssemblyPath"];
获取程序集命名空间的成员变量:
private static readonly string AssemblyName = ConfigurationManagerAppSettings["AssemblyName"];
创建引用命名空间的方法:
private static object CreateObject(string AssemblyPath, string classNamespace)
{
try
{
object objType = AssemblyLoadFile(AssemblyPath)CreateInstance(classNamespace);
return objType;
}
catch (SystemException ex)
{
throw ex;
}
}
创建DbDataReader实例的方法:
public static DbDataReader CreaterDbDataReader()
{
string ClassNamespace = AssemblyName + "DataReader";
object objType = CreateObject(AssemblyPath, ClassNamespace);
return (DbDataReader)objType;
}
创建DbConnection实例的方法:
public static DbConnection CreateDbConnection()
{
string ClassNamespace = AssemblyName + "Connection";
object objType = CreateObject(AssemblyPath, ClassNamespace);
return (DbConnection)objType;
}
创建DbCommand实例的方法:
public static DbCommand CreateDbCommand()
{
string ClassNamespace = AssemblyName + "Command";
object objType = CreateObject(AssemblyPath, ClassNamespace);
return (DbCommand)objType;
}
创建DbDataAdapter实例的方法:
public static DbDataAdapter CreateDbDataAdapter()
{
string ClassNamespace = AssemblyName + "DataAdapter";
object objType = CreateObject(AssemblyPath, ClassNamespace);
return (DbDataAdapter)objType;
}
以上就是关于sqlserver历史记录迁移全部的内容,包括:sqlserver历史记录迁移、公司数据库要迁移,需要做什么工作。、SQL数据迁移问题(数据库迁移的两种方法)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)