数据迁移前的准备和系统检查

简介: 关于数据迁移,在之前也讨论过一些需要注意的地方,可能林林总总列了不少,都是在数据迁移迁移前和迁移时需要注意的。http://blog.itpub.net/23718752/viewspace-1195364/ 我在这个帖子的基础上进行更多的总结和补充。

关于数据迁移,在之前也讨论过一些需要注意的地方,可能林林总总列了不少,都是在数据迁移迁移前和迁移时需要注意的。
http://blog.itpub.net/23718752/viewspace-1195364/
我在这个帖子的基础上进行更多的总结和补充。

数据升级前的测试

 -)充分的测试,评估时间,总结经验,提升性能, 心中有数。
在生产中进行数据的大批量迁移时,充分的测试时必须的。一方面可以根据这些测试积累一些必要的数据作为生产中使用参考,另外一方面可以基于之前的测试,总结经验,总结不足之处,加入改进,在生产中每一分钟的改进都是很重要的。

补充:
需要做一些相关的性能测试,在条件允许的情况下在类似的环境中完全模拟,得到一些性能数据,然后不断的改进,看能够否有大的提升。
我们在做数据迁移的时候,就是在备份库中克隆的一套环境,然后在上面做的性能测试,在生产上的步骤方式都一样,结果在正式升级的时候就能够做到心中有数。什么时候需要注意什么,什么时候需要做哪些想关的检查。

完整的备份策略
热备甚至冷备
    在数据迁移之前进行完整的备份,一定要是全量的。甚至在允许的情况下做冷备都可以。数据的备份越充分,出现问题时就有了可靠的保证。
lob数据类型的备份,做表级的备份(create table nologging....)
    对于lob的数据类型,在使用imp,impdp的过程中,瓶颈都在lob数据类型上了,哪怕表里的lob数据类型是空的,还是影响很大。
    自己在做测试的时候,使用Imp基本是一秒钟一千条的数据速度,impdp速度有所提升,但是parallle没有起作用,速度大概是1秒钟1万条的样子。
    如果在数据的导入过程中出了问题,如果有完整快速的备份,自己也有了一定的数据保证,要知道出问题之后再从备份库中导入导出,基本上都是很耗费时间的。

补充:
关于lob数据的备份,大家可以根据自己的情况而定,如果使用数据泵来做数据迁移,强烈建议做表级备份,如果出现数据冲突的时候,能够很方便的排查。
而在系统级的备份,也是很重要的,这个也是整个升级的关键,如果出现任何预料之外的情况,我们还可以退回一步。


数据升级前的系统级检查
1)内存检查
    可以使用top,free -m来做一个检查,看内存的使用情况是否正常,是否有足够的内存空间。
 像下面的情况,在同一台机器上有多个实例,如果能够最大程度的释放内存给需要的库,可以考虑把剩下的库failover到别的服务器上。或者情况允许的情况下,直接停掉。

àDB instance in the same DB server(PRODB01)

As I remember XXXXX ,XXXX is on other DB server before, is it possible to switch to other DB servers?

> ps -ef|grep smon

oraccbs1 21056     1  0 Aug17 ?        00:00:17 ora_smon_PRODB01

oraaems2 22395     1  0 Aug17 ?        00:00:02 ora_smon_DBM02

oraarcs1 24868     1  0 Aug17 ?        00:00:02 ora_smon_DBC01

oramaes1 26396     1  0 Aug17 ?        00:00:01 ora_smon_DBE01


2)检查cpu,io情况,查看iowait是否稳定,保持在较低的一个幅度。
    可以使用top,sar命令来查看或者通过shell脚本来得到一些系统的负载信息,及时排除不必要的隐患。
    可以查看iowait的情况,如果超过30%,说明有比较严重的io等待了,一般都需要保持在一个很低的比例。

àIOwait

from system level has reduced much, as I remember, it is around 4% before. And vxfs_thread has gone.

top - 12:54:20 up 26 days, 11:51,  8 users,  load average: 2.05, 2.22, 2.36

Tasks: 2150 total,   4 running, 2145 sleeping,   0 stopped,   1 zombie

Cpu(s):  5.8%us,  0.4%sy,  0.0%ni, 93.6%id,  0.1%wa,  0.0%hi,  0.1%si,  0.0%st

Mem:  371307496k total, 187371412k used, 183936084k free,  2043876k buffers

Swap: 377487328k total,     9440k used, 377477888k free, 112921640k cached


3)检查进程的情况
    检查是否有高cpu消耗的异常进程
    检查是否有僵尸进程
 像下面的例子,进程中存在一个僵尸进程,可以查看倒底是什么进程,排查后可以杀掉。

