服务器 - 从一台服务器切换至另一台服务器(损失数十条访客记录)

服务器 - 从一台服务器切换至另一台服务器(损失数十条PV记录为代价)

看着四年的服务器正式到期,没什么轰轰烈烈的告别,就像目送老朋友转身走远,只默默记下:哦,原来它陪了我这么久啊。

前言

一台陪伴了我4年的服务器昨天晚上到期了,数据和服务迁移到新服务器上有两点想尽可能保证的:

  1. 服务不中断
  2. 数据不丢失

最终结果是服务没中断,迁移过程中丢失了约数十条的PV记录。

大致流程是:新服务器部署环境安装依赖同步静态数据 --> 新服务器上准备好服务启动命令准备按回车 --> 旧服务器导出数据库数据传输到新服务器上并导入新服务器数据库 --> 新服务器快速启动服务 --> 将流量切到新服务器上。

中间从旧服务器开始导出数据流量切到新服务器上这段时间的产生的十几条PV记录写到了旧服务器上并与新服务器数据库产生了冲突。由于影响不是很大就没去处理。

当然想做到数据也不丢失似乎也可以通过主从数据库的方式来保证,但主要是我不会。

过程

新服务器安装依赖部署环境同步旧服务器的静态数据

我有一个习惯,旧服务器上的配置几乎都存放在一个专门的文件夹TFpath,然后ln -s软链接到原始位置,这样不论我修改什么配置,实质上配置文件都会在TFpath文件夹下被修改。

也就是说这些静态配置我只需要scp到新服务器上并在新服务器上将他们分别软链接到对应位置就好了。

这样在新服务器上安装好各个服务后一启动,配置就和旧服务器一样了。 万物皆文件好啊(bushi)

代码什么的统统复制到新服务器上,该安装的依赖安装好,坐等数据库改好后一键启动。

旧服务器导出数据库数据传输到新服务器上并导入新服务器数据库

我所涉及的动态数据主要存储在MySQL中,mysqldumps -u xx -p --all-databases > all.sql可方便导出整个数据库,scp all.sql user@ip:path可将数据库文件拷贝到新服务器上,新服务器上在MySQL命令行中执行source all.sql即可一键将数据库变得和旧服务器相同,连用户名密码都会变得一致。

有了数据之后,新服务器上的服务就可以启动,等待流量的到来了。

将流量切换到新服务器上

我使用的是CloudFlare的DNS(以及CDN),代理模式为完全。虽然名义上是CDN实际上在国内就是个减速器,这样做的目的主要是友好为数不多的国外用户以及隐匿我的真实IP。

实质上当你访问我的域名如https://letmefly.xyz时,DNS服务器将请求定向到其中一个Cloudflare节点上,Cloudflare节点再去请求我的源服务器,这样第三方用户就不知道我的真实IP了。

虽然通过一些特殊手段还是可能反映射到,但是cloudflare已经在很大程度上保证源服务器的安全了。请大家把赛博菩萨打在公屏上。

这样还有一个好处,就是切流量异常地顺利,几乎可以说是秒级。因为这种机制导致切流量时无需更新DNS,用户仍然访问cloudflare节点,cloudflare直接把流量切到新机器上就好了。

现在可以公开的情报

旧服务器IP是123.56.114.139,这个倒背如流的IP可以公开了。

新服务器的IP还藏在坚强的CloudFlare护盾后面,以防一波应该不会出现的针对源IP服务器直接的DDoS。

Q&A

有人说为何不借助云服务商的一键迁移或者镜像导入导出?

这样是很省事儿,一个是迁移过程中可能仍然会有部分数据修改到旧服务器上,一个是阿某云轻量应用服务器不支持大磁盘机器向小磁盘机器的一键迁移(想一键迁移还得氪金)。

有人说备案问题怎么解决?新服务器会不会因为没有备案导致流量被拦截?

不会。个人备案主要备的是域名不是IP,工信部规定解析到中国IP的域名都需要进行备案否则将会被拦截,但是我这个域名在旧服务器上的时候已经备案过了,所以不会被拦截。

Last But Not Least

陪伴了我4年的老战友,值得一个小小的纪念仪式。

介绍后想起来两台同区域的阿里云服务器之间数据应该是可以通过局域网IP快速传,免受公网IP带宽限制。

End

当然这也许并非最优解,也许会有很多更简单好用的方法。如果有,请不要吝惜告诉我。
The Real End, Thanks! 同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关推荐
上海蓝色星球6 小时前
迈向智慧电网新纪元:上海蓝色星球数字孪生变电主子站系统
运维·数据库
爬山算法8 小时前
Netty(10)Netty的粘包和拆包问题是什么?如何解决它们?
服务器·网络·tcp/ip
Sleepy MargulisItG8 小时前
【Linux网络编程】应用层协议:HTTP协议
linux·服务器·网络·http
logic_58 小时前
静态路由配置
运维·服务器·网络
zhuzewennamoamtf9 小时前
Linux内核platform抽象、数据结构、内核匹配机制
linux·运维·数据结构
门思科技9 小时前
企业级 LoRaWAN 网关远程运维方案对比:VPN 与 NPS FRP 的技术与安全差异分析
运维·网络·安全
云和数据.ChenGuang9 小时前
Deepseek 持续迭代的模型
运维·运维技术·数据库运维工程师·运维教程
物联网软硬件开发-轨物科技9 小时前
【轨物方案】聚焦锯床设备智能化升级,打造工业互联网新范式
运维·科技·物联网
suzhou_speeder10 小时前
企业数字化网络稳定运行与智能化管理解决方案
运维·服务器·网络·交换机·poe·poe交换机
RisunJan10 小时前
Linux命令-grpck命令(验证和修复组配置文件(`/etc/group` 和 `/etc/gshadow`)完整性的工具)
linux·运维·服务器