ゾンビDBの作り方 at GCP
概要
毎朝、前の日に本番DBから取ったバックアップを元に復活するDBをGCPでも作りました。
やってることは、
- mysql止める
- 古いvolumeをアンマウント
- 古いvolumeをdetach
- スナップショットから新しいボリュームを作成
- 新しいvolumeをattach
- 新しいvolumeをマウント
- mysql起動
前提条件
実行シェル
#!/bin/bash date=`date +%Y%m%d%H` DESCRIPTION="db-backup-$date" newdisk="zombi-disk" olddisk="zombi-disk" # Stop mysql sudo /sbin/initctl stop mysql # Unmount sleep 60 sudo /bin/umount -l /var/lib/mysql # Detach old volume sleep 60 gcloud compute -q --project "naked.co.jp:api-project-1234567890" instances detach-disk "zombi-db" --disk "$olddisk" --zone "asia-east1-a" # Delete old volume gcloud compute -q --project "naked.co.jp:api-project-1234567890" disks delete "$olddisk" --zone "asia-east1-a" # Create new DB volume sleep 60 gcloud compute -q --project "naked.co.jp:api-project-1234567890" disks create "$newdisk" --size "150" --zone "asia-east1-a" --source-snapshot "$DESCRIPTION" --type "pd-ssd" # Attach new volume sleep 60 gcloud compute -q --project "naked.co.jp:api-project-1234567890" instances attach-disk "zombi-db" --disk "$newdisk" --zone "asia-east1-a" # Remount volume sudo /bin/mount -a # Start mysql sudo /sbin/initctl start mysql
その他
例によって前処理が終わってない場合があったので適当にsleepを入れています。