专栏首页杨建荣的学习笔记最近的几个技术问题总结和答疑 (r8笔记第19天)

最近的几个技术问题总结和答疑 (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),作者:杨建荣

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL关于数据字典的一个疑问

    今天看着MySQL的数据字典,突然想到一个问题:为什么MySQL数据字典 information_schema中的表名是大写,而performance_sche...

    jeanron100
  • MySQL 5.6, 5.7并行复制测试(r12笔记第9天)

    对于主从延迟,其实一直以来就是一个颇有争议的话题,在MySQL阵营中,如果容忍一定的延迟的场景,通过主从来达到读写分离是个很不错的方案,但是延迟率到底有多...

    jeanron100
  • 不能轻视的mysql重启过程 (r7笔记第55天)

    数据库的重启看似是一件非常简单,没有技术含量的活,这是我以前说的话。而这句话简直是戳中了我的痛点。这种活真是太有技术含量了,高深到让人需要注意太多的东西,需要做...

    jeanron100
  • reset master、reset slave与reset slave all

    reset master、reset slave与reset slave all 今天测一测这几个参数,首先说下测试环境:

    AsiaYe
  • 快速学习-Linux安装MySQL

    yum install mysql mysql-server mysql-devel

    cwl_java
  • Linux(CentOS7)使用 RPM 安装 mysql 8.0.11的教程

    【官网地址:】 https://downloads.mysql.com/archives/community/ https://downloads.mysq...

    砸漏
  • Mysql数据库的详细安装步骤

    一、下载 1. 进入mysql官网,登陆自己的Oracle账号(没有账号的自己注册一个),下载Mysql,下载地址:http://dev.mysql.com/d...

    企鹅号小编
  • centos下完全卸载mysql

    1、yum remove mysql mysql-server mysql-libs compat-mysql51

    似水的流年
  • ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

    使用如下方法即可解决,本人已验证可行。 #1.停止mysql数据库 /etc/init.d/mysqld stop #2.执行如下命令 mysqld_safe...

    用户1148881
  • centos下完全卸载mysql

    yum方式安装的mysql 1、yum remove mysql mysql-server mysql-libs compat-mysql51 2...

    似水的流年

扫码关注云+社区

领取腾讯云代金券