在阿里雲的學生主機和資料庫馬上就要到期了,現在阿里雲續費越來越貴。而且各種各樣的服務太多了,作為小站點,基本用不到。
現在用阿里雲的雲資料庫很不適應,各種性能限制,本來想導出數據的,結果導出數據還限制表,限制行數量。能控制的感覺越來越弱,套路雲不是白來的稱號。
因為以前想做別的業務在騰訊雲買的雲伺服器和資料庫還有兩年到期,網站業務不需要多好的伺服器性能,為了進一步壓縮伺服器續費開支。決定不對阿里雲伺服器進行續費了,而是把資料庫和網站遷移到騰訊雲。
記錄一下要逃離阿里雲的主要原因。
1、伺服器資料庫到期了,正常情況下伺服器用不了這麼多。現在各個雲廠商對老用戶續費都太貴了。
2、阿里雲數據各種限制,各種收費項目,沒錢還是無法享受雲伺服器的待遇。
3、mysql導出資料庫一直不太方便。至今沒有導出成功過。
4、騰訊雲伺服器和資料庫還有兩年多的時間:資料庫足夠大50G,騰訊雲伺服器空間足夠,120GB,遷移在一起可以節約成本。
目前遷移已經基本完成,唯一的問題是域名需要在騰訊雲做遷入備案,備案目前遇到驗證地不一致的問題,需要先把備案搞定以後才能繼續做域名遷移。
當然,各個雲服務商針對用戶上雲,或者其他雲資源遷移都已經經歷過很多了,為了方便用戶遷移,降低挖牆腳的難度,都已經針對本地數據和其他雲資源遷移提供了完整的解決方案。只需要按照要求配置一下遷移任務,就可以進行數據遷移。
這裡是騰訊雲的數據遷移服務,我使用了資料庫遷移。https://cloud.tencent.com/solution/data-migration
既然要做遷移,那就要做好足夠的遷移預案和流程。雖然不像公司數據遷移一樣做一個完整的遷移方案,前期梳理主要的操作還是必要的。以下是記錄了自己遷阿里雲伺服器和資料庫的一些紀要。
阿里雲遷移到騰訊雲的準備:1、梳理需要遷移和備份的數據資產。2、確認遷移可行性。3、確認遷移複雜程度。
這裡我先拿了一個站點進行練手。
3.1、查看遷移方案:騰訊雲提供的遷移工具和服務。可以遷移本地數據或阿里雲資料庫到騰訊雲。https://cloud.tencent.com/solution/data-migration
同樣阿里雲也有完整的遷移其他雲數據到阿里雲的服務。https://www.aliyun.com/acts/best-practice/index
3.2、測試計劃可行性。使用騰訊雲資料庫遷移進行測試。測試中遇到幾個問題,阿里雲AccessKey中含有=等號,騰訊雲不允許使用,需要在阿里雲新建一個操作秘鑰AccessKey。
騰訊雲的遷移原理是使用阿里雲的操作接口,通過授權帳號密碼進行api操作(總共有十幾個步驟)。
測試過程中,騰訊雲資料庫和阿里雲資料庫的大版本要保持一致,其他的一些參數都需要保持一致,並且一些數據表也需要遵循騰訊雲的遷移要求,如果遷移檢驗不成功,只能更改原資料庫表結構和數據,因為這個問題驗證不通過,刪除了幾個不想要的資料庫,還改了幾張表結構,改了幾個 mysql 資料庫配置項,按照要求對應著整改數據才能完全通過遷移核驗。
資料庫遷移方案核驗通過以後,就是剩下的十幾步操作。
資料庫遷移分為兩類,一類是全量遷移,這類就是備份整庫,然後導入整庫完成。
一類是全量遷移加增量同步(騰訊雲能通過接管 binglog 保持同步15天),可以在遷移過後的測試期讓新舊資料庫保持統一,不需要在切換時人工再做增量遷移。
我選擇整庫遷移,不用增量同步。主要是業務的寫數據都是可以丟棄的數據,只要把原始數據遷移過來就可以。
如果是寫入數據不能丟棄的業務,那就要進行增量同步。
另外需要注意的一點是,遷移過來的資料庫需要保持資料庫為空,我在騰訊雲的資料庫原本是有內容的,為了遷移資料庫,先進行了備份,然後停站,把資料庫清空了,等遷移完資料庫以後再重新把原來的書庫內容導入。
結果我的騰訊雲數據備份的時候忘記備份用戶了,又挨著找資料庫用戶和密碼來創建的用戶。
3.3、遷移資料庫。按照預計流程,遷移配置修改好以後,只需要等騰訊雲的遷移腳本執行並完成就好了。
但我這次測試遷移數據過程很不順利,騰訊雲和阿里雲資料庫均出現了問題,開始是騰訊雲的遷移任務在最後一步,導入數據冷備時失敗,這個步驟失敗後用戶無法自己取消,是倒數第二步操作。雖然我檢查了數據好像內容都導入了,但資料庫一直保持在了只讀狀態,並且無法結束遷移任務,也無法保證資料庫是否導入完整。
通過工單聯繫騰訊雲客服進行技術支持,又來回嘗試了四次遷移任務,其中第二次和第三次遷任務不知道什麼原因,觸發了阿里雲的問題,好像知道我要遷走一樣,資料庫備份請求不響應,不管是騰訊雲遷移通過接口還是我從後臺創建備份任務都沒有執行。
找阿里雲客服進行技術支持,把備份任務弄好了,弄好已經是晚上12點過後了,又繼續了第四次遷移資料庫任務,第四次資料庫遷移到最後一步又失敗了,騰訊雲工程師半夜給手工又回滾了一次遷移冷備導入,這才導入成功,從下午4點開始弄遷移資料庫測試,到我睡覺前凌晨2點,還沒折騰完。
等我實在熬不住睡醒一覺起床,騰訊雲幫我手動遷移好了數據才算成功。一次資料庫500M的遷移,搞了一晚上。
資料庫遷移完成了,簡單檢查了一下數據完整性,又把原來刪掉的資料庫都導入了進來,先把原有網站,就是這個博客先跑起來。
3.4、遷移站點,主要是lnmp環境和代碼遷移。
資料庫遷移過來了,那就開始遷移站點和應用了。
3.4.1、站點應用代碼備份。遷移前先把阿里雲的源伺服器的站點代碼打包,nginx配置文件備份。
3.4.2、站點代碼數據遷移。
再把源碼壓縮包通過 wget 下載到騰訊雲的伺服器中,因為是兩個伺服器都是 1M 出口帶寬,代碼包下載了一陣子。
如果有不限寬帶的伺服器或者已經配置過oos雲存儲的,建議通過雲存儲遷移代碼包,這樣下載速度快很多。
站點遷移主要包括代碼遷移和nginx配置遷移。本身運行環境都是lnmp的環境,環境一致,但php環境有所變化,部署環境也有變化,以前是代碼的lnmp環境,現在是寶塔的lnmp環境。
先把站點nginx配置進行遷移配置好,再通過hosts綁定到騰訊雲伺服器進行測試。
php從5.5升級到了7.0,原有的一些代碼會報錯。把代碼修改成適配php7.0的。倒是沒有很多需要改動的,但在修改的時候發現網站代碼遭到了入侵和篡改,又對病毒文件做了清理。
前段時間伺服器被搜尋引擎狂爬,壓力扛不住的原因也找到了,原來是被人上傳了木馬文件,本來我以為是升級discuzx程序導致的搜尋引擎優化,現在才發現是因為被人植入了木馬。這些木馬文件對應著老伺服器也清理了一遍。
木馬比較狡猾,植入了多個位置,留了多個後門,而且把文件設置為不可刪除狀態,root帳戶都不能刪除。具體木馬的特徵單獨開一個再說,木馬更新的腳本和肉雞數據回傳主要是傳回這個域名(zerostarts.com)。這裡只記錄一下遷移過程。
遷移數據做完了,代碼也改的差不多了,木馬也清空的差不多了,把代碼中的資料庫連接配置也改到內網的騰訊雲資料庫。
3.5、遷移測試,解析遷移。
經過簡單測試,覺得沒什麼問題。就把cdn或者域名的解析進行了切換,先在新伺服器和數據上跑一段時間看看效果。解析遷移之前一定要確認騰訊雲上或者其他國內伺服器有過備案,如果沒有備案的域名,騰訊雲不允許進行接入的。會直接給屏蔽掉。
後續各個環節遇到的時候再記錄相關的內容。
4、在騰訊雲新增備案。其實呢,現在還欠著一個流程沒有做完,那就是要把備案在騰訊雲進行新增,要不然會顯示騰訊雲沒有備案被清理的情況。
但現在騰訊雲備案越來越簡單,我覺得應該不是什麼問題,可是在使用騰訊雲小程序備案的時候,居然要求備案地和我所在地要相同,人臉核驗前會核驗微信號定位所在地。我的備案都是在北京做的,那怎麼辦,只能考慮人肉跑到北京去做人臉核驗了。