DELOGs
アプライアンスDBのディスク容量を拡張する

アプライアンスDBのディスク容量を拡張する

さくらのクラウドのアプラアンスDBのディスク容量を増やす方法

初回公開日

最終更新日

今回は、さくらのクラウドのアプラアンスDBのディスク容量を増やしてみます。
Webサーバのディスク容量と同様にこれも一度経験しておけば、次からは安心して作業ができるので、まだ容量に余裕がある段階ですが、とりあえず一度やってみたいと思います。
当サイトではさくらのクラウドを使用していますので、その実践記録になります。今回は10GBのDBのディスク容量を30GBへ拡張します。また、OSはUbuntu 24.04.XX LTSです。アプライアンスDBはPostgreSQL13になります。
大枠の手順は下記の通りです。
  • 最新のバックアップを作成
  • クローンDBを作成
  • DB利用ツールのIPアドレスを変更
  • 旧DBの停止と新DBへの接続確認
  • 旧DBを削除
アプライアンスDBのプラン変更で簡単にディスク容量を増やせればいいのですが、これができなかったです。
クローンDBを作成する際に容量を増やす方法をとっています。この方法だと新規作成するDBは、IPアドレスがコピー元になる10GBのDBと異なることになります。
これは少し厄介です。各種ツールの設定を確認して変更する必要があるからです。Webサーバのディスク拡張の時にはなかった問題です。アプラアンスDBは、サーバ管理不要、他領域への自動バックアップなどのメリットが大きいのですが、反面、ディスク拡張という点では、少し面倒なデメリットがあるというのが、実際やってみての感想です。
また、Webサーバの時と同様に注意が必要なのは、ディスク容量を拡張するのは今回の手順で比較的簡単にできるのですが、逆に容量を減らすことは別の方法を用いることになります。これは少し大変そうです。安易に容量を増やすと費用も増えますので、予算を考慮して慎重に検討して実行する必要があります。
もう一点、今回、当サイトの環境のDBのディスク容量を上げますが、ローンチ前に作業しています。そのため、WebサーバやアプライアンスDBを稼働させたまま作業しています。稼働中のサービスについて作業される方は、データの齟齬発生を防ぐために念の為にWebサーバなどは一旦シャットダウンさせて作業する方が安全だと思います。クローンDB作成には、当サイトのようにまだ100KB程度しか使っていない状態でも、7分ほどかかりました。規模の大きなサイトですと、結構時間がかかると思われます。

1.最新のバックアップを作成

さくらのクラウドでは、クローンDBを作成する場合、コピー元となるDBの最新のバックアップから作成される仕様です。したがって、まず、最新のバックアップを手動で作成します。 さくらのクラウドの管理画面から作業していきます。
一旦、アプライアンスDBの一覧を表示します。サイドメニューの「アプライアンス」から「データベース」をクリックします。
DB一覧
上記のようにバックアップを作成するDBの右端にある▼をクリックして表示されるメニューから「詳細」をクリックします。
もし、下記のようにバックアップ数が上限いっぱいの場合、まずは一番古いバックアップを1つ削除します。 バックアップの削除は該当バックアップの右端にある▼をクリックして表示されるメニューから「バックアップを削除」をクリックします。 バックアップの削除
バックアップ数に空きがある状態になると、下部に「追加」ボタンが表示されるようになります。これをクリックして最新のバックアップを作成します。 バックアップの追加
最新のバックアップの作成が完了したら、準備完了です。

2.クローンDBを作成

バックアップ作成画面で、対象DBの詳細画面が開かれた状態で、クローンDBを作成します。 上部メニューの「クローン」をクリックします。 クローンの追加
下記のようにクローン作成画面が表示されます。
クローン元DBが対象DBあることを確認します。デフォルトユーザのID・PWを含めて基本的なデータは全てクローン元DBから引き継がれます。
ディスク容量とIPアドレスを決めて、下部の「作成」ボタンをクリックすると、クローン作成が始まります。 クローンの作成
前述の通り、まだ100KB程度しか使っていないDBですが、クローン作成をスタートして、しっかりと起動状態となるまで、7分間程度かかりました。思ったより時間がかかりました。 クローンの完了

