首頁>技術>

資料卷的備份與恢復-備份-

注:  -v指定資料卷時,如果資料卷不存在則自動建立。

1.使用nginx基礎映象新啟動一個名為nginx的容器,-v指定資料卷名為web並掛載到nginx容器的/mnt/web目錄

[root@localhost ~]# docker run -itd --name nginx -v web:/mnt/web nginx3e99025339a4600ae7f607fbaafaff9f36bdf8d8533aaa441a42103be4260de5[root@localhost ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES3e99025339a4        nginx               "nginx -g 'daemon of…"   3 minutes ago       Up 3 minutes        80/tcp              nginx[root@localhost ~]# docker volume lsDRIVER              VOLUME NAMElocal               web      //可以看到web資料卷自動建立

2.在名為nginx的容器中新增資料

  可以進入nginx容器中新增,也可以直接使用docker命令新增資料。

[root@localhost ~]# docker exec -it nginx mkdir /mnt/web/test[root@localhost ~]# docker exec -it nginx touch /mnt/web/data.txt[root@localhost ~]# docker exec -it nginx ls /mnt/webdata.txt  test        //可以看到新增的資料夾與文字檔案

3.資料卷備份

命令詳解:

 使用nginx基礎映象新建一個臨時的容器(不放入後臺執行),資料共享容器nginx的資料卷web,並且-v 指定將本機的/root/test目錄掛載到臨時容器的/backup目錄,執行備份命令將臨時容器的/mnt/web目錄打包壓縮到/backup目錄下名為web.tar的備份檔案(因為資料卷web掛載到了nginx容器的/mnt/web目錄,而臨時容器又共享了nginx容器的資料卷web,所以直接打包容器的/mnt/web目錄即可) (因為本機的/root/test目錄掛載到了臨時容器的/backup目錄,所以可以直接在本機的/root/test目錄中查詢備份檔案web.tar即可)

[root@localhost ~]# docker run -it --volumes-from nginx -v /root/test:/backup nginx tar cvf /backup/web.tar /mnt/webtar: Removing leading `/' from member names/mnt/web//mnt/web/test//mnt/web/data.txt[root@localhost ~]# ll -h /root/test/總用量 357M-rw-r--r-- 1 root root  10K 5月  13 02:29 web.tar      //備份資料
-恢復-

1.用nginx基礎映象新啟動一個帶有空資料卷webdata的容器nginxback

[root@localhost ~]# docker run -itd --name nginxback -v webdata:/mnt/web nginx33149ce377ae168d09f69227c8216db731e24593db7f57f0cca594d011a7c9c9[root@localhost ~]# docker volume lsDRIVER              VOLUME NAMElocal               weblocal               webdata    //自動建立的新資料卷(用於恢復資料)[root@localhost ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES33149ce377ae        nginx               "nginx -g 'daemon of…"   3 seconds ago       Up 1 second         80/tcp              nginxback3e99025339a4        nginx               "nginx -g 'daemon of…"   7 minutes ago       Up 7 minutes        80/tcp              nginx

2.資料卷恢復

命令詳解:

 使用nginx基礎映象新建一個臨時的容器(不放入後臺執行),資料共享容器nginxback的資料卷webdata(作用是將web.tar檔案資料恢復至資料卷webdata),並且-v 指定將本機的/root/test目錄掛載到臨時容器的/backup目錄,所以直接執行恢復命令將臨時容器的/backup目錄下名為web.tar的備份檔案恢復至nginxback容器的資料卷webdata中 。

[root@localhost ~]# docker run -it --volumes-from nginxback -v /root/test:/backup nginx tar xvf /backup/web.tarmnt/web/mnt/web/test/mnt/web/data.txt[root@localhost ~]# docker volume lsDRIVER              VOLUME NAMElocal               weblocal               webdata[root@localhost ~]# docker exec -it nginx ls /mnt/web   data.txt  test      //原始資料容器nginx中的資料(資料卷web)[root@localhost ~]# docker exec -it nginxback ls /mnt/webdata.txt  test     //備份資料卷恢復後的nginxback容器中的資料(資料卷webdata)

3.為了驗證web資料卷備份恢復到webdata資料卷的資料,再啟動一個新容器掛載webdata資料卷檢視資料

[root@localhost ~]# docker run -itd --name webtest -v webdata:/mnt/web nginx60e73b319aff246ac2d1debca13b1d7581a056d8a13a9c508ae614f4a58273a5   //啟動新容器webtest,並且-v將webdata資料卷掛載到容器/mnt/web目錄[root@localhost ~]# docker exec -it webtest ls /mnt/webdata.txt  test        //檢視容器webtest中的資料
Mysql容器資料卷的備份與恢復問題???

問題:

   使用上面nginx資料卷備份恢復的方法對mysql容器資料捲進行備份與恢復,在備份與恢復的過程都能夠看到新建的test庫,但是恢復之後資料庫中就是沒有test庫,不知道是什麼問題?有懂的大佬解答一下,萬分感謝!!!

實驗過程:

1.使用mysql基礎映象新啟動一個mysql4容器,-v指定資料卷名為mysql並掛載到mysql4容器的/var/lib/mysql目錄,-e設定mysql4容器資料庫密碼為123。

[root@localhost ~]# docker run -itd --name mysql4 -v mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 mysql    //啟動mysql4容器,-v指定資料卷mysql掛載到/var/lib/mysql目錄,-e設定密碼[root@localhost ~]# docker volume ls    //檢視建立的資料卷DRIVER              VOLUME NAMElocal               mysql[root@localhost ~]# docker ps     //檢視執行的mysql4容器CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES7632976b82d4        mysql               "docker-entrypoint.s…"   6 hours ago         Up 6 hours          3306/tcp, 33060/tcp   mysql4

