1、实战排错线上MYSQL|Mariadb故障
1)学习Linux技术,学习的重点不是Linux系统安装、命令操作、配置IP、用户权限、目录功能,学习Linux技术重点是基于Linux系统排错、优化各种应用程序、软件服务,排错和优化是考验运维能力的标准。
2)Mariadb是一款开源、免费的关系型数据库系统,是由MYSQL创始人独立出来之后,开发的数据库系统,完全兼容MYSQL数据库的功能、特性、参数、指令、配置文件等,从CentOS7开始官方源集成了Mariadb数据库。
3)基于线上云服务器,通过YUM二进制方式构建了一套Mariadb数据库平台,Mariadb数据库服务不能正常运行,无法启动,启动时报错信息如下所示:
Job for mariadb.service failed because the control process exited with error code. See “systemctl status mariadb.service” and “journalctl -xe” for details.
4)根据如上错误的提示,表示Mariadb.service任务失败,因为控制进程退出,而且伴随错误的代码,请使用如下两个命令查看其详细的信息:
systemctl status mariadb.service
在这里插入图片描述
journalctl -xe
在这里插入图片描述
5)根据如上错误日志的提示,表示启动Mariadb数据库服务时,服务所在的进程用户会向/var/log/mariadb/日志目录写入日志内容,而该日志目录不存在,所以数据库服务不能启动。
解决方法:
检测数据库日志目录:/var/log/mariadb/是否存在或者权限是否正常;
ll /var/log/mariadb/
if [ -d /var/log/mariadb ];then echo Exist. ;fi
 通过mkdir命令创建日志目录,并且授权用户访问;
mkdir -p /var/log/mariadb/
chown -R mysql /var/log/mariadb/
ll /var/log/|grep mariadb
在这里插入图片描述
6)根据如上的解决方法,Mariadb数据库服务还是无法启动,可以继续查看其报错的日志信息:
在这里插入图片描述
7)根据如上错误的提示,表示启动Mariadb数据库服务时,会读取数据库:/var/lib/mysql/的基础数据、用户、权限信息,而该数据目录没有初始化,确保在初始化之前数据目录是空的,防止数据丢失。(MYSQL|Mariadb数据库初始化目的:数据库初始化主要是为了创建基础数据、表结构、用户、密码权限等)。
解决方法:
通过手工方式初始化Mariadb数据目录,命令如下:
mysql_install_db --user=mysql --datadir=/var/lib/mysql/ --force
ll /var/lib/mysql/
chown -R mysql.mysql /var/lib/mysql/
在这里插入图片描述
8)当使用以上所有解决方法,均无法解决Mariadb数据库无法启动的问题时,此时借助Mariadb服务的主程序日志内容来定位问题。
tail -fn 30 /var/log/mariadb/mariadb.log(背锅侠专用)
tail -n 30 /var/log/mariadb/mariadb.log
在这里插入图片描述
9)根据如上错误的提示,表示启动Mariadb数据库服务时,会将进程PID号写入到进程文件:/var/run/mariadb/mariadb.pid文件中,而不能创建和写入该文件。
解决方法:
创建进程文件所在目录和文件,命令如下:
mkdir -p /var/run/mariadb/
chown -R mysql /var/run/mariadb/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、实战Awk、Sed、Grep分析线上Nginx日志
1)根据如上的Mariadb数据库故障排错,发现日志文件、内容对于运维人员、开发人员、DBA来讲,非常重要的,因为通过日志内容能够第一时间发现问题,从而解决问题。
2)那么日志内容除了用于排错解决故障之外,还可以用来做什么呢?能够给企业带来哪些好处呢?日志内容除了排错之外,在企业中主要是用于分析、评估,通过对日志内容进行分析、统计,能够评估服务器访问量、资源分配情况、用户访问行为等。
3)基于AWK、SED、GREP三剑客分析、统计线上Nginx日志实战一,统计当天Nginx日志总的访问量(请求数),操作指令如下:
cat access_20191125.log|wc -l
awk ‘{print $0}’ access_20191125.log|wc -l
wc -l access_20191125.log|cut -d" " -f1
在这里插入图片描述
4)基于AWK、SED、GREP三剑客分析、统计线上Nginx日志实战二,统计当天09:00-12:00时段Nginx日志总的访问量(请求数),操作指令如下:
grep “2019:09:00” access_20191125.log
grep “2019:12:00” access_20191125.log
sed -n “/2019:09:00/,/2019:12:00/p” access_20191125.log|wc -l
awk ‘/2019:09:00/,/2019:12:00/ {print $0}’ access_20191125.log|wc -l
在这里插入图片描述
5)基于AWK、SED、GREP三剑客分析、统计线上Nginx日志实战三,统计当天09:00-12:00时段Nginx日志总的访问量(请求数),显示用户的IP地址,同时将访问量排前20名IP列表打印出来,并且再将访问请求超过10000次的IP加入到黑名单,操作指令如下:
打印Nginx访问日志IP地址
sed -n “/2019:09:00/,/2019:12:00/p” access_20191125.log|cut -d" " -f1
sed -n “/2019:09:00/,/2019:12:00/p” access_20191125.log|awk ‘{print $1}’
sed -n “/2019:09:00/,/2019:12:00/p” access_20191125.log|grep -oE “([0-9]{1,3}.){3}[0-9]{1,3}”
在这里插入图片描述
对IP进行排序、并且统计排前20名的IP列表;
sed -n “/2019:09:00/,/2019:12:00/p” access_20191125.log|grep -oE “([0-9]{1,3}.){3}[0-9]{1,3}”|sort -n|uniq -c|sort -nr|head -20
在这里插入图片描述
将访问请求超过10000次的IP地址,加入Linux黑名单(Iptables|Firewalld);
for ip in $(sed -n “/2019:09:00/,/2019:12:00/p” access_20191125.log|grep -oE “([0-9]{1,3}.){3}[0-9]{1,3}”|sort -n|uniq -c|sort -nr|head -20|awk ‘{if($1>=10000) print $2}’);do iptables -t filter -A INPUT -s $ip/32 -m state --state NEW -p tcp --dport 80 -j DROP ;done
在这里插入图片描述
在这里插入图片描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