乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      使用Docker為UI測(cè)試創(chuàng)建“可恢復(fù)的”MySQL數(shù)據(jù)庫(kù)

       印度阿三17 2019-06-23

      我們有許多硒測(cè)試,它們運(yùn)行在我們的webapp的類似生產(chǎn)的設(shè)置上.問(wèn)題是某些測(cè)試會(huì)影響數(shù)據(jù)庫(kù)的應(yīng)用程序.

      是否可以擁有一個(gè)數(shù)據(jù)量或類似數(shù)據(jù),我們可以在每次測(cè)試之前“克隆”并附加到容器中?

      我們真的只需要一個(gè)可以在每次測(cè)試之前快速重新創(chuàng)建的MySQL數(shù)據(jù)庫(kù).偶爾我們會(huì)將模式遷移運(yùn)行到該數(shù)據(jù)庫(kù).

      還是有另一種方法更適合這個(gè)嗎?

      解決方法:

      這是一個(gè)很好的問(wèn)題,對(duì)于Docker來(lái)說(shuō)可能是一個(gè)非常好的用例.有很多方法可以做到這一點(diǎn),因?yàn)橛修k法備份MySQL數(shù)據(jù)庫(kù).我將在下面解釋其中的一些.

      但請(qǐng)注意,您正在進(jìn)行權(quán)衡.這種方法的缺點(diǎn)是你的圖像會(huì)變得非常大,并且需要更長(zhǎng)的時(shí)間來(lái)拉動(dòng).

      此外,您將遇到的一個(gè)問(wèn)題是,大多數(shù)MySQL容器都使用卷/ var / lib / mysql(存儲(chǔ)數(shù)據(jù)的位置).因此,銷毀容器不足以清除數(shù)據(jù) – 您還需要清除卷.因此,當(dāng)您使用docker rm清除舊容器時(shí),請(qǐng)傳遞-v標(biāo)志以刪除卷.

      選項(xiàng)1:將數(shù)據(jù)構(gòu)建到容器中

      可以將數(shù)據(jù)構(gòu)建到容器中.這樣做的好處是,您的容器在每次運(yùn)行時(shí)都不會(huì)花費(fèi)任何時(shí)間來(lái)設(shè)置數(shù)據(jù).對(duì)于需要很長(zhǎng)時(shí)間設(shè)置或拆除的大數(shù)據(jù)集,這種優(yōu)勢(shì)變得更加重要.換句話說(shuō),“重置”該數(shù)據(jù)庫(kù)幾乎是即時(shí)的.

      在基本層面上,我們想要這樣的東西:

      ADD mysql_data.tar.gz /var/lib/mysql

      這里棘手的部分是創(chuàng)建mysql_data.tar.gz文件(它只是/ var / lib / mysql的tar.gz備份).我們可以這樣做:

      >使用空數(shù)據(jù)庫(kù)運(yùn)行容器(我將使用mysql:latest here).請(qǐng)注意,我們正在使用命名卷,我們正在轉(zhuǎn)發(fā)端口3306.

      $docker run -d –name my-mysql -v my-mysql-data:/ var / lib / mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD = password mysql:latest
      >設(shè)置數(shù)據(jù)庫(kù).構(gòu)建架構(gòu)并插入所有測(cè)試數(shù)據(jù).假設(shè)您有一個(gè)數(shù)據(jù)庫(kù)備份backup.sql.

      $cat backup.sql | mysql -u root -ppassword -h 127.0.0.1
      >停止容器.我們不希望MySQL運(yùn)行.數(shù)據(jù)將保留在指定的卷中.

      $docker stop my-mysql
      >創(chuàng)建/ var / lib / mysql的備份.請(qǐng)注意,我們使用的是相同的命名卷.

      $docker run –rm -v my-mysql-data:/ var / lib / mysql -v $(pwd):/ backup mysql:latest tar czvf /backup/mysql_data.tar.gz / var / lib / mysql
      >既然你有來(lái)自/ var / lib / mysql的gzip壓縮數(shù)據(jù),請(qǐng)?jiān)谀愕腄ockerfile中使用它.請(qǐng)注意,我們需要將其復(fù)制到/因?yàn)槲覀儔嚎s它的方式:

      添加mysql_data.tar.gz /

      如果您還沒(méi)有Dockerfile,請(qǐng)使用第一行創(chuàng)建一個(gè)

      從mysql:5.7
      >(見(jiàn)工作)將Dockerfile構(gòu)建到包含數(shù)據(jù)的容器映像中.然后運(yùn)行容器.

      $docker build -t my-data-image:latest.

      $docker run -d -p 3306:3306 my-data-image:latest

      Docker將自動(dòng)提取文件作為構(gòu)建的一部分.你完成了. Dockerfile中的容器將始終包含您的干凈數(shù)據(jù).要“重置”容器,只需停止它即可.刪除它用于/ var / lib / mysql的卷.

      要編輯數(shù)據(jù),請(qǐng)重復(fù)此過(guò)程,但在步驟1中替換現(xiàn)有容器.對(duì)于步驟2,進(jìn)行更改.您將生成一個(gè)新的mysql_data.tar.gz,如果您愿意,可以對(duì)其進(jìn)行版本控制.重建Dockerfile后,如果愿意,可以在新標(biāo)記下發(fā)布它.

      選項(xiàng)2:使用docker-entrypoint-initdb.d

      MySQL Docker鏡像具有以下功能:當(dāng)容器第一次運(yùn)行時(shí),它將在/docker-entrypoint-initdb.d中運(yùn)行SQL文件.這樣做的好處是它可以使用常規(guī)的MySQL轉(zhuǎn)儲(chǔ)來(lái)創(chuàng)建數(shù)據(jù).缺點(diǎn)是數(shù)據(jù)庫(kù)啟動(dòng)速度較慢,因?yàn)樗看味紩?huì)恢復(fù)所有數(shù)據(jù).

      如果您在./backup.sql中有數(shù)據(jù)的mysqldump,則可以執(zhí)行以下操作:

      $docker run -e MYSQL_DATABASE=DB_NAME -e MYSQL_ROOT_PASSWORD=password -d --name my-mysql -v ./backup.sql:/docker-entrypoint-initdb.d/backup.sql -p 3306:3306 mysql:latest

      完成后,刪除容器及其卷.

      $docker rm -v my-mysql
      來(lái)源:https://www./content-2-259751.html

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多