2.進入mysql4容器並建立新庫test

[root@localhost ~]# docker exec -it mysql4 /bin/bashroot@7632976b82d4:/# mysql -uroot -p123...mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                |+--------------------+4 rows in set (0.68 sec)mysql> create database test;       //建立test庫Query OK, 1 row affected (0.24 sec)mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                || test               |+--------------------+5 rows in set (0.01 sec)

3.資料卷mysql備份

命令詳解:

 使用mysql基礎映象新建一個臨時的容器(不放入後臺執行),資料共享容器mysql4的資料卷mysql,並且-v 指定將本機的/root/test目錄掛載到臨時容器的/backup目錄,執行備份命令將臨時容器的/var/lib/mysql目錄打包壓縮到/backup目錄下名為test.tar的備份檔案(因為資料卷mysql掛載到了mysql4容器的/var/lib/mysql目錄,而臨時容器又共享了mysql4容器的資料卷mysql,所以直接打包容器的/var/lib/mysql目錄即可) (因為本機的/root/test目錄掛載到了臨時容器的/backup目錄,所以可以直接在本機的/root/test目錄中查詢備份檔案test.tar即可)

[root@localhost ~]# docker stop mysql4mysql4[root@localhost ~]# docker run -it --volumes-from mysql4 -v /root/test:/backup mysql tar cvf /backup/test.tar /var/lib/mysqltar: Removing leading `/' from member names/var/lib/mysql//var/lib/mysql/ibdata1/var/lib/mysql/ib_logfile1/var/lib/mysql/#ib_16384_0.dblwr/var/lib/mysql/#ib_16384_1.dblwr.../var/lib/mysql/1d90619790ec.err/var/lib/mysql/binlog.000001/var/lib/mysql/binlog.000002/var/lib/mysql/test//var/lib/mysql/binlog.000003/var/lib/mysql/binlog.000004/var/lib/mysql/binlog.000005/var/lib/mysql/binlog.000006/var/lib/mysql/binlog.000007/var/lib/mysql/binlog.000008/var/lib/mysql/binlog.index/var/lib/mysql/ib_buffer_pool[root@localhost ~]# ll -h /root/test/       //檢視備份檔案總用量 172M-rw-r--r-- 1 root root 172M 5月  12 22:38 test.tar

4.資料卷恢復

[root@localhost ~]# docker run -itd --name mysql_back -v mysqltest:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 mysql246f59e233116c3b0e8a8d041f3ca7b4b5096ca170ebb0e2fac586236c92d4b7   //啟動新容器mysql_back,將空資料卷mysqlback掛載至容器的/var/lib/mysql目錄[root@localhost ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES246f59e23311        mysql               "docker-entrypoint.s…"   4 seconds ago       Up 3 seconds        3306/tcp, 33060/tcp   mysql_back[root@localhost ~]# docker volume lsDRIVER              VOLUME NAMElocal               mysqllocal               mysqlback[root@localhost ~]# docker run -it --volumes-from mysql_back -v /root/test:/backup mysql tar xvf /backup/test.tar -C /var/lib/mysqlvar/lib/mysql/var/lib/mysql/ibdata1var/lib/mysql/ib_logfile1var/lib/mysql/#ib_16384_0.dblwrvar/lib/mysql/#ib_16384_1.dblwrvar/lib/mysql/undo_001var/lib/mysql/undo_002var/lib/mysql/ib_logfile0var/lib/mysql/#innodb_temp/var/lib/mysql/#innodb_temp/temp_1.ibtvar/lib/mysql/#innodb_temp/temp_2.ibtvar/lib/mysql/#innodb_temp/temp_3.ibtvar/lib/mysql/#innodb_temp/temp_4.ibtvar/lib/mysql/#innodb_temp/temp_5.ibtvar/lib/mysql/#innodb_temp/temp_6.ibtvar/lib/mysql/#innodb_temp/temp_7.ibtvar/lib/mysql/#innodb_temp/temp_8.ibtvar/lib/mysql/#innodb_temp/temp_9.ibt...var/lib/mysql/test/        ------》可以看到恢復的時候有test庫var/lib/mysql/binlog.000003var/lib/mysql/binlog.000004var/lib/mysql/binlog.000005var/lib/mysql/binlog.000006var/lib/mysql/ib_buffer_poolvar/lib/mysql/ibtmp1var/lib/mysql/binlog.000007var/lib/mysql/binlog.index[root@localhost test]# docker exec -it mysql_back /bin/bashroot@2ffefb7516b9:/# mysql -uroot -p123    //檢視新容器mysql_back進行資料卷恢復後資料庫中的資料...mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                |     ----》資料庫中無test庫????+--------------------+4 rows in set (0.07 sec)root@8fff18326739:/# ls /var/lib/mysql/'#ib_16384_0.dblwr'   auto.cnf        ca.pem            ib_logfile1   performance_schema   sys'#ib_16384_1.dblwr'   binlog.000001   client-cert.pem   ibdata1       private_key.pem      test'#innodb_temp'        binlog.000002   client-key.pem    ibtmp1        public_key.pem       undo_001 509ca1ee2a1b.err     binlog.index    ib_buffer_pool    mysql         server-cert.pem      undo_002 8fff18326739.err     ca-key.pem      ib_logfile0       mysql.ibd     server-key.pem       var
如果你覺得這篇文章還不錯,就請動動你的發財手為本文點贊-評論-轉發吧,因為這將是我持續輸出更多優質文章的最強動力,謝謝!

16
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • C語言指標訪問陣列基礎知識,理解各種符號的意義