摘要:在中注冊發布之后,我們會產生一個監聽器,文件已經存儲在本地,獲取該文件信息將文件上傳至七牛云存入數據庫上面的部分代碼沒寫,大家可以去自己去試下,加深對七牛云及的理解,完全可以達到目的。
最近項目用戶徒增,購買的服務器還是和公司另外一個項目共用的同一臺服務器,想著要是服務器崩了,還沒個容災方案,萬一。。。不得被用戶整死
選用方案laravel-backup 配合laravel的任務調度,每天1點和13點進行數據庫自動備份;
申請七牛云賬號,利用laravel的文件系統&云存儲,在備份完成之后立即將文件上傳至七牛云;
設計數據表backup,在任務完成的同時,配合任務監聽laravel-backup,向數據庫插入一條備份的數據,可以通過在后臺記錄備份情況及下載備份文件;
實現思路安裝laravel-backup,sf里面有為仁兄給他做了個簡單翻譯,但是光看這個還是不夠的;
申請七牛云賬號,這個需要幾個步驟即可完成申請,具體去看下官網介紹,我暫時申請的是免費版的,申請賬號、提交認證資料、設置項目信息即可,技術文檔基本不用看,后面會利用到一個laravel的七牛云包,相當簡單;
安裝七牛云包,將申請好的七牛云賬號信息,寫到配置文件app/config/filesystems.php中;
完成安裝laravel-backup之后,可以在本地cli環境調試下
php artisan backup:run --only-db
文件會默認保存在/storage/app/http---localhost中
一切順利的話,我們需要做個定時任務,讓它每天自動的去備份數據庫,在appconsolekernel.php的文件中,加入如下的備份策略:(laravel任務調度)
protected function schedule(Schedule $schedule){ $schedule->command("backup:run --only-db")->twiceDaily(1, 13); }
這里的代碼是針對linux系統的,需要在服務器安裝crontab,并設置好之后會被自動調用;
至此已經完成了數據庫備份,下面是我的一個誤區,但是這個坑我覺得非常值得去踩。按照我開始的設計思路,在備份完成打包之后,先將文件存儲在本地,這時候調用一個監聽事件,將文件上傳至七牛云,然后再在數據庫新增一條數據。
毫無疑問這個思路完全是可以走通的,通過閱讀laravel-backup官方文檔,我找到了備份完成之后的幾個事件(在/vendor/spatie/laravel-backup/src/Events可以找到),這里只需要監聽壓縮成zip文件之后的一個時間即可,并將其注冊在我的監聽器里面。
在app/provider/EventSeviceProvider中注冊
protected $listen = [ //... "SpatieBackupEventsBackupZipWasCreated" => [ "AppListenersBackupListener" ] ];
發布之后,我們會產生一個監聽器BackupListener,
public function handle(BackupZipWasCreated $event) { // 文件已經存儲在本地,獲取該文件信息 $info = $event->zip; // 將文件上傳至七牛云 // 存入數據庫 }
上面的部分代碼沒寫,大家可以去自己去試下,加深對七牛云及laravel-backup的理解,完全可以達到目的。
但這不是最優方案,讓我們看下laravel的優雅之處在哪里。我在修改配置文件app/config/laravel-backup.php的時候,突然意識到它的disk貌似就是filesystems.php中disks默認的一種,即存儲在本地,那么我們能否在這里直接使用剛剛加入qiniu的disk作為driver呢?答案是可以的,這里是利用了laravel的文件系統&云存儲。
我這里修改了兩點,一個是將
"name" => env("APP_ENV")."/databaseBackup"
這個是為了測試環境和線上環境做個區分,可不設置。
重要的的一點,在配置文件laravel-backup.php中將laravel默認的文件系統driver由local修改成qiniu,這樣就可以將dump下來的文件直接向七牛云發送,而不是直接保存在本地。
"destination" => [ "disks" => [ // "local", "qiniu", ], ],
那么我們在監聽器BackupListener里面的處理也可以更簡單了.
public function handle(BackupZipWasCreated $event) { $info = $event->zip; $fileName = env("APP_ENV")."-databaseBackup/".substr($info->getPath(),-21,21); $size = $info->getSize(); $data = array( "type" => 1, "path" => $fileName, "size" => $size ); // 存入數據庫 $db_result = DB::table("backup")->insert($data); }
附上備份表backup的sql:
CREATE TABLE `backup` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type` tinyint(4) DEFAULT "1" COMMENT "文件類型", `path` varchar(256) DEFAULT "" COMMENT "位置", `size` float DEFAULT "0" COMMENT "大小", `isCloud` tinyint(4) DEFAULT "0" COMMENT "是否云備份", `downloads` int(11) DEFAULT "0" COMMENT "下載次數", `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "加入時間", `updated_at` timestamp NULL DEFAULT NULL COMMENT "更新時間", `deleted_at` timestamp NULL DEFAULT NULL COMMENT "刪除時間", PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28240.html
摘要:大家好,我叫湯金城,今天和大家分享一下我在公司業務方面故障排查遇到的一些坑,以及進行性能調優的解決方法。性能的優化在我看來,性能優化和監控是分不開的,現在關于優化的配置非常多,適合自己的才是最好的。 本期主講:湯金城,多年從事移動互聯網相關運維工作,帶領團隊維護數百臺服務器,擁有豐富的故障排查和性能優化實戰經驗,擅長業務拆分,高可用架構設計。 大家好,我叫湯金城,今天和大家分享一下我在...
摘要:如果您還不清楚的概念,推薦閱讀之前的文章創業公司的原生云之路原生云是什么。以下服務都以阿里云為例,騰訊云和百度云一般也都有相對應的服務。服務原生云服務彈性容器實例鏡像阿里云的原生云云效配置過于復雜,所以不在的推薦范圍內。 showImg(https://segmentfault.com/img/bVbrwJ0?w=2224&h=1668); 如果您還不清楚Cloud Native的概念...
摘要:兩地三中心是指一個云中心數據和應用,一個備份云中心數據和應用和一個異地的數據備份中心僅用于數據備份。全省個地市云節點通過專網與省云中心和省備份云中心連接,市云節點承載本市基層醫療業務和區域信息交換業務。 云計算最近是真火,不光創業公司、中小企業用云計算,越來越多的政府、大型央企也開始采購云計算服務。大家從不知道云計算到大膽應用云計算,從關注云計算的功能、安全性,漸漸過渡到了成本、性價比等更接...
摘要:語言行為及特征狀態看不懂任何英語技術,英語文檔,凡事沒有培訓部在搞的,只有英文文檔的東西國內一律沒大公司在用,都非主流,排斥英文文檔和新技術,以及各種超出他學習能力范圍的技術。 在撰寫此文前首先必須申明的是本人不鄙視任何一種框架,也無意于挑起PHP框架間的戰爭,更沒有貶低某個框架使用者的用意,本文純粹個人的看法。你可以認為我無知也好,或者裝逼也好,請不要試著在任何情況下,隨便發起言語的...
摘要:對于商業市場來說,特別是中國這樣一個云計算才剛剛起步的市場。反觀云計算售賣的一些商品,目前主要還是以服務器為主。云計算的本質是將計算能力轉化為標準化,可售賣的服務。可以說是云計算實踐的一個經典案例。有的人會問,云計算廠商需要提供哪些服務。 2015年伊始,國內云計算市場可謂風起云涌。各路群豪紛紛涌入這個市場。其中最活躍的領域當屬IAAS。阿里騰訊硝煙未盡,百度重新檢討了自己的PAAS戰略后,...
閱讀 2411·2021-11-25 09:43
閱讀 1246·2021-11-24 09:39
閱讀 742·2021-11-23 09:51
閱讀 2383·2021-09-07 10:18
閱讀 1842·2021-09-01 11:39
閱讀 2777·2019-08-30 15:52
閱讀 2590·2019-08-30 14:21
閱讀 2850·2019-08-29 16:57