艾銻實踐 | mysql,redis數據備份方案
2020-02-10 18:20 作者:admin 瀏覽量:
迎戰疫情,艾銻無限用愛與您同行
為中國中小企業提供免費IT外包服務

這次的肺炎疫情對中國的中小企業將會是沉重的打擊,據釘釘和微信兩個辦公平臺數據統計現有2億左右的人在家遠程辦公,那么對于中小企業的員工來說不懂IT技術將會讓他們面臨的最大挑戰和困難。
電腦不亮了怎么辦?系統藍屏如何處理?辦公室的電腦在家如何連接?網絡應該如何設置?VPN如何搭建?數據如何對接?服務器如何登錄?數據安全如何保證?數據如何存儲?視頻會議如何搭建?業務系統如何開啟等等一系列的問題,都會困擾著并非技術出身的您。
好消息是當您看到這篇文章的時候,就不用再為上述的問題而苦惱,您只需撥打艾銻無限的全國免費熱線電話:400 650 7820,就會有我們的遠程工程師為您解決遇到的問題,他們可以遠程幫您處理遇到的一些IT技術難題。
如遇到免費熱線占線,您還可以撥打我們的24小時值班經理電話:15601064618或技術經理的電話:13041036957,我們會在第一時間接聽您的來電,為您提供適合的解決方案,讓您無論在家還是在企業都能無憂辦公。
那艾銻無限具體能為您的企業提供哪些服務呢?
艾銻無限始創于2005年,歷經15年服務了5000多家中小企業并保障了幾十萬臺設備的正常運轉,積累了豐富的企業IT緊急問題和特殊故障的解決經驗,制定了相對應的解決方案。我們為您的企業提供的IT服務分為三大版塊:
第一版塊是保障性IT外包服務:如電腦設備運維,辦公設備運維,網絡設備運維,服務器運維等綜合性企業IT設備運維服務。
第二版塊是功能性互聯網外包服務:如網站開發外包,小程序開發外包,APP開發外包,電商平臺開發外包,業務系統的開發外包和后期的運維外包服務。
第三版塊是增值性云服務外包:如企業郵箱上云,企業網站上云,企業存儲上云,企業APP小程序上云,企業業務系統上云,阿里云產品等后續的云運維外包服務。
您要了解更多服務也可以登錄艾銻無限的官網:
www.bjitwx.com查看詳細說明,
在疫情期間,您企業遇到的任何困境只要找到艾銻無限,能免費為您提供服務的我們絕不收一分錢,我們全體艾銻人承諾此活動直到中國疫情結束,我們將這次活動稱為——春雷行動。
以下還有我們為您提供的一些技術資訊,以便可以幫助您更好的了解相關的IT知識,幫您渡過疫情中辦公遇到的困難和挑戰,艾銻無限愿和中國中小企業一起共進退,因為我們相信萬物同體,能量合一,只要我們一起齊心協力,一定會成功。再一次祝福您和您的企業,戰勝疫情,您和您的企業一定行。
艾銻實踐 | mysql,redis數據備份方案
之前在文章里面有提到過,很多事情,并沒有絕對的對錯,只是度的問題。而度的衡量又取決于時、勢二字。所以當形勢逼人的時候,基本就是這件事情非做不可的時候了。
先說下背景,公司的服務器一直用的阿里云,包括mysql、redis也都是買了ECS自己搭建的。這里面有幾個原因:
創業的時候,阿里云只提供mysql的存儲,redis的存儲還沒提供。
沒錢,即時現在去看redis的存儲價格也是貴的嚇人。
這樣自己來搞存儲有好處也有壞處。
好處:
完全可控,比如連接數限制,內存限制,存儲限制。還有數據備份的靈活性等等。
強迫團隊服務器研發要有存儲運維能力。
省錢
壞處:
冷備、熱備方案不完善。
存儲運維的成本較高,需要長時間積累。
ok,問題就是這樣,接下來再來說一下我們之前的冷備和熱備方案。
可以說極其簡陋:
mysql、redis每天10點冷備,備份到本地磁盤和阿里云OSS
redis使用rdb落地,每60秒至少有1次寫就會觸發落地。
這樣做的問題其實挺多的,主要幾個:
mysql dump的時候會導致游戲卡頓,即使加了 -single-transaction 參數 也僅僅是緩解
冷備頻率過低,真出現問題數據已經太久
沒有熱備,風險較大
針對這些問題,我們先做了mysql備份的優化。
mysql主從同步,實現熱備。
主機不再執行mysqldump,從機上每隔10分鐘執行一次mysqldump,并備份到本地磁盤和阿里云OSS
mysql的備份方案還是比較簡單的,唯一要注意的是,從機啟動的時候并不會從主機拉取所有數據,所以需要停服先把主機的數據手動同步到從機,之后再啟動同步。
接下來,是redis的備份問題。
為了與mysql的備份時間一致,redis這邊改成了主機每10分鐘備份rdb文件一次。
但新方案運行了幾天之后,發現mysql經常會突然響應變慢。
后來發現因為備份腳本的邏輯是會先把rdb文件copy一份出來,而copy的目標位置和mysql使用的磁盤是同一個磁盤,所以導致磁盤IO上升,從而mysql變慢。
并且redis的bgsave每隔60秒運行一次,也是會對磁盤有大量的寫操作,不過目前看來影響不是特別大,因為數據量比較小。
所以我們開始考慮新的redis備份方案。
與mysql不同,redis從機在第一次啟動的時候會從主機全量同步一次數據。
所以我們想了幾套方案,我分別列一下。
redis主從熱備,從機進行冷備
這種方案其實是可以的,但是有幾個問題:
如果主機不關閉rdb保存就沒有問題,如果關閉了的話,那么當主機不小心宕機重啟,那么當主機redis啟動之后,會把從機redis的數據也抹掉。十分危險。
一旦從機服務器出問題,重新啟動后會從主機同步所有數據,導致主機bgsave運行,如果數據量很大,會導致主機內存狂飆,如果主機又忘記配置內存使用限制,就會是災難了。這在云風的一篇文章中有寫: 談談陌陌爭霸在數據庫方面踩過的坑( Redis 篇)
所以后來,我決定選擇一個比較簡單的方案。
使用ssh將rdb文件傳輸到另一臺機器上,再進行冷備。