备库搭建中的一波三折

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 这几天一台服务器出了硬件问题之后,这台服务器上的两个备库都殉职了,我们真是如坐针毡,毕竟没有了备库感觉就是裸奔,两个库差不多有10T,搭一套备库也是颇有波折。 当服务器到了我手里之后,首先就开始准备安装数据库软件,安装前的基本检查很快做完了,需要预先安装的依赖包我看使用yum源已经识别了,我也标示了yes,然后开始克隆安装。
这几天一台服务器出了硬件问题之后,这台服务器上的两个备库都殉职了,我们真是如坐针毡,毕竟没有了备库感觉就是裸奔,两个库差不多有10T,搭一套备库也是颇有波折。
当服务器到了我手里之后,首先就开始准备安装数据库软件,安装前的基本检查很快做完了,需要预先安装的依赖包我看使用yum源已经识别了,我也标示了yes,然后开始克隆安装。
奇怪的是克隆安装显示成功,竟然sqlplus不可用。
$ sqlplus -v
sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory
这个问题还比较简单,一般就是LD_LIBRARY_PATH没有设置
但是设置之后,重新relink发现报错信息变成了下面的样子。
$ sqlplus -v
sqlplus: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory
查看这个链接文件,还确实是有问题。
$ ll libclnt*
lrwxrwxrwx. 1 oracle oinstall 59 Nov 17 05:45 libclntsh.so -> /U01/app/oracle/product/11.2.0.2/db_1/lib/libclntsh.so.11.1
lrwxrwxrwx. 1 oracle oinstall 54 Nov 17 05:45 libclntsh.so.10.1 -> /U01/app/oracle/product/11.2.0.2/db_1/lib/libclntsh.so
-rw-r--r--. 1 oracle oinstall  0 Sep 17  2011 libclntst11.a
最后发现是静默安装的时候把ORACLE_HOME写错了。ORACLE_HOME应该为11.2.3 结果自己在使用命令
perl clone.pl ORACLE_BASE=/U01/app/oracle ORACLE_HOME=/U01/app/oracle/product/11.2.0.2/db_1  ORACLE_HOME_NAME=OraDb10g_home1
不小心给标记成了11.2.0.2这样链接库文件在relink的时候就会错误链接
修改后又继续开始克隆安装,这次的错误更奇怪了。
$ sqlplus -v
sqlplus: error while loading shared libraries: /U01/app/oracle/product/11.2.0.2/db_1/lib/libclntsh.so.11.1: file too short
可以从下面看到两个链接文件都是空的。看来还是在relink的时候什么丢了,但是安装包都预安装了,怎么就不行啊。
$ ll libcln*
lrwxrwxrwx. 1 oracle oinstall 59 Nov 17 06:09 libclntsh.so -> /U01/app/oracle/product/11.2.0.2/db_1/lib/libclntsh.so.11.1
lrwxrwxrwx. 1 oracle oinstall 54 Nov 17 06:09 libclntsh.so.10.1 -> /U01/app/oracle/product/11.2.0.2/db_1/lib/libclntsh.so
-rw-r--r--. 1 oracle oinstall  0 Nov 17 06:10 libclntsh.so.11.1
-rw-r--r--. 1 oracle oinstall  0 Sep 17  2011 libclntst11.a
这个问题纠结了好一会,甚至怀疑是不是新机器出现了什么不兼容的地方,因为是比较新的920机器,最后查看了一下操作日志,发现原来原装yum源的时候就出了问题。
比如yum install xxxx的时候,有下面的日志,我选择yes
Install       5 Package(s)
Total download size: 15 M
Installed size: 33 M
Is this ok [y/N]: y
Downloading Packages:
Error Downloading Packages:
  mpfr-2.4.1-6.el6.x86_64: failure: Packages/mpfr-2.4.1-6.el6.x86_64.rpm from base: [Errno 256] No more mirrors to try.
  cloog-ppl-0.15.7-1.2.el6.x86_64: failure: Packages/cloog-ppl-0.15.7-1.2.el6.x86_64.rpm from base: [Errno 256] No more mirrors to try.
