成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

創(chuàng)業(yè)初期數(shù)據(jù)庫云備份之laravel解決方案

2bdenny / 2103人閱讀

摘要:在中注冊發(fā)布之后,我們會產(chǎn)生一個監(jiān)聽器,文件已經(jīng)存儲在本地,獲取該文件信息將文件上傳至七牛云存入數(shù)據(jù)庫上面的部分代碼沒寫,大家可以去自己去試下,加深對七牛云及的理解,完全可以達到目的。

最近項目用戶徒增,購買的服務(wù)器還是和公司另外一個項目共用的同一臺服務(wù)器,想著要是服務(wù)器崩了,還沒個容災(zāi)方案,萬一。。。不得被用戶整死

選用方案

laravel-backup 配合laravel的任務(wù)調(diào)度,每天1點和13點進行數(shù)據(jù)庫自動備份;

申請七牛云賬號,利用laravel的文件系統(tǒng)&云存儲,在備份完成之后立即將文件上傳至七牛云;

設(shè)計數(shù)據(jù)表backup,在任務(wù)完成的同時,配合任務(wù)監(jiān)聽laravel-backup,向數(shù)據(jù)庫插入一條備份的數(shù)據(jù),可以通過在后臺記錄備份情況及下載備份文件

實現(xiàn)思路

安裝laravel-backup,sf里面有為仁兄給他做了個簡單翻譯,但是光看這個還是不夠的;

申請七牛云賬號,這個需要幾個步驟即可完成申請,具體去看下官網(wǎng)介紹,我暫時申請的是免費版的,申請賬號、提交認證資料、設(shè)置項目信息即可,技術(shù)文檔基本不用看,后面會利用到一個laravel的七牛云包,相當(dāng)簡單;

安裝七牛云包,將申請好的七牛云賬號信息,寫到配置文件app/config/filesystems.php中;

完成安裝laravel-backup之后,可以在本地cli環(huán)境調(diào)試下

  php artisan backup:run --only-db

文件會默認保存在/storage/app/http---localhost
一切順利的話,我們需要做個定時任務(wù),讓它每天自動的去備份數(shù)據(jù)庫,在appconsolekernel.php的文件中,加入如下的備份策略:(laravel任務(wù)調(diào)度)

    protected function schedule(Schedule $schedule){
        $schedule->command("backup:run --only-db")->twiceDaily(1, 13);
    }

這里的代碼是針對linux系統(tǒng)的,需要在服務(wù)器安裝crontab,并設(shè)置好之后會被自動調(diào)用;

至此已經(jīng)完成了數(shù)據(jù)庫備份,下面是我的一個誤區(qū),但是這個坑我覺得非常值得去踩。按照我開始的設(shè)計思路,在備份完成打包之后,先將文件存儲在本地,這時候調(diào)用一個監(jiān)聽事件,將文件上傳至七牛云,然后再在數(shù)據(jù)庫新增一條數(shù)據(jù)。
毫無疑問這個思路完全是可以走通的,通過閱讀laravel-backup官方文檔,我找到了備份完成之后的幾個事件(在/vendor/spatie/laravel-backup/src/Events可以找到),這里只需要監(jiān)聽壓縮成zip文件之后的一個時間即可,并將其注冊在我的監(jiān)聽器里面。
app/provider/EventSeviceProvider中注冊

protected $listen = [
        //...
        "SpatieBackupEventsBackupZipWasCreated" => [
            "AppListenersBackupListener"
        ]
    ];

發(fā)布之后,我們會產(chǎn)生一個監(jiān)聽器BackupListener,

public function handle(BackupZipWasCreated $event)
    {
        // 文件已經(jīng)存儲在本地,獲取該文件信息
        $info = $event->zip;
       
        // 將文件上傳至七牛云
        
        // 存入數(shù)據(jù)庫
       
    }

上面的部分代碼沒寫,大家可以去自己去試下,加深對七牛云及l(fā)aravel-backup的理解,完全可以達到目的。

但這不是最優(yōu)方案,讓我們看下laravel的優(yōu)雅之處在哪里。

我在修改配置文件app/config/laravel-backup.php的時候,突然意識到它的disk貌似就是filesystems.php中disks默認的一種,即存儲在本地,那么我們能否在這里直接使用剛剛加入qiniu的disk作為driver呢?答案是可以的,這里是利用了laravel的文件系統(tǒng)&云存儲

我這里修改了兩點,一個是將

"name" => env("APP_ENV")."/databaseBackup"

