背景
Raspberry Pi 4 (8GB) を購入し、PostgreSQL のサーバにしたいと思いました*1。MicroSDの容量は限られているのと、データベースのようなアクセス頻度が高いものをMicroSDに置いた場合のカードの寿命を考え*2、外付けHDDにデータを置きたいと考えました。
環境
$ uname --all Linux yellowmoon 5.4.0-1018-raspi #20-Ubuntu SMP Sun Sep 6 05:11:16 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux $ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.1 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.1 LTS" VERSION_ID="20.04"
方法
以下の手順を踏みます。なお、外付けHDDをマウントしたディレクトリを /mnt/foobar
とします。
1. PostgreSQL を一旦止める
$ sudo service postgresql stop
2. 既存のデータディレクトリを外付けHDDに移す
パーミッションも一緒に移します。念のため、元データは残したままにしておきましょう。
$ sudo rsync -avuz /var/lib/postgresql /mnt/foobar
3. postgresql.conf に書いてある data_directory の項目を書き換える
postgresql.conf
の場所はインストールされている PostgreSQL のバージョンにより異なります。バージョンが 12
の場合は以下の場所になります。
/etc/postgresql/12/main/postgresql.conf
上記のファイルを編集します。data_directory
の箇所をデフォルトの場所から外付けHDDの場所に変更します。postgresql/12/main
まで含むことに注意です(postgresql
までで終わりにしない)。
data_directory = '/mnt/foobar/postgresql/12/main'
4. PostgreSQL を起動します
無事起動できれば OK です。
$ sudo service postgresql start
補足
ユーザディレクトリも外付けHDDに置いておくといろいろと安心で便利です。