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は名称変更含め、設定変更が簡単です。