Dockerでmariadbバージョンアップ(詳細編4)
概要編から参照されるための詳細編4。 google cloudでdockerコンテナの永続化領域をgoogle driveへバックアップする コンテナはすべて永続化領域を持たせてる。 前からやってて、業務用の文書やdockerの永続化領域の一部をgoogle driveにzip保管してる。 自分の場合はnariDockerDatってフォルダがその対象。 これをlocal-linuxに展開して使うと、本番データのコピーをいつも使って運用するようになる。 gcpからバックアップの速度 google driveへのzip書き込みはけっこう速い。 gcpの中のxrdpコンテナからrcloneを使ってバックアップするんやけど、rcloneはrsyncみたいな使い勝手でシェルスクリプトから呼び出す。 10GBぐらいのサイズのzipファイルのrclone処理が、3年ぐらい前は10分ぐらいかかってたのが、今は3分もかからない。 https://www.speedtest.net でlocal-linuxのxrdpコンテナが 400〜500Mpbs 出るのが、gcpのxrdpコンテナだと 5000Mbps 速度が出る。 これは、めっちゃくちゃ速い。2022年に測定しなおしたら、また速度上がってた。 測定した数字で10倍以上、xrdpコンテナ内のfirefoxでgoogle drive開いてもgcpの中だと3倍以上速く感じる。 しかもこの速度、曜日で変動したりしない。 ネットワークの障害とかがなければ、いつも同じ。 けど、嬉しがって何度も使ったらアカン。 gcpへのアップロードは課金ないけど、ダウンロードは課金がある。 それがgoogle driveならgcpからのダウンロードやから、コストがかかる。 自分がgcpを使う理由の1つに、バックアップにかかるコストを低く抑えられることがある。 試験利用したのはかなり昔やけど、gcpからgoogle cloudへのバックアップ速度とコストは、awsと組み合わせたときのものよりも安くて済んだから。 gcpやめられまへんなぁ。 永続化領域保管の前に mariadb10.5から10.11へのバージョンアップがうまくいったので、いったん全コンテナ停止してdocker-compose.ymlから現行のmariadbの記述を外す。 永続化領域も一時的に退避して、新しいほうのmariadbだけが動く状態にしておく。 gcpからコンテナの永続化領域をバックアップ 実際のバックアップ処理。 local-linuxのバックアップ処理を流用して作ってて、利用OSを変更する都度内容更新してる。最近はcentos8からubuntu20へ乗り換えた頃やったかな。 いくつかあるSRC_ROOTから、BACKUP_ROOTへ向けてバックアップして、tar.gzしてからzip化する処理を呼び出す。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 #!/bin/sh ## ------------------------------------------------------------------------- ## Script Name : ## Created by : T.Naritomi ## on : 2007.12.20 ## Updated by : 2019.02.14 ## on : ## Parameters : $1 = password ## Return Code : 0=Normal End ## Comments : ## ------------------------------------------------------------------------- ## ---detail---------------------------------------------------------------- SRC_ROOT=/gvis/nari SRC_ROOT1=/nariDocs/Docker SRC_ROOT2=/gvis/log SRC_ROOT3=/gvis/script SRC_ROOT4=/gvis/nari/nariDocs/gvis_conf SRC_ROOT5=/gvis/nari/nariDocs/smb/common SRC_ROOT6=/gvis/nari/nariDocs/smb/*.html SRC_ROOT7=/nariDocs/smb/svm chmod -R 777 /nari/nariDocs/smb/svm BACKUP_ROOT=/gvis/nari/nariDocs/configBackup/01_gcp-gvis-dkLinux LOG_FILE=/gvis/log/001_sysBackup.log echo "-------Backup Start----" `date +%F_%T_`>> ${LOG_FILE} /usr/bin/docker exec docker-sv_mariadb1011-1 /bin/sh /etc/mysql/conf.d/nari/901_nariDB_1st_DDLout.sh cp -p /gvis/nari/nariDocs/Docker/nariDockerDat/sv_mariadb11conf/nari/DDLdefine.txt /gvis/nari/nariDocs/smb/svm/Public/999_その他/ docker images -f dangling=true -q | xargs docker rmi docker volume ls -qf dangling=true | xargs docker volume rm /bin/sh /gvis/script/301_dockerStop.sh rm -f /gvis/nari/nariDocs/Docker/nariDockerDat/cl_ubun18/backup/*.zip rsync -av --delete --exclude='nariDockerSys/' \ --exclude 'nariDockerDat/cl_ubun18/download/gvis/' \ --exclude 'nariDockerDat/cl_ubun18/download/wk_apl/_old' \ --exclude 'nariDockerDat/cl_ubun18/download/wk_memos/_old' \ --exclude 'nariDockerDat/sv_gitlab2023/' \ --exclude 'nariDockerDat/sv_gitlab2024/' \ ${SRC_ROOT}${SRC_ROOT1}/ ${BACKUP_ROOT}/Docker >> ${LOG_FILE} rm -fR ${BACKUP_ROOT}/log rm -fR ${BACKUP_ROOT}/script rm -fR ${BACKUP_ROOT}/gvis_conf cp -pR ${SRC_ROOT2} ${BACKUP_ROOT}/ cp -pR ${SRC_ROOT3} ${BACKUP_ROOT}/ cp -pR ${SRC_ROOT4} ${BACKUP_ROOT}/ rm -f ${BACKUP_ROOT}/nariDocs/smb/*.html rm -fR ${BACKUP_ROOT}/nariDocs/smb/common cp -pR ${SRC_ROOT5} ${BACKUP_ROOT}/nariDocs/smb/ cp -p ${SRC_ROOT6} ${BACKUP_ROOT}/nariDocs/smb/ rsync -av --delete --exclude='.git/' \ ${SRC_ROOT}${SRC_ROOT7}/ ${BACKUP_ROOT}${SRC_ROOT7} >> ${LOG_FILE} /bin/sh /gvis/script/302_dockerStart.sh /bin/sh /gvis/nari/nariDocs/Docker/dockerStart.sh echo "-------After Backup Docker Start------" `date +%F_%T_`>> ${LOG_FILE} /bin/sh /gvis/script/002_makeTar.sh $1 echo "-------Backup End------" `date +%F_%T_`>> ${LOG_FILE} chown -R nari:nari ${BACKUP_ROOT} /bin/sh /gvis/script/gdr-gavannitsales/003_SyncGavannitsales.sh exit 主な内容。 ...