top - 16:53:11 up 26 days, 15:50,  9 users,  load average: 2.95, 2.61, 2.83

Tasks: 2096 total,   2 running, 2093 sleeping,   0 stopped,   1 zombie

Cpu(s):  5.8%us,  1.1%sy,  0.1%ni, 88.5%id,  4.2%wa,  0.0%hi,  0.2%si,  0.0%st

Mem:  371307496k total, 100558832k used, 270748664k free,  2047600k buffers

Swap: 377487328k total,     9440k used, 377477888k free, 26339800k cached

> ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'

Zs    8739  8745 [sh]

>  ps -ef|grep 8739

root      8739 10743  0 00:01 ?        00:00:00 crond

root      8745  8739  0 00:01 ?        00:00:00 [sh]

oraccbs1 20785  6780  0 16:54 pts/5    00:00:00 grep 8739

> ps -ef|grep 8745

root      8745  8739  0 00:01 ?        00:00:00 [sh]

oraccbs1 22222  6780  0 16:54 pts/5    00:00:00 grep 8745

4)是否有crontab的设置
这个检查太重要了,如果在升级的时候有什么例行的job在运行,会有很大的影响,可以使用crontab -l来查看crontab的情况

5)vxfs下的odm是否已经启用
如果使用的veritas的文件系统,需要检查一下odm是否正常启用。

àODM is enabled.

Oracle instance running with ODM: Veritas 6.0.100.000 ODM Library, Version 2.0

Sun Aug 17 23:24:39 2014

> ps -ef|grep odm

root     10615     1  0 Jul23 ?        00:00:17 [vxodm_ioreap]

root     10616     1  0 Jul23 ?        00:00:00 [vxodm_ioclean]

oraccbs1 24858 28913  0 12:58 pts/9    00:00:00 grep odm


6)IO 简单测试
从系统角度来考虑,需要保证io的高效性。可以使用
iostat,sar等来评估
还可以使用如下的脚本简单来测试一下。
time dd if=/dev/zero bs=1M count=204 of=direct_200M

->DD testing, result is expected.

> time dd if=/dev/zero bs=1M count=204 of=direct_200M

204+0 records in

204+0 records out

213909504 bytes (214 MB) copied, 0.401999 seconds, 532 MB/s

real    0m0.404s

user    0m0.001s

sys     0m0.035s

> time dd if=/dev/zero bs=1M count=204 of=direct_200M

204+0 records in

204+0 records out

213909504 bytes (214 MB) copied, 0.424942 seconds, 503 MB/s

real    0m0.433s

user    0m0.000s

sys     0m0.030s 

  7) 网络带宽
    网络是很重要的一个因素,数据迁移的时候肯定会从别的服务器中传输大量的文件,dump等,如果网络太慢,无形中就是潜在的问题。
可以使用scp来进行一个简单的测试,如果存储还不错的话,一般在50M左右/每秒 的速度

目录
相关文章
|
28天前
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之OAT添加服务器预检查的时候报错如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
3月前
|
关系型数据库 MySQL 数据库
dts在数据迁移过程中,如果出现“默认值超出目标数据库支持范围”的错误
dts在数据迁移过程中,如果出现“默认值超出目标数据库支持范围”的错误
26 1
|
4月前
|
关系型数据库 数据库 RDS
为了确保数据的完整性和准确性,建议您在进行数据迁移前,充分理解源数据库和目标数据库的特性以及迁移过程中可能出现的问题
为了确保数据的完整性和准确性,建议您在进行数据迁移前,充分理解源数据库和目标数据库的特性以及迁移过程中可能出现的问题
40 1
系统迁移
系统迁移
92 0
|
运维 监控 关系型数据库
今天你检查备份了吗?
今天你检查备份了吗?
|
存储 消息中间件 分布式计算
系统迁移基本法
社区评论系统在完成了基础功能建设后,开始逐步将老系统业务迁移到新系统,实现整体架构统一、新系统功能赋能老业务、节省系统维护成本;迁移过程本身虽然枯燥无味,但并不妨碍通用解决方案的沉淀,本文以评论新老系统迁移为背景,聊聊系统迁移的基本方法,同时也希望能抛砖引玉,探索更多迁移方案的可能性。
|
SQL 关系型数据库 RDS
DTS-077100 向目标库同步数据时出错
DTS向目标库表同步DML/DDL数据操作时出错,一般是目标库的某些原因导致的.
9357 0
|
搜索推荐 安全 Windows