這個是為了測試環(huán)境和線上環(huán)境做個區(qū)分,可不設(shè)置。
重要的的一點,在配置文件laravel-backup.php中將laravel默認的文件系統(tǒng)driver由local修改成qiniu,這樣就可以將dump下來的文件直接向七牛云發(fā)送,而不是直接保存在本地。

    "destination" => [
        "disks" => [
            // "local",
            "qiniu",
        ],
    ],

那么我們在監(jiān)聽器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
        );

        // 存入數(shù)據(jù)庫
        $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 "下載次數(shù)",
  `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





文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28240.html

相關(guān)文章

  • 智慧微課堂:移動創(chuàng)業(yè)公司的IT性能優(yōu)化實例講解

    摘要:大家好,我叫湯金城,今天和大家分享一下我在公司業(yè)務(wù)方面故障排查遇到的一些坑,以及進行性能調(diào)優(yōu)的解決方法。性能的優(yōu)化在我看來,性能優(yōu)化和監(jiān)控是分不開的,現(xiàn)在關(guān)于優(yōu)化的配置非常多,適合自己的才是最好的。 本期主講:湯金城,多年從事移動互聯(lián)網(wǎng)相關(guān)運維工作,帶領(lǐng)團隊維護數(shù)百臺服務(wù)器,擁有豐富的故障排查和性能優(yōu)化實戰(zhàn)經(jīng)驗,擅長業(yè)務(wù)拆分,高可用架構(gòu)設(shè)計。 大家好,我叫湯金城,今天和大家分享一下我在...

    xzavier 評論0 收藏0
  • [給創(chuàng)業(yè)公司的原生] ②Spine L1

    摘要:如果您還不清楚的概念,推薦閱讀之前的文章創(chuàng)業(yè)公司的原生云之路原生云是什么。以下服務(wù)都以阿里云為例,騰訊云和百度云一般也都有相對應(yīng)的服務(wù)。服務(wù)原生云服務(wù)彈性容器實例鏡像阿里云的原生云云效配置過于復(fù)雜,所以不在的推薦范圍內(nèi)。 showImg(https://segmentfault.com/img/bVbrwJ0?w=2224&h=1668); 如果您還不清楚Cloud Native的概念...

    wenshi11019 評論0 收藏0
  • 一個案例學(xué)會分析計算成本帳

    摘要:兩地三中心是指一個云中心數(shù)據(jù)和應(yīng)用,一個備份云中心數(shù)據(jù)和應(yīng)用和一個異地的數(shù)據(jù)備份中心僅用于數(shù)據(jù)備份。全省個地市云節(jié)點通過專網(wǎng)與省云中心和省備份云中心連接,市云節(jié)點承載本市基層醫(yī)療業(yè)務(wù)和區(qū)域信息交換業(yè)務(wù)。 云計算最近是真火,不光創(chuàng)業(yè)公司、中小企業(yè)用云計算,越來越多的政府、大型央企也開始采購云計算服務(wù)。大家從不知道云計算到大膽應(yīng)用云計算,從關(guān)注云計算的功能、安全性,漸漸過渡到了成本、性價比等更接...

    dinfer 評論0 收藏0
  • 轉(zhuǎn):從框架看PHP的五種境界及各自的薪資待遇

    摘要:語言行為及特征狀態(tài)看不懂任何英語技術(shù),英語文檔,凡事沒有培訓(xùn)部在搞的,只有英文文檔的東西國內(nèi)一律沒大公司在用,都非主流,排斥英文文檔和新技術(shù),以及各種超出他學(xué)習(xí)能力范圍的技術(shù)。 在撰寫此文前首先必須申明的是本人不鄙視任何一種框架,也無意于挑起PHP框架間的戰(zhàn)爭,更沒有貶低某個框架使用者的用意,本文純粹個人的看法。你可以認為我無知也好,或者裝逼也好,請不要試著在任何情況下,隨便發(fā)起言語的...

    Godtoy 評論0 收藏0
  • 計算的那些事--談一談IAAS

    摘要:對于商業(yè)市場來說,特別是中國這樣一個云計算才剛剛起步的市場。反觀云計算售賣的一些商品,目前主要還是以服務(wù)器為主。云計算的本質(zhì)是將計算能力轉(zhuǎn)化為標(biāo)準(zhǔn)化,可售賣的服務(wù)。可以說是云計算實踐的一個經(jīng)典案例。有的人會問,云計算廠商需要提供哪些服務(wù)。 2015年伊始,國內(nèi)云計算市場可謂風(fēng)起云涌。各路群豪紛紛涌入這個市場。其中最活躍的領(lǐng)域當(dāng)屬IAAS。阿里騰訊硝煙未盡,百度重新檢討了自己的PAAS戰(zhàn)略后,...

    KitorinZero 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<