原因
线上应用服务器为阿里云服务器,被攻击,注入了挖矿程序,cpu占用率百分百;
迁移步骤
本次迁移仅记录重要步骤,涉及公司的内部数据库名,服务名称,都使用不敏感字等代替
1.准备
1.提前通知运维人员,发布停机维护公告,时间为第二天凌晨0点到6点
2.将新服务器提前装好,mysql,redis,jdk,等环境
3.提前打包好应用程序, 将数据库链接,redis链接,以及相关推送服务端口修改为新服务器地址
2.停机
1.在凌晨0点之后,依次将所有的的应用服务停机
使用脚本stop.sh 停止相关服务
1 | sh stopSystem.sh |
stopSystem.sh 脚本如下
1 | echo "关闭test1进程" |
mysqldump -uroot -proot databasetest > databasetest.sql
1 | 2.将备份的databasetest数据库还原到新的数据库 |
mysql 数据迁移出现问题
1.警告,这是在mysql5.6 之后处于安全考虑,在命令行界面上使用密码可以是不安全的
1 | mysqldump -uroot -proot databasetest > databasetest.sql |
解决办法利用mysql_config_editor 设置加密模式,虽然仍然有警告但是备份成功
1 | root@40fd165a4bc5:/# mysql_config_editor set --login-path=local --host=localhost --user=root --password |
2.还原没有数据库
1 | root@da02d2ffff9b:/var/log/mysql# mysql -uroot -proot databasetest < databasetest.sql |
解决办法.在新的mysql中提前建databasetest数据库,建好库之后在进行导入
4.应用系统迁移
1.应用系统,已经打包好,使用脚本启动即可
startSystem.sh
脚本如下
1 |
|
应用系统 迁移出现问题
1.端口被占用
解决办法.经查找,是8081健康检测端口被占用,咨询运维组,可更换端口18081使用
5. nginx转发配置
由于原先域名都是指向被挖矿的服务器,因此需要在被挖矿的服务器上安装nginx 将请求转发到新服务器
一些核心的配置如下,
1 | upstream appapi { |
6.迁移完成,验证服务
1.依次验证相关服务
验证服务出现问题
1.发现xxl-job 调用中心,注册不上应用服务器节点
解决办法:开放新的应用服务器上的xxl-job占用的端口,重启应用系统,将xxl-job注册节点修改为自动,等待两分钟,注册成功,定时任务执行成功
7. 后续重装原被挖矿的服务器
1.系统在新服务器稳定运行一天之后,将原先被挖矿的服务器重装,将相应的数据,应用服务等迁移回被重装的的服务器中
一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;