最近的几个技术问题总结和答疑 (r8笔记第19天)

笔记写了不少,有时候有的朋友问我几个关键字,我就会从脑海里进行搜索,凡是写过的,搜索一下总能找到,帮助了别人,提高了自己,何乐而不为。 但是笔记写了很多,如果不加以改进,那么进步还是很小的,尤其比较怕的就是如果写出了问题的解决方案,但是这个解决方案是非主流的方式,可能有一 些潜在风险的,如果误导了读者,那就是罪过了。所以有时候想集中纠正一下。而且有时候看看以前写的文章,有时候会发现有一些分析思路可能在经历了大批量的 故障处理之后,思路可能会更开阔,这些其实也可以改进改进。 写笔记能坚持到现在不容易,让我的笔记更有意义,帮助到别人,别误导人,这是我的初衷。 首先我准备先来做一些笔记的改进。 运维平台的建设思考-元数据管理(四) 这篇有些朋友说很实用,不过这些定制脚本的优点还在于可以改进完善,所以在这之后继续改进,发现了几个小问题。一并列出来。 对于磁盘空间的使用情况的分析 原来的脚本内容为: df -hT|egrep -v 'Filesystem|/dev/shm'|while read line; do echo -e "`echo $line|awk '{print $7}'`:`echo $line|awk '{print $5}'`:`echo $line|awk '{print $6}'`"; done > /tmp/tmpdisk cat /tmp/tmpdisk|while read line do if [ `echo $line|awk -F':' '{print $3}'|sed 's/%//g'` -lt 85 ] ; then tmpline=`echo $line|sed 's/\///g'` sed -i "/$tmpline/d" /tmp/tmpdisk fi done if [ -s /tmp/tmpdisk ] ; then DISK_STAT=`cat /tmp/tmpdisk|sed -e ":a;N;s/\n/,/;ta"` else DISK_STAT='OK' fi rm -f /tmp/tmpdisk 但是在大批量的检测中,发现还是有一些问题。对于一些分区,如果名字长一些,会串行,所以可以使用df -hTP来显示到一行中 在显示结果中,如果某个分区名过长,还有特殊字符,会有一些处理上的不足,比如下面这个是原先脚本过滤后的结果。 /opt:109G:86%,/home/oracle/backup_stage/192.168.1.24_extradb:1.1T:71% 按照预期,应该只显示/opt:109G 即可。所以这个部分做了改进。 改进之后的脚本内容为: function check_df { df -hTP|egrep -v 'Filesystem|/dev/shm'|while read line; do echo -e "`echo $line|awk '{print $7}'`:`echo $line|awk '{print $5}'`:`echo $line|awk '{print $6}'`"; done > /tmp/tmpdisk cat /tmp/tmpdisk|while read line do if [ `echo $line|awk -F':' '{print $3}'|sed 's/%//g'` -gt 85 ] ; then tmp_var=$line tmpline=$line echo $tmpline fi done |sed -e ":a;N;s/\n/,/;ta" } DISK_STAT=`check_df` 在原来的基础上,增加了数据库版本的统计,这个思路不能按照ORACLE_HOME的来算,我的一个切入点就是以sqlplus -v的结果为准,检查配置的变量的方式还是有些不妥当。 得到oracle版本的思路是检查/etc/oratab中,得到ORACLE_HOME的值,然后调用sqlplus -v来得到最终的版本。 export ORACLE_HOME=`cat /etc/oratab | tail -1 | awk -F: '{print $2}'` ORA_VER=`$ORACLE_HOME/bin/sqlplus -v|awk '{print $3}'` 然后再说说另外一篇笔记。 MySQL迁移文件的小问题 对于文章中的从库文件迁移,当时是使用reset slave的方式解决的,但是也有一些朋友做了更多的建议,启荣兄给了我一个解决的方向,对于这类的文件迁移,其实大可不必使用reset slave,这种方式还是有些太"暴力“,影响比较大。完全可以很优雅的完成。改改配置,重启一下即可。 停库之后修改my.cnf,修改里面相关的路径设置。 # /etc/init.d/mysql stop Shutting down MySQL (Percona Server)... SUCCESS! vi /etc/my.cnf 然后迁移文件,操作系统命令级即可搞定。 # mv mysql_test/* mysql_3306 启动数据库,当然这个时候肯定会报错。 # /etc/init.d/mysql start Starting MySQL (Percona Server)..... ERROR! The server quit without updating PID file (/U01/app/mysql_3306/mysql.pid). 主要原因是这个时候校验的是binlog的index文件,里面的路径对应不上,所以在日志里会提示找不到。修改一下即可。 # vi bin-index.index /U01/app/mysql_3306/mysql-bin.000001 /U01/app/mysql_3306/mysql-bin.000002 /U01/app/mysql_3306/mysql-bin.000003 /U01/app/mysql_3306/mysql-bin.000004 /U01/app/mysql_3306/mysql-bin.000005 /U01/app/mysql_3306/mysql-bin.000006 /U01/app/mysql_3306/mysql-bin.000007 /U01/app/mysql_3306/mysql-bin.000008 /U01/app/mysql_3306/mysql-bin.000009 修改之后再次启动就没有问题了。 # /etc/init.d/mysql start Starting MySQL (Percona Server)... SUCCESS! 这个时候启动slave还是会报错的 > start slave; ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository 而原因就在于relay-index.index和relay-log里面的文件路径对应不上。 错误日志大体是下面的样子: 2016-02-24 14:59:18 3962 [Note] Server socket created on IP: '::'. 2016-02-24 14:59:18 3962 [ERROR] /usr/sbin/mysqld: File '/U01/app/mysql_test/mysql-relay.000006' not found (Errcode: 2 - No such file or directory) 2016-02-24 14:59:18 3962 [ERROR] Failed to open log (file '/U01/app/mysql_test/mysql-relay.000006', errno 2) 2016-02-24 14:59:18 3962 [ERROR] Could not open log file 2016-02-24 14:59:18 3962 [ERROR] /usr/sbin/mysqld: File '/U01/app/mysql_test/mysql-relay.000005' not found (Errcode: 2 - No such file or directory) 2016-02-24 14:59:18 3962 [ERROR] Failed to open log (file '/U01/app/mysql_test/mysql-relay.000005', errno 2) 2016-02-24 14:59:18 3962 [ERROR] Could not open log file 2016-02-24 14:59:18 3962 [ERROR] /usr/sbin/mysqld: File '/U01/app/mysql_test/mysql-relay.000006' not found (Errcode: 2 - No such file or directory) 2016-02-24 14:59:18 3962 [ERROR] Failed to open log (file '/U01/app/mysql_test/mysql-relay.000006', errno 2) 2016-02-24 14:59:18 3962 [ERROR] Failed to open the relay log '/U01/app/mysql_test/mysql-relay.000006' (relay_log_pos 2599866). 当然可以手工修改,但是实际上是没有起作用的 # vi relay-index.index /U01/app/mysql_test/mysql-relay.000005 /U01/app/mysql_test/mysql-relay.000006 /U01/app/mysql_3306/mysql-relay.000007 > start slave; ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository mob_vesta_jingmao [(none)] [15:00:47]> 需要重启才可以。所以由此可以得出,需要同时修改binlog和relay的设置,一次启动就可以搞定了。 修改完成之后,一次重启即可搞定。 # /etc/init.d/mysql start Starting MySQL (Percona Server)... SUCCESS! > start slave; Query OK, 0 rows affected, 1 warning (0.00 sec)

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2016-02-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏NetCore

