某政府部门8G中型Informix7.30数据库数据迁移方案

序言:

    近日,帮某政府部门迁移了一个中型数据库,抽时间整理了一下,供大家学习参考,也欢迎大家指教。

 

准备工作:

 

1.从系统表搜索出将所有的表名

select tabname from systabnames where owner='hzcz';

共有160张用户表

 

2.分析表空间占用比例

找出了10张大表,进行占用空间分析

tbl_grhjxm 4911503, 占用284*4911503 = 1.39G

tbl_grcfmx 2920688, 占用306*2920688 = 894M

cz_zfmx  4499093, 占用172*4499093 = 773M

cz_czgrzhmx 3280647, 占用147*3280647 = 482M

tbl_nmxx 1217105, 占用208*1217105 = 253M

tbl_mgrpmx 3131489, 占用206*3131489 = 645M

tbl_nmhjxm 1520021, 占用180*1520021 = 273M

tbl_jyhz 1219141, 占用134*1219141 = 163M

tbl_grcfmx_sh 1191166条,占用1191166*280 = 333M

tbl_grhjxm_sh 1524565条,占用1524565*258 = 393M

共占空间:约 5.6G

 

3.编写导出、导入数据的shell脚本

导出shell7

j_unload1.sh的内容如下:

date +"tbl_grhjxm.Start: %Y-%m-%d %H:%M:%S">>mm.log

dbaccess hzcz <<! 1>>mm.log 2>>mm.log

unload to tbl_grhjxm.txt select * from tbl_grhjxm;

!

date +"tbl_grhjxm.End  : %Y-%m-%d %H:%M:%S">>mm.log

其它的与j_unload1.sh类似,见操作步骤

 

导出shell7

j_load1.sh的内容如下:

date +"tbl_grhjxm.Start: %Y-%m-%d %H:%M:%S">>mm.log

dbaccess hzcz <<! 1>>mm.log 2>>mm.log

load from tbl_grhjxm.txt insert into tbl_grhjxm;

!

date +"tbl_grhjxm.End  : %Y-%m-%d %H:%M:%S">>mm.log

 

4.编写生成数据库、表、主外键、索引、存储过程的shell脚本

4.1 导出所有存储过程

dbschema -d hzcz -f all j_hzcz_f.sql

4.2 导出所有数据表

dbschema -d hzcz -t all j_hzcz_t.sql

4.3 导出所有索引

egrep "create index|create unique index|[0-9,a-z,A-Z]);$" j_hzcz_t.sql > j_hzcz_idx.sql

 

4.4 在建表语句中过滤掉建立索引部分

j_hzcz_t.sql

:g/create index/d

:g/create unique index/d

:g/[0-9,a-z,A-Z]);$/d

 

4.5 去掉建表语句中的非主外键部分的constraint

j_hzcz_t.sql

:g/ constraint "hzcz".n[0-9][0-9][0-9]_[0-9][0-9][0-9],$/s//,/

:g// constraint "hzcz".n[0-9][0-9][0-9]_[0-9][0-9][0-9][0-9],$/s//,/

 

4.6 去掉主外键,并编写生成主外键的shell脚本(只能手工操作)

j_hzcz_t.sql中,删去primary key的部分,并将类似下面的语句写入j_hzcz_key.sql

alter table tbl_hjlb add constraint primary key(lbdm,ryxz);

 

4.7 统计

 

5.安装配置新数据库服务器

具体网络上已经很多,此处不再重复

建立rootdbs

建立logdbs

onspaces -c –d logdbs -p /home/informix/zdbs/logdbs –o 0 –s 2000000

建立workdbs,并加8chunk,每个 2G

onspaces -c –d workdbs -p /home/informix/zdbs/workdbs –o 0 –s 2000000

onspaces -a workdbs -p /home/informix/zdbs/wkchunk1 –o 0 –s 2000000

onspaces -a workdbs -p /home/informix/zdbs/wkchunk2 –o 0 –s 2000000

onspaces -a workdbs -p /home/informix/zdbs/wkchunk3 –o 0 –s 2000000

onspaces -a workdbs -p /home/informix/zdbs/wkchunk4 –o 0 –s 2000000

onspaces -a workdbs -p /home/informix/zdbs/wkchunk5 –o 0 –s 2000000

onspaces -a workdbs -p /home/informix/zdbs/wkchunk6 –o 0 –s 2000000

onspaces -a workdbs -p /home/informix/zdbs/wkchunk7 –o 0 –s 2000000

onspaces -a workdbs -p /home/informix/zdbs/wkchunk8 –o 0 –s 2000000

 

 

操作步骤:

1.停止相关应用程序及定时程序

应用程序:根据应用开发公司提供的资料停止相关应用程序

定时程序:

备份原crontab#crontab -l > cron_file

清空crontab#crontab kk为空文件)

 

2.导出数据

160张表,进行均匀分配,每个shell导出数据尽量不超过 1G

执行shell文件

包含表

空间

j_unload1.sh

tbl_grhjxm

1.4G

j_unload2.sh

Tbl_grcfmx

0.9 G

j_unload3.sh

Tbl_grcfmx_sh, tbl_grhjxm_sh, tbl_jyhz

0.88 G

j_unload4.sh

Cz_zfmx,cz_czgrzhmx

1.15 G

j_unload5.sh

Tbl_nmxx, tbl_mgrpmx, tbl_nmhjxm

1.16 G

j_unloada.sh

剩余表175张表:bbbcz_ylbzcs

1G 左右

j_unloadb.sh

剩余表275张表:cz_ylfkxxyl

1G 左右

 

3.压缩文件,并传到新服务器上

注,该项目中,我只压缩了内容比较大的10张表,以减少传输时间,其它文件没有压缩,毕竟压缩、解压缩也是很费时间的

 

4.在新的数据库服务器上建立数据库、数据表

create database hzcz in workdbs

 

5导入数据(2小时)

执行shell文件

包含表

空间

时间

j_load1.sh

tbl_grhjxm

1.4

429-540

j_load2.sh

Tbl_grcfmx

0.9

432-526

j_load3.sh

Tbl_grcfmx_sh, tbl_grhjxm_sh, tbl_jyhz

0.88

433-532

j_load4.sh

Cz_zfmx,cz_czgrzhmx

1.15

434-543

j_load5.sh

Tbl_nmxx, tbl_mgrpmx, tbl_nmhjxm

1.16

436-545

j_loada.sh

剩余表175张表:bbbcz_ylbzcs

1

444-459

j_loadb.sh

剩余表275张表:cz_ylfkxxyl

1

444-459

 

6.检查新老机器数据条数是否相等

执行sh jcount.sql,对比结果

 

7.建立主外键(10-20分钟)(554-555

j_hzcz_key.sql

 

8.建立表索引(2-4小时)(555-620

j_hzcz_idx.sql

 

9加入日志(621

采用无buffer0级日志方案

ontape -s -L 0 -U hzcz

 

10.建立存储过程(625

j_hzcz_f.sql

 

11.更新统计(1小时)(626-644

update statistics

 

12修改IP地址并加上网关

将原来机器网线拔掉或修改IP,将新的机器IP改成原机IP

 

13建立相应的运行支持目录

根据应用开发公司提供的资料建立相关应用程序所需要的目录

 

14启动程序

根据应用开发公司提供的资料启动相关应用程序

 

15设置定时程序

编辑croncrontab cron_file

编译croncrontab -l

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值