有了这套脚本,DB维护 & MGR部署事半功倍!

杨建荣 2017-09-20 09:30:15

作者介绍

杨建荣,DBAplus社群联合发起人,现任竞技世界资深数据库专家,Oracle ACE、YEP成员,超7年数据库开发和运维经验,擅长电信数据业务、数据库迁移和性能调优。持Oracle 10G OCP、OCM、MySQL OCP认证,《Oracle DBA工作笔记》作者

 
 
 
 
 
 
话不多说,先上地址
 

 

为方便大家日常查阅和下载,DBAplus社群官网(dbaplus.cn)现已开通“下载”页面渠道,除了本次开放的脚本以外,还有过往专家发布的实用工具、历届干货PPT可任性下载噢~

 

 

 
 
 
 
 

dbm_lite:让DB维护如有神助

 

 

自从注册了Github,在上面花的功夫很少,很早之前开源了一个MySQL Group Replication快速测试的小脚本。惭愧,之后就鲜有更新了。

 

而我自己其实很早就写了一套脚本,起名叫dbm_lite,其实就是想让DB的维护工作更简单快捷一些,在很多场景中没有图形界面,如果能够高速快捷地发现问题、分析问题,有一套好的工具有如神助。

 

以前我也很依赖plsqldev、toad这样的工具,但是很多问题场景中,网络限制很多,图形工具就有了限制,跨网络拷贝个脚本其实还能够理解,然而我发现接触的很多环境都有层层的网络限制,于是dbm_lite里面的脚本就这样一点一点写了出来。但是限于个人使用,也就没有太在意里面的写法等,直到最近,我感觉到脚本更新的频率也不高了,而且因为工作的关系,我在这个上面需要花费的精力也有限了,于是我想把它当做一个礼物送给大家,如果还有一点用处的话。

 

在此处刻意用“开放”这个词,而不是开源,是因为我觉得开源里面有很多的技巧和方式方法,不是简单把东西开放出来就行了,所以我需要摆正一个态度,目前来看,我所做的只是“开放”出来,能不能做好还得依靠大家的支持和努力了。

 

 


我这个项目可能是最奇葩的一个项目了,没有任何的内容,就一个空目录dbm_lite,在前几天写完文章准备开放出来,而且没有留下Github地址的情况下,看到竟然已经有9个星了,所以感觉大家对此的态度是很认真的,我不认真就说不过去了。

   

 

而且很多朋友在后台留言,问我地址、如何使用等,今天就简单说一下。

 


这个工具主要实现了下面几个方面的功能:

 

  1. 数据库基本管理

  2. 数据库优化工具

  3. 数据迁移

  4. SQL优化

 

我先整理了第一波脚本,先开放出来10多个脚本,主要是数据库基本管理方面的,大家可以先试用下。看看哪些地方还需要继续补充改进。

  


 

1、目前支持的数据库有哪些?

 

目前只有Oracle,而且只是在单实例数据库上用得较多,RAC环境上差别不是很大,但是测试还不够充分。

 

在10g、11g、12c下都使用过,尤其以11g居多。目前虽然支持Oracle,不排除以后会继续写写MySQL方向的。

 

2、目前支持的操作系统平台

 

这个工具就是大量的Shell脚本中嵌入SQL的方式取得数据信息,目前使用的平台有Linux、Solaris、AIX等,主要在Linux下,抱歉没有在Windows下测试,主要是缺少这样的生产环境。

 

3、现在看只有10多个脚本,是不是有点太少了?

 

这个希望见谅,见谅的意思是我还会持续加入更多的脚本,但是脚本我都要一个一个审核,力保没有加入敏感信息,保证得是纯技术信息,还有一个就是脚本的使用细则,其实都在我脑子里,我得把它体现成文字。

 

 
 
 
 
 
 

mysql_mgr_test:快速部署MGR小工具

 

 

之前写了一版简单的Shell脚本,能够实现简单的MySQL Group Replication环境的测试快速部署,大概就1分多钟的时间就快速创建多个实例节点,如果要学习尝鲜MGR的话还是推荐试试的。

 

自己也手工测试过几次,还能用。说不上高大上,但是能够基本满足需求,最近又抽空完善了一下,在一个全新的环境中部署了一把,还算比较顺利。

 

Github上的截图如下:

 

 

如果要实现快速部署MGR,下面是一些基本的步骤。

 

1.首先需要下载MySQL软件,配置/etc/hosts文件,下载二进制包都不需要什么安装了,直接解压放入指定的目录即可,比如/usr/local/mysql。目前最新的版本是官方的5.7.19。

 

假设 10.127.1.18是服务器的IP,那么在/etc/hosts里面就尤其需要注意,把它务必配置好。

 

比如下面的/etc/hosts的文件内容:

 

 
 
 
 
 

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.127.1.18  mysqltestdb

 
 
 
 
 

 

2. 有一个统一的配置文件 auto.cnf ,在这个配置文件里配置MySQL软件的路径,数据文件的路径即可。

 

这些没有固定的内容,都是根据你的需求和具体的配置来定。比如auto.cnf的内容如下:

 

 
 
 
 
 

export base_dir=/usr/local/mysql

export base_data_dir=/home/data

 
 
 
 
 

 

3. 配置节点列表,这是MGR部署关键的一个配置文件了。

 

每个节点的配置分为4部分:节点的端口,节点的别名,节点的内部端口,节点的角色。

 

节点的端口是数据库提供数据访问的端口,节点的别名,因为是在同一台服务器上模拟测试,所以需要标识不同节点的名字。

 

节点的内部端口,这是MGR在各个节点之间的通信端口,最后是节点的角色,如果为Y就是提供读写权限,负责,只有读权限。

 

如果是单主模式,最后的标识位第一个是Y,其它都为N。

 
 
 
 
 

24801 s1  24901 Y

24802 s2  24902 N 

24803 s3  24903 N 

24804 s4  24904 N

24805 s5  24905 N

 
 
 
 
 

 

如果是多主模式,则节点的角色都要标记为Y。

 
 
 
 
 

24801 s1  24901 Y

24802 s2  24902 Y 

24803 s3  24903 Y 

24804 s4  24904 Y

24805 s5  24905 Y 

 
 
 
 

 

4. 运行脚本init.sh 不需要输入任何的参数。

 

这是最耗时的步骤,也是最核心的脚本。

 

5. 使用check_node.sh 脚本可以检查各个节点的状态,输入参数为节点别名,比如s1

 

  • 使用start_node.sh 脚本可以启动指定的节点,,输入参数为节点别名,比如s1

  • 使用reset_node.sh 脚本可以在节点需要重新加入集群的时候使用,输入参数为节点别名,比如s1

  • 使用stop_node.sh  脚本可以停止指定的节点,输入参数为节点别名,比如s1

  • 使用conn_node.sh  脚本可以连接到指定的节点,输入参数为节点别名,比如s1   

 

比如我要检查节点s2的状态,是否为oline,是否应用数据正常,可以使用check_node.sh来查看。

 

  • sh check_node.sh s2

 

6. 感谢使用,有问题反馈,可以提交issue或者邮件给我jeanrock@126.com

 

-AND-

最后安利一发全球敏捷运维峰会广州站

11.26日我将现身广州

继续带来《MySQL优化实战》的深度课程

欢迎大家捧场学习

https://www.bagevent.com/event/624705
现在购票有优惠!

扫码或点击链接极速抢票吧~

 

活动预告