PostgresqlでDBの名称を変更してほしい、という依頼はちょくちょく来ます。
と、いうのもテストサーバー(EC2上)に複数のPostgresを立てているのですが、テストケースによってデータの投入をする、増加・減少させる、ということでDB毎複製させる、ということも多々。で、フロントなりバックなりのコードを変更するのが大変だから、とDB名を入れ替える、という。
-
DB名を変更する前に確認事項
- 変更対象DBが作成されているか(mst/slvとも)
- 変更対象DBに接続されているセッションが存在しないか
-
存在確認
SELECT pid, usename, application_name, client_addr FROM pg_stat_activity WHERE datname = 'データベース名';
- 存在していた場合はkill
SELECT pg_terminate_backend(pid);
-
-
DB名変更手順
- Postgresqlのstreaming設定を止める
1.rootユーザーで ステータス確認 systemctl status postgresql サービス停止 systemctl stop postgresql Posサービス開始 systemctl start postgresql
- DB名の変更
ALTER DATABASE 変更後DB名 RENAME TO 変更前DB名;
というシンプルなものですね。
Posのmst−slv 間でStreamingを行っている場合はまず、止める。
その後変更したいDBにセッションが存在するかを確認し、あったら切る。
で、ALTER文で名称を変更。
Posは名称変更含め、設定変更が簡単です。