AppFuse项目笔记(1)

AppFuse项目笔记(1) 一、Appfuse简介 Appfuse是Matt Raible 开发的一个指导性的入门级J2EE框架,它对如何集成流行的Sprin...

3305
来自专栏后端技术探索

PHP非阻塞模式

让PHP不再阻塞当PHP作为后端处理需要完成一些长时间处理,为了快速响应页面请求,不作结果返回判断的情况下,可以有如下措施:

1641
来自专栏FreeBuf

如何从内存提取LastPass中的账号密码

简介 首先必须要说,这并不是LastPass的exp或者漏洞,这仅仅是通过取证方法提取仍旧保留在内存中数据的方法。之前我阅读《内存取证的艺术》(The Art ...

2748
来自专栏jeremy的技术点滴

netty3与netty4的区别

1.4K4
来自专栏猿天地

Netty-整合Protobuf高性能数据传输

前言 本篇文章是Netty专题的第四篇,前面三篇文章如下: 高性能NIO框架Netty入门篇 高性能NIO框架Netty-对象传输 高性能NIO框架Netty-...

32411
来自专栏乐百川的学习频道

Spring学习笔记 Spring Roo 简介

一直以来,Java/Spring开发被认为是笨重的代表,无法快速生成项目原型和骨架。所以,Spring推出了Spring Roo这个项目,帮助我们快速生成项目原...

2907
来自专栏菩提树下的杨过

如何让jboss eap 6.2+ 的多个war应用共享 jar 包?

weblogic有一个很贴心的功能,允许把多个war应用共同依赖的jar包,打包一个单独的war,以libary方式部署,然后各应用在weblogic.xml里...

4177
来自专栏程序员宝库

Spring MVC工作原理

Dispatcher Servlet分发器 Handler Mapping 处理器映射 Controller 控制器 ModelAndView 模型和视图对象 ...

3658
来自专栏小怪聊职场

Java|Spring+SpringMVC+MyBatis框架科普

2725
来自专栏SpringBoot 核心技术

第四十三章: 基于SpringBoot & RabbitMQ完成TopicExchange分布式消息消费

39315

扫码关注云+社区

领取腾讯云代金券