作者介绍
杨建荣,DBAplus社群联合发起人,现任竞技世界资深数据库专家,Oracle ACE、YEP成员,超7年数据库开发和运维经验,擅长电信数据业务、数据库迁移和性能调优。持Oracle 10G OCP、OCM、MySQL OCP认证,《Oracle DBA工作笔记》作者。
脚本一:dbm_lite
脚本二:mysql_mgr_test
为方便大家日常查阅和下载,DBAplus社群官网(dbaplus.cn)现已开通“下载”页面渠道,除了本次开放的脚本以外,还有过往专家发布的实用工具、历届干货PPT可任性下载噢~
dbm_lite:让DB维护如有神助
自从注册了Github,在上面花的功夫很少,很早之前开源了一个MySQL Group Replication快速测试的小脚本。惭愧,之后就鲜有更新了。
而我自己其实很早就写了一套脚本,起名叫dbm_lite,其实就是想让DB的维护工作更简单快捷一些,在很多场景中没有图形界面,如果能够高速快捷地发现问题、分析问题,有一套好的工具有如神助。
以前我也很依赖plsqldev、toad这样的工具,但是很多问题场景中,网络限制很多,图形工具就有了限制,跨网络拷贝个脚本其实还能够理解,然而我发现接触的很多环境都有层层的网络限制,于是dbm_lite里面的脚本就这样一点一点写了出来。但是限于个人使用,也就没有太在意里面的写法等,直到最近,我感觉到脚本更新的频率也不高了,而且因为工作的关系,我在这个上面需要花费的精力也有限了,于是我想把它当做一个礼物送给大家,如果还有一点用处的话。
在此处刻意用“开放”这个词,而不是开源,是因为我觉得开源里面有很多的技巧和方式方法,不是简单把东西开放出来就行了,所以我需要摆正一个态度,目前来看,我所做的只是“开放”出来,能不能做好还得依靠大家的支持和努力了。
我这个项目可能是最奇葩的一个项目了,没有任何的内容,就一个空目录dbm_lite,在前几天写完文章准备开放出来,而且没有留下Github地址的情况下,看到竟然已经有9个星了,所以感觉大家对此的态度是很认真的,我不认真就说不过去了。
而且很多朋友在后台留言,问我地址、如何使用等,今天就简单说一下。
这个工具主要实现了下面几个方面的功能:
数据库基本管理
数据库优化工具
数据迁移
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
现在购票有优惠!
扫码或点击链接极速抢票吧~
如果字段的最大可能长度超过255字节,那么长度值可能…
只能说作者太用心了,优秀
感谢详解
一般干个7-8年(即30岁左右),能做到年入40w-50w;有…
230721