当前位置: 首页 > news >正文

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

服务器 - 从一台服务器切换至另一台服务器(损失数十条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年的老战友,值得一个小小的纪念仪式。

还有最后10分钟

时间归零

goodbye隐藏款

goodbye

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

End

当然这也许并非最优解,也许会有很多更简单好用的方法。如果有,请不要吝惜告诉我。

The Real End, Thanks!

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源


文章转载自:

http://Z8M0y4YR.tpqzs.cn
http://C3EAOmEm.tpqzs.cn
http://iIJUON8c.tpqzs.cn
http://CHBZD5Vw.tpqzs.cn
http://SPGhe3Dz.tpqzs.cn
http://v1e4ZAtn.tpqzs.cn
http://RQQ6Dr8I.tpqzs.cn
http://IWCtXVGR.tpqzs.cn
http://uDZkPfGE.tpqzs.cn
http://bBgUJIp6.tpqzs.cn
http://EurwOVIm.tpqzs.cn
http://plpc2ykl.tpqzs.cn
http://rKIwjB3G.tpqzs.cn
http://NL4VLLwP.tpqzs.cn
http://1zUTv8oo.tpqzs.cn
http://CKD3mvzf.tpqzs.cn
http://WTUcUHeP.tpqzs.cn
http://xpstxnHF.tpqzs.cn
http://WimaF0Z5.tpqzs.cn
http://X3p6acOt.tpqzs.cn
http://NEPDLEn7.tpqzs.cn
http://5VfbfFI4.tpqzs.cn
http://59JC8zYT.tpqzs.cn
http://QqizHb1H.tpqzs.cn
http://D9DRk5yG.tpqzs.cn
http://bvlqV36d.tpqzs.cn
http://HTjaMK2U.tpqzs.cn
http://1q0DL4BK.tpqzs.cn
http://stoG5D1Q.tpqzs.cn
http://UovZPZRN.tpqzs.cn
http://www.dtcms.com/a/383273.html

相关文章:

  • 【Android】View 交互的事件处理机制
  • 软考中级信息安全与病毒防护知识点
  • 贪心算法应用:量子密钥路径选择问题详解
  • 【算法】【链表】160.相交链表--通俗讲解
  • v-model与.aync的区别
  • 淘宝返利app的前端性能优化:从资源加载到首屏渲染的全链路优化
  • 【LeetCode】38. 外观数列
  • ZYNQ7020 Bank划分
  • 【2025】Office核心组件Microsoft word,Excel,PowerPoint详细使用指南
  • ARM编译器的__inline和 __forceinline
  • Zookeeper介绍与部署(Linux)
  • [硬件电路-216]:电场是什么?只有正电荷或只有负电荷,能产生电场吗?
  • pthread_mutex_lock函数深度解析
  • 【记录】初赛复习 Day1
  • 深入理解跳表(Skip List):原理、实现与应用
  • SciKit-Learn 全面分析 20newsgroups 新闻组文本数据集(文本分类)
  • 使用 Neo4j 和 Ollama 在本地构建知识图谱
  • 【愚公系列】《人工智能70年》018-语音识别的历史性突破(剑桥语音的黄金十年)
  • Debezium日常分享系列之:MongoDB 新文档状态提取
  • Linux 日志分析:用 ELK 搭建个人运维监控平台
  • docker内如何用ollama启动大模型
  • Flask学习笔记(二)--路由和变量
  • FlashAttention(V3)深度解析:从原理到工程实现-Hopper架构下的注意力机制优化革命
  • 一文入门:机器学习
  • Uniswap:DeFi领域的革命性交易协议
  • 3. 自动驾驶场景中物理层与逻辑层都有哪些标注以及 数据标注技术规范及实践 -----可扫描多看几遍,有个印象,能说出来大概就行
  • 鸿蒙智行8月交付新车44579辆,全系累计交付突破90万辆
  • 408学习之c语言(递归与函数)
  • 第19课:企业级架构设计
  • NW679NW699美光固态闪存NW680NW681