结果最后显示都是Errno 256
最后简单配置yum源,mount /home/xxxxx  /media/xxxx -o loop就搞定了
看来操作日志也是非常重要,要不到时候出了问题都没有依据。而且步骤的检查还是要仔细,老是返工也是费时费力。
好了,数据库软件安装不是一件难事,很快搞定,现在就开始使用duplicate的方式来同步文件了。
发现11g里面的rman同步着实很全面,如果上次同步中断取消,下次重新duplicate还可以做断点续传。
再次duplicate会有下面的日志信息
sql statement: alter database mount standby database
Using previous duplicated file /U01/app/oracle/oradata/xxx/xxx_data280.dbf for datafile 187 with checkpoint SCN of 220705796796
Using previous duplicated file /U01/app/oracle/oradata/xxx/xxx_data2.277.dbf for datafile 213 with checkpoint SCN of 220705796789
然后就是漫长的等待了,不过还有一个非常重要的地方需要注意就是主库的归档一定要保留好,如果定时删除,不小心多删了的话,那么长时间的等待就白费了。
所以也是一边关注主库的磁盘空间,一边关注文件复制的进度。
早上看了下,两个几乎同时开始复制的备库,早上醒来查看一个已经完成了2T,另外一个竟然还只完成了600G,差别也着实太大了。
目前知道唯一的差别就是2T的机器主库是raid5,600G的机器主库是raid10
当时差点得出了一个错误的结论,就是raid5比较挫。性能也差。
下午的时候,有一件事情特别纠结,有一个备库已经复制完成了近90%,但是主库的归档区域已经快满了,使用的是ASM,想临时压缩一下归档都没办法。删除归档吧,那备库就白搭了,不删除吧,主库的归档已经满了,新归档也会有影响。
就在这种纠结中,最后还是硬着头皮拖了一下,幸亏当时系统负载不算太大,所以这部分归档的影响还比较小,等备库一同步完,就开始开启RFS接收归档,然后马上释放主库的空间。
整个过程也是有条不紊的在进行。总算把这个问题缓冲了下来。
等到晚上6点多的时候,发现另外一台备库的文件复制速度开始大幅度提升,查看网卡的流量情况如下。
通过这个图可以看出其实不是raid5和raid10造成的文件复制低效问题,根源还是在于网络的设置上
文件复制较快的服务器网卡流量如下:

而文件复制较慢的服务器流量情况如下,可以看到两者是相互补充的。至于为什么先开始文件复制的那台服务器就快很多,为什么不是平均这部分资源。自己也没有想明白。

一台备库搭建完成,另外一台备库速度也开始提升,心情都一下子美丽起来了。
备份重于一切,没有备库裸奔的感觉真是不踏实。对于硬件的监控也要全面注意起来,提前发现问题,提前部署方案。唉,就会少有一些无奈的悲剧。
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
消息中间件 数据采集 运维
一份运维监控的终极秘籍!监控不到位,宕机两行泪
【10月更文挑战第25天】监控指标的采集分为基础监控和业务监控。基础监控涉及CPU、内存、磁盘等硬件和网络信息,而业务监控则关注服务运行状态。常见的监控数据采集方法包括日志、JMX、REST、OpenMetrics等。Google SRE提出的四个黄金指标——错误、延迟、流量和饱和度,为监控提供了重要指导。错误监控关注系统和业务错误;延迟监控关注服务响应时间;流量监控关注系统和服务的访问量;饱和度监控关注服务利用率。这些指标有助于及时发现和定位故障。
298 1
|
5月前
|
SQL 关系型数据库 MySQL
(二十五)MySQL主从实践篇:超详细版读写分离、双主热备架构搭建教学
在上篇《主从原理篇》中,基本上把主从复制原理、主从架构模式、数据同步方式、复制技术优化.....等各类细枝末节讲清楚了,本章则准备真正对聊到的几种主从模式落地实践,但实践的内容通常比较枯燥乏味,因为就是调整各种配置、设置各种参数等步骤。
741 3
|
5月前
|
安全 API 数据库
OceanBase数据库clog日志,删前请三思!一不小心可能引发数据灾难,快来了解正确的日志管理之道!
【8月更文挑战第7天】ModelScope(魔搭)作为开放的模型即服务平台,提供丰富的预训练模型。访问令牌在此类平台中至关重要,用于验证用户身份并授权访问特定模型或服务。本文介绍访问令牌的概念、获取方法及使用示例,强调安全性与有效期内的使用,并简述刷新令牌机制。掌握这些知识可帮助用户安全高效地利用ModelScope的资源。
74 0
|
运维 安全 固态存储
不需要的binlog如何手动干掉?放心,这不是删库更不用跑路。
不需要的binlog如何手动干掉?放心,这不是删库更不用跑路。
284 0
|
安全 NoSQL 前端开发
老板说我最近飘了,都敢用 MySQL 实现分布式锁了
以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域和SystemB域这几个JAVA应用,可能同时修改同一份库存数据。如果不做协调的话,就会有脏数据出现。对于跨JAVA进程的线程协调,可以借助外部环境,例如DB或者Redis。 下文介绍一下如何使用DB来实现分布式锁。
|
存储 消息中间件 缓存
DDIA 读书分享 第五章:Replication,主从
DDIA 读书分享 第五章:Replication,主从
162 0
DDIA 读书分享 第五章:Replication,主从
|
数据库 数据库管理
又搞飞机了,号称有五重备份的GitLab居然也歇了
又搞飞机了,号称有五重备份的GitLab居然也歇了
121 0
又搞飞机了,号称有五重备份的GitLab居然也歇了
|
SQL 关系型数据库 MySQL
删库不跑路:我含泪写下了 MySQL 数据恢复大法…(3)
删库不跑路:我含泪写下了 MySQL 数据恢复大法…(3)
225 0
|
SQL 关系型数据库 MySQL
删库不跑路:我含泪写下了 MySQL 数据恢复大法…(2)
删库不跑路:我含泪写下了 MySQL 数据恢复大法…(2)
138 0
|
关系型数据库 MySQL 数据库
删库不跑路:我含泪写下了 MySQL 数据恢复大法…(1)
删库不跑路:我含泪写下了 MySQL 数据恢复大法…(1)
120 0