亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

2bdenny / 2157人閱讀

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

最近項(xiàng)目用戶徒增,購(gòu)買(mǎi)的服務(wù)器還是和公司另外一個(gè)項(xiàng)目共用的同一臺(tái)服務(wù)器,想著要是服務(wù)器崩了,還沒(méi)個(gè)容災(zāi)方案,萬(wàn)一。。。不得被用戶整死

選用方案

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

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

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

實(shí)現(xiàn)思路

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

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

安裝七牛云包,將申請(qǐng)好的七牛云賬號(hào)信息,寫(xiě)到配置文件app/config/filesystems.php中;

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

  php artisan backup:run --only-db

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

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

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

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

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

發(fā)布之后,我們會(huì)產(chǎn)生一個(gè)監(jiān)聽(tīng)器BackupListener,

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

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

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

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

我這里修改了兩點(diǎn),一個(gè)是將

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

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

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

那么我們?cè)诒O(jiān)聽(tīng)器BackupListener里面的處理也可以更簡(jiǎn)單了.

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ù)庫(kù)
        $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 "加入時(shí)間",
  `updated_at` timestamp NULL DEFAULT NULL COMMENT "更新時(shí)間",
  `deleted_at` timestamp NULL DEFAULT NULL COMMENT "刪除時(shí)間",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8





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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/28240.html

相關(guān)文章

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

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

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

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

    wenshi11019 評(píng)論0 收藏0
  • 一個(gè)案例學(xué)會(huì)分析計(jì)算成本帳

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

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

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

    Godtoy 評(píng)論0 收藏0
  • 計(jì)算的那些事--談一談IAAS

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

    KitorinZero 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<