从一个运维人员的角度看微盟的这次删库跑路的节奏

这二天,微盟运维人员删库的事件刷屏了,造成的影响特别的大。


从一个运维人员的角度看微盟的这次删库跑路的节奏


回顾整个事件,本人从15年的运维人员的角度来分析一下这个事件:

1、 为什么一个运维人员会有这么大破坏力,让整个公司业务都瘫痪了?

很多人都会说权限没控制好,不应该给单独一个人这么大的操作权限,同时一个人不应该有这么多业务和数据库的登陆和操作权限,没有操作分级和审核机制等等。

说实话,一般的公司,很难请几个不同角色的运维人员,财力与物力是不可能实现的(除了那几个大厂外),很多公司都是二三个运维人员,交叉管理不同业务授权,做不到职责明确分类。而且大部分职业上的习惯,会拥有最大的root权限(就算很多大互联网公司出来的运维也有这样的习惯)。

但是,绝大多数的中小型公司来说,是不会遇到本次这种极端状况的,真的遇到这样的事,真的是看命好不好,看运维人员的心情状态了,自求多福吧。

2、 为什么恢复时间会这么久,而且至今无法完全恢复?

极有可能是直接做了rm -rf或者fdisk这样的基本不可逆转文件删除操作,而且很可能是主备一起干掉了,同时可能平时没有做好备份机制,或者可能是把备份也一起删除了(很多公司备份基本上也是在运维人员手里的)。

3、那么,真的碰到这样的事了,有没有好的办法解决呢?

1)、使用云产品,而且要使用大厂的云产品,这里不是说你用云服务器就可以了,你需要用他们的云数据库产品,而且要买一系列的保护盾。

2)、权限控制,如果真的没法做到最小授权,建议上个主机安全管控软件,或者堡垒机,多次分层级的进行审核,角色分级操作,就是下级需要操作的时候,一定要通过主管领导的审核(特别是类似rm -rf 、fdisk、drop等等这样的高危命令的时候)。主管领导要把临时开放操作权限掌握在自己手里,不要怕麻烦,用一次开一次,再关一次。

3)、备份,一定要建立好备份机制:全量备份,增量备份,延迟备份,全量备份要多机房,异地备份,因为数据是核心资产,应用全删了还可以重新部署,数据没了,公司就没了,就是这么狠。就算是用了云数据库,备份文件也下载一份下来,自己在不同机房,不同云,不同地方多存几份,千万不要怕花钱。同时备份文件要多份分多人不同地方保管。

4)、人的问题,这个就仁者见仁,智者见智了,再完美的技术,也防不住人的,这个我认为与一个公司的文化氛围与制度、领导的魅力等是息息相关的。

但凡一个人,都有自己的道德底线,在没有到一定程度的时候,都会克制自己(精神病除外)。公司平时对下面的员工好一点,俗话说,好聚好散,就算你对员工不满意,要裁员也好,要开除也好,尽量的让对方少一些怨气,多一份尊重。另外,尽量做些普法宣传,每人都有点敬畏心理,可能效果会好一些。


说了这么多的费话。 最后分享一个懒人的安装mysql的操作代码(直接复制改成可执行的.sh 文件执行就可以):

#!/bin/bash

echo "开始时间:`date +%Y-%m-%d\\ %T`" >> /home/mysqlsetup/logtime

echo "安装依懒包!"

sleep 3

echo "创建用户与组"

groupadd mysql

useradd -r -g mysql -s /bin/false mysql

echo "开始编译安装mysql"

cd /home

cp /media/software/mysql-5.5.32.tar.gz ./

tar zxvf mysql-5.5.32.tar.gz

mkdir mysql

mkdir /data/mysql

mkdir /data/mysql/data/

mkdir /data/mysql/log

mkdir /data/mysql/tmp

mkdir /data/mysql/log/binlog

mkdir /data/mysql/log/relaylog

cd /home/mysql-5.5.32

cmake \\

-DSYSCONFDIR=/etc \\

-DCMAKE_INSTALL_PREFIX=/home/mysql/ \\

-DMYSQL_DATADIR=/data/mysql/data/ \\

-DMYSQL_UNIX_ADDR=/data/mysql/log/mysql13306.sock \\

-DEXTRA_CHARSETS=all \\

-DDEFAULT_CHARSET=utf8 \\

-DDEFAULT_COLLATION=utf8_general_ci \\

-DWITH_MYISAM_STORAGE_ENGINE=1 \\

-DWITH_INNOBASE_STORAGE_ENGINE=1 \\

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \\

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \\

-DWITH_MEMORY_STORAGE_ENGINE=1 \\

-DWITH_READLINE=1 \\

-DENABLED_LOCAL_INFILE=1 \\

-DMYSQL_USER=mysql \\

-DMYSQL_TCP_PORT=13306


make

make install

echo "编译完成!"

sleep 5

echo "修改权限!"

chown -R mysql.mysql /home/mysql

chown -R mysql.mysql /data/mysql

cd /home/mysql

cp support-files/mysql.server /etc/init.d/mysql #放在启动项里

chmod 755 /etc/init.d/mysql

sleep 3

echo "初始化mysql"

scripts/mysql_install_db --datadir=/data/mysql/data/ --user=mysql #初始化

rm -rf /etc/my.cnf

cp /home/mysqlsetup/my.cnf /etc/my.cnf #复制标准mysql配置文件,这个需要提前写好哦

echo "启动mysql"

/etc/init.d/mysql start

echo "修改mysql环境变量"

cat /home/mysqlsetup/file.txt >>/etc/profile

source /etc/profile

sleep 5

echo "开始设置密码!"

mysqladmin -u root password xxxxxxxxxxxx #记得安装使用完后要修改与收回最高权限

echo "开始设置iptables"

sed -i '11i\\-A INPUT -m state --state NEW -m tcp -p tcp --dport 13306 -j ACCEPT' /etc/sysconfig/iptables

service iptables restart

sleep 3

echo "添加到启动项!"

chkconfig --level 235 mysql on

echo "删除旧文件!"

rm -rf /home/mysql-5*

echo "mysql安装完成,并启动,请检查是否可用!"

echo "结束时间:`date +%Y-%m-%d\\ %T`" >> /home/mysqlsetup/logtime

########下次有机会写一个自动备份&&主从配置自动化脚本。


分享到:


相關文章: