服務器 - 從一臺服務器切換至另一臺服務器(損失數十條訪客記錄)

服務器 - 從一臺服務器切換至另一臺服務器(損失數十條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://www.pswp.cn/bicheng/96955.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96955.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96955.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《云原生邊緣與AI訓練場景:2類高頻隱蔽Bug的深度排查與架構修復》

在云原生技術向邊緣計算與AI訓練場景滲透的過程中,基礎設施層的問題往往會被場景特性放大——邊緣環境的弱網絡、異構硬件,AI訓練的高資源依賴、分布式協作,都可能讓原本隱藏的Bug以“業務故障”的形式爆發。這些問題大多不具備直觀的報錯信息…

【51單片機】【protues仿真】基于51單片機數控直流穩壓電源系統

目錄 一、主要功能 二、使用步驟 三、硬件資源 四、軟件設計 五、實驗現象 一、主要功能 1、數碼管顯示輸出電壓值 2、滑動電阻調節輸出電壓 3、電壓輸出范圍0-15V,步進值1 二、使用步驟 基于51單片機的數控直流穩壓電源是一種通過數字控制實現電壓調節的智…

xtuoj Rectangle

題目思路將矩形間的相交情況通過投影轉化為x、y兩個方向下的線段是否相交,即前面的題目,判斷兩個區間是否相交,x投影的每個區間的左端點是每個矩形x的min,右端點是每個矩形的x的max,y投影情況同理,只要x軸的…

【深度學習踩坑實錄】從 Checkpoint 報錯到 TrainingArguments 精通:QNLI 任務微調全流程復盤

作為一名深度學習初學者,最近在基于 Hugging Face Transformers 微調 BERT 模型做 QNLI 任務時,被Checkpoint 保存和TrainingArguments 配置這兩個知識點卡了整整兩天。從磁盤爆滿、權重文件加載報錯,到不知道如何控制 Checkpoint 數量&#…

Java面試小冊(3)

21【Q】: 什么是Java的SPI機制?【A】:SPI 是一種插件機制,用于在運行時動態加載服務的實現。它通過定義接口(服務接口)并提供一種可擴展的方式來讓服務的提供著(實現類)在運行時注入&#xff0c…

P1150 Peter 的煙

記錄20#include <bits/stdc.h> using namespace std; int main(){int n,k;cin>>n>>k;int cnt0;while(n>k){cntk;nn-k1;}cntn;cout<<cnt;return 0; }突破口每吸完一根煙就把煙蒂保存起來&#xff0c;k&#xff08;k>1&#xff09;個煙蒂可以換一個…

Cursor和Hbuilder用5分鐘開發微信小程序

分享一個5分鐘搞定微信小程序開發的技能&#xff0c;需要用到兩個工具&#xff1a;Cursor和Hbuilder。 第1步、下載HBuilder。Hbuilder可以實現一套代碼直接生成安卓、蘋果、鴻蒙各個平臺APP。訪問Hbuilder的官方網站&#xff0c;HBuilderX-高效極客技巧&#xff0c;選擇適合…

k8s的dashboard

找一個裝有docker的機器&#xff0c;在一個rocky linux的虛擬機里弄拉取一個rancher鏡像建立一個目錄&#xff0c;目的&#xff1a;和里面數據做持久化關聯后臺運行&#xff0c;讓他有權限&#xff0c;8080端口和容器80端口映射&#xff0c;443和443做映射查看一下刪掉&#xf…

橋接模式,打造靈活可擴展的日志系統C++

一、為什么用橋接模式在企業開發中&#xff0c;日志系統幾乎是標配。常見需求&#xff1a;日志有多種類型&#xff08;Info、Warning、Error 等&#xff09;&#xff1b;日志需要支持多種輸出方式&#xff08;控制臺輸出、寫文件、遠程上傳、數據庫存儲等&#xff09;。如果把這…

kafka--基礎知識點--5.3--producer事務

1 事務簡介 Kafka事務是Apache Kafka在流處理場景中實現Exactly-Once語義的核心機制。它允許生產者在跨多個分區和主題的操作中&#xff0c;以原子性&#xff08;Atomicity&#xff09;的方式提交或回滾消息&#xff0c;確保數據處理的最終一致性。例如&#xff0c;在流處理中…

利用DeepSeek實現服務器客戶端模式的DuckDB原型

在網上看到韓國公司開發的一款GooseDB&#xff0c;DuckDB? 的功能擴展分支&#xff0c;具有服務器/客戶端、多會話和并發寫入支持&#xff0c;使用 PostgreSQL 有線協議&#xff0c;但它是Freeware而不是開源&#xff0c;所以讓DeepSeek實現之。 首先把readme頁面發給他翻譯&a…

麥當勞APP逆向

版本 V 7.0.17.0反調試 梆梆企業加固 frida反調試部分代碼 headers {"biz_scenario": "500","biz_from": "1004","User-Agent": "mcdonald_Android/7.0.17.0 (Android)","ct": "102","…

大數據畢業設計選題推薦-基于大數據的結核病數據可視化分析系統-Hadoop-Spark-數據可視化-BigData

?作者主頁&#xff1a;IT畢設夢工廠? 個人簡介&#xff1a;曾從事計算機專業培訓教學&#xff0c;擅長Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等項目實戰。接項目定制開發、代碼講解、答辯教學、文檔編寫、降重等。 ?文末獲取源碼? 精彩專欄推薦?…

Vue3 視頻播放器完整指南 – @videojs-player/vue 從入門到精通

前言 在 Vue 3 生態中&#xff0c;視頻播放功能是許多應用的核心需求。videojs-player/vue 是一個專門為 Vue 3 設計的視頻播放器組件&#xff0c;基于成熟的 Video.js 庫構建&#xff0c;提供了簡單而強大的視頻播放解決方案。 主要特性 Vue 3 組件化&#xff1a;原生 Vue …

【靶場練習】--DVWA第一關Brute Force(暴力破解)全難度分析

注意&#xff0c;這一關必須要使用Burpsuite來抓包 目錄Low1.抓包2.發送到爆破模塊3.選擇爆破模式爆破模式介紹4.添加載荷5.添加字典6.爆破查看查看源碼Medium查看源碼High1.抓包2.在bp的extensions中找到CSRF Token Tracker&#xff0c;并安裝3.構造字典4.成功爆破查看源碼Imp…

Java語言——排序算法

一、基本概念排序&#xff1a;將n個數字按一定順序排列&#xff08;比如&#xff1a;升序&#xff0c;或者降序&#xff09; ^內部排序 &#xff1a;若整個排序過程不需要訪問外存便能完成&#xff0c;則稱此類排序問題為內部排序 ^外部排序&#xff1a;若參加排序的記錄數量很…

【Linux】人事檔案——用戶及組管理

目錄 1 用戶及組管理 2?用戶及用戶組管理命令 2.1 useradd&#xff1a;建立用戶 useradd命令用于建立用戶&#xff0c;該 2.2 passwd&#xff1a;更改用戶密碼 2.3 usermod&#xff1a;更改用戶信息 2.4 groupadd&#xff1a;建立用戶組 2.5 finger&#xff1a;查找并顯…

給定一個有序的正數數組arr和一個正數range,如果可以自由選擇arr中的數字,想累加得 到 1~range 范圍上所有的數,返回arr最少還缺幾個數。

給定一個有序的正數數組arr和一個正數range&#xff0c;如果可以自由選擇arr中的數字&#xff0c;想累加得 到 1~range 范圍上所有的數&#xff0c;返回arr最少還缺幾個數。 #include <iostream> #include <vector>using namespace std;void func1(std::vector<…

BigemapPro快速添加歷史影像(Arcgis衛星地圖歷史地圖)

這是Esri(Arcgis)官方提供的歷史影像數據&#xff0c;可放心使用。https://livingatlas.arcgis.com/wayback如何快速添加到Bigemap Pro軟件里&#xff0c;詳細步驟如下&#xff1a;復制下面的文本保存為 配置.bmmap,然后拖入軟件就可以了{"BmLayerVersion":"1.0…

[免費]基于Python的Django醫院管理系統【論文+源碼+SQL腳本】

大家好&#xff0c;我是python222_小鋒老師&#xff0c;看到一個不錯的基于Python的Django醫院管理系統&#xff0c;分享下哈。 項目視頻演示 https://www.bilibili.com/video/BV1iPH8zmEut/ 項目介紹 隨著人民生活水平日益增長&#xff0c;科技日益發達的今天&#xff0c;…