3.DB利用ツールのIPアドレスを変更

次に各種ツールのDBの接続先を変更します。この段階の作業は皆さんの環境によって異なると思います。 私の環境では、PostfixDovecotPM2(node.js&Next.js)の環境設定、クライアントツールではDBeaver、sshコマンドの設定などでDBの接続設定しています。 実は、この段階で私はまだIPアドレス直打ちで設定ファイルを書いていました。なので、逐一修正しなければなりませんでした。 それで、修正と同時にサーバ側の/etc/hostsファイルを利用するようにしました。ああ、最初からわかっていれば。。と後悔したので、当サイトの[サーバ構築編]の該当箇所については、この点を修正しました。サイトローンチ前にわかってよかったです。

/etc/hosts の設定

/etc/hostsには下記のように追記すればOKです。192.168.xx.xxがクローンDBのIPアドレスです。
bash
1sudo vi /etc/hosts
bash : hosts
1# ------------------------------- 2# DB サーバー名エイリアス 3192.168.xx.xx db-master.local 4192.168.xx.xx db-read.local 5# ⚠ Postfix は chroot 環境でこのファイルを参照できないため、 6# 編集したら以下のコマンドで手動でコピーすること! 7# sudo cp /etc/hosts /var/spool/postfix/etc/hosts 8# -------------------------------
db-master.localなど好きな名称をつけます。この名称をIPアドレスの代わりにして各種設定を行うことができます。/etc/hostsは即時反映されますので、編集後にすぐに「名称」側を利用できます。ただ、私の環境ではPostfixもDBを利用していて、このPostfixは/var/spool/postfix/etc/hostsを参照する仕様(デフォルトの仕様)のため、編集後に、毎度sudo cp /etc/hosts /var/spool/postfix/etc/hostsをする必要があり、忘れないように注意書きをコメントで残すようにしました。
また、別途、リードレプリカを作成する予定なので、その設定もとりあえず、今回のクローンDBのIPアドレスで名称を設定しておきました。PostfixDovecotなどリードしかしないツールはdb-read.localの名称を設定時に利用するようにしています。
このように/etc/hostsを利用していれば、このファイルのIPアドレスを変更するだけで、DBの接続設定が完了します。

4.旧DBの停止と新DBへの接続確認

さくらのクラウドの管理画面のDB一覧へ戻ります。旧DBをシャットダウンして新DBへの接続を確認します。
DBのシャットダウンをDB一覧の右端の▼をクリックして表示されるメニューから「シャットダウン」を選択して実行します。
DB停止
旧DBの停止が完了したら、各種の接続状況、データの移行がしっかり行われているかをチェックします。
アプライアンスDBのクローン作成はバックアップも含めてコピーさせているので、非常に安心感があります。

5.旧DBの削除

接続やデータ移行が問題なければ、お金の節約のため、旧DBを削除します。この辺は予算との兼ね合いですが、しっかりと新DBへ接続状況をチェックして、慎重に行います。
停止した旧DBの右端にある▼をクリックして表示されるメニューから「詳細」をクリックします。 DB停止
上部メニューの「データベースを削除」をクリックします。 DB削除
旧DBの削除が完了すれば全行程完了です。
これも一度経験したので、作業自体は単純なので、2回目以降はスムーズにできそうです。
次回はリードレプリカを作成して、マスタ・スレーブ環境を構築してみたいと思います。
この記事の執筆・編集担当
DE

松本 孝太郎

DELOGs編集部/中年新米プログラマー

ここ数年はReact&MUIのフロントエンドエンジニアって感じでしたが、Next.jsを学んで少しずつできることが広がりつつあります。その実践記録をできるだけ共有していければと思っています。