PostgreSQLのバックアップコマンドのまとめ【pg_dumpの紹介】

PostgreSQLのバックアップコマンドのまとめ【pg_dumpの紹介】

 

★悩み★
・PostgreSQLをバックアップするためのコマンドや方法を知りたいな。
・コマンドでPostgreSQLをバックアップする方法って何があるのだろうか?
・PostgreSQLをpg_dumpコマンドでバックアップする手順を知りたい。



こういった「悩み」に答えます。
 

★本記事の内容★
① PostgreSQLのバックアップとは?方法は?
② PostgreSQLのバックアップ運用方法
③ PostgreSQLをpg_dumpコマンドでバックアップする手順



これからご紹介する「PostgreSQLのバックアップコマンドのまとめ【pg_dumpの紹介】」を実践したことで、30分以内で「PostgreSQLが提供しているバックアップコマンドの理解」と「pg_dumpコマンドを用いてPostgreSQLをバックアップ」できました。
 

記事の前半では「PostgreSQLをバックアップする方法とその際に利用するコマンド」を解説します。
記事の後半では「pg_dumpコマンドを用いたPostgreSQLのバックアップ手順」を紹介します。
 

この記事を読み終えることで、「PostgreSQLのバックアップ方法の種類の把握」と「PostgreSQLをバックアップできる」状態になります。
 

ちなみに、pg_restoreコマンドやpsqlコマンドを利用したPostgreSQLのリストア手順を知りたい方は、以下の記事をご覧ください。
 


 

 


 

PostgreSQLのバックアップとは?方法は?

PostgreSQLのバックアップとは?方法は?


「PostgreSQLのバックアップとは?方法は?」に関してご紹介します。
 

★PostgreSQLのバックアップ方法に関するご紹介事項★
・PostgreSQLのバックアップとは?
・PostgreSQLをバックアップする方法とは?コマンドでできる?



以降で、上記「PostgreSQLのバックアップ方法に関するご紹介事項」の各項目に関してご説明します。
 

PostgreSQLのバックアップとは?

「PostgreSQLのバックアップとは?」に関して説明します。
 

データは大事な資産です。その資産をいつでも復旧できるようにPostgrSQLでは、「バックアップ機能」を提供しています。



PostgreSQLには、以下の「3つ」のバックアップの種類があります。
 

バックアップの種類メリットデメリット
オフライン 物理バックアップ・手順が簡単・運用中にバックアップ不可
・復旧時点はバックアップ時点
オンライン 物理バックアップ・運用中にバックアップ可能
・任意の時点にリカバリ可能
・手順が複雑
オンライン 論理バックアップ・運用中にバックアップ可能
・手順が簡単
・復旧時点はバックアップ時点
PostgreSQLのバックアップの種類



それぞれのバックアップの特徴(メリット/デメリット)を把握した上で、適切なPostgreSQLのバックアップ機能を利用しましょう。
適切なバックアップ種類の選び方に関しては、以降でご説明します。
 

以上が、「PostgreSQLのバックアップとは?」となります。
 

PostgreSQLをバックアップする方法とは?コマンドでできる?

「PostgreSQLをバックアップする方法とは?コマンドでできる?」に関して説明します。
 

「オフライン/オフライン物理バックアップ」「オンライン 論理バックアップ」で利用するコマンドやツールをご紹介しますね。



以下のコマンドやツールを使うことで、PostgreSQLの「オフライン/オフライン物理バックアップ」「オンライン 論理バックアップ」を実現できます。
 

バックアップの種類利用コマンド利用ツール
オフライン 物理バックアップcpなどのOSコマンド
オンライン 物理バックアップ・pg_basebackup
・pg_start_backup/pg_stop_backup
オンライン 論理バックアップ・pg_dump
・pg_dumpall
・SQLのCOPYコマンド
・pgAdmin
・WebAdmin
PostgreSQLをバックアップする際に利用するコマンドやツール



以上が、「PostgreSQLをバックアップする方法とは?コマンドでできる?」となります。
 

ちなみに、PostgreSQLのバックアップの詳細を知りたい方には、以下の公式サイトがおすすめです。
参照:PostgreSQLのバックアップについて(公式サイト)

 

「PostgreSQLのバックアップには3種類あること」や「バックアップをする方法として、コマンドやツールがあること」を覚えておきましょう。


 

PostgreSQLのバックアップ運用方法

PostgreSQLのバックアップ運用方法


「PostgreSQLのバックアップ運用方法」に関してご紹介します。
 

★PostgreSQLのバックアップ運用方法に関するご紹介事項★
・PostgreSQLのバックアップ方法の選び方
・PostgreSQLのバックアップコマンドを定期的に実行する方法



以降で、上記「PostgreSQLのバックアップ運用方法に関するご紹介事項」の各項目に関してご説明します。
 

PostgreSQLのバックアップ方法の選び方

「PostgreSQLのバックアップ方法の選び方」に関して説明します。
 

PostgreSQLの3つのバックアップのうち、「どのバックアップ方法を選べば良いか?」に関して説明しますね。



「PostgreSQLが停止可能か」や「どの時点まで復旧したいのか」の観点で、PostgreSQLのバックアップ方法を選択します。(下図参照)
 

PostgreSQLのバックアップ方法の選び方



以上が、「PostgreSQLのバックアップ方法の選び方」となります。
 

PostgreSQLのバックアップコマンドを定期的に実行する方法

「PostgreSQLのバックアップコマンドを定期的に実行する方法」に関して説明します。
 

PostgreSQLの「オフライン物理バックアップ(cpコマンドなど)」と「オンライン論理バックアップ(pg_dumpなど)」を定期的に実行する方法を説明しますね。



「オフライン物理バックアップ」や「オンライン論理バックアップ」を定期的に実行したい場合、「Cron」を利用しましょう。
 

「Cronの使い方」に関しては、以下の記事をご覧ください。
 



以上が、「PostgreSQLのバックアップコマンドを定期的に実行する方法」となります。
 

PostgreSQLのバックアップ運用方法として、「バックアップの選び方」や「定期的にコマンドを実行する方法」をご紹介いたしまさいた。以降で、「pg_dump」を使ったPostgreSQLのバックアップ手順に関して説明しますね。


 

PostgreSQLをpg_dumpコマンドでバックアップする手順

PostgreSQLをpg_dumpコマンドでバックアップする手順


「PostgreSQLをpg_dumpコマンドでバックアップする手順」に関してご紹介します。
 

★PostgreSQLをpg_dumpコマンドでバックアップに関するご紹介事項★
・PostgreSQLのバックアップコマンド「pg_dump」の概要
・PostgreSQLをpg_dumpコマンドでバックアップするための準備
・PostgreSQLをpg_dumpコマンドでバックアップする手順



以降で、上記「PostgreSQLをpg_dumpコマンドでバックアップに関するご紹介事項」の各項目に関してご説明します。
 

PostgreSQLのバックアップコマンド「pg_dump」の概要

『PostgreSQLのバックアップコマンド「pg_dump」の概要』に関して説明します。
 

★PostgreSQLのバックアップコマンド「pg_dump」に関するご紹介事項★
・PostgreSQLのバックアップコマンド「pg_dump」とは?
・pg_dumpコマンドとpg_dumpallコマンドの違いについて



以降で、上記「PostgreSQLのバックアップコマンド「pg_dump」に関するご紹介事項」の各項目に関してご説明します。
 

PostgreSQLのバックアップコマンド「pg_dump」とは?

「PostgreSQLのバックアップコマンド「pg_dump」とは?」に関してご説明します。
 

pg_dumpは、PostgreSQL専用のコマンドです。PostgreSQLをインストールすることで、利用できるコマンドです。



PostgreSQL内に作成したデータベースをバックアップするコマンドとして、「pg_dump」コマンドがあります。
 

PostgreSQLをインストールすることで、下記のPATHに「pg_dump」コマンドが格納されます。

【Windowsの場合】
 C:\Program Files\PostgreSQL\XX\bin\pg_dump.exe
 ※PostgreSQLのインストール先をデフォルト状態にした場合(XXは、PostgreSQLのバージョン名)
  

【Linux系の場合】
 /usr/pgsql-13/bin/pg_dump
 ※PostgreSQLのインストール先をデフォルト状態にした場合(13は、PostgreSQLのバージョン名)



pg_dumpコマンドのコマンドリファレンス(引数などのオプション)は、以下の公式サイトをご覧ください。
参照:PostgreSQLのバックアップコマンド「pg_dump」のコマンドリファレンス
 


以上が、『PostgreSQLのバックアップコマンド「pg_dump」とは?』となります。
 

pg_dumpコマンドとpg_dumpallコマンドの違いについて

「pg_dumpコマンドとpg_dumpallコマンドの違いについて」に関してご説明します。
 

pg_dumpコマンドと似たコマンドとして、「pg_dumpall」があります。



PostgreSQLをインストールすることで、下記のPATHに「pg_dumpall」コマンドが格納されます。

【Windowsの場合】
 C:\Program Files\PostgreSQL\XX\bin\pg_dumpall.exe
 ※PostgreSQLのインストール先をデフォルト状態にした場合(XXは、PostgreSQLのバージョン名)
  

【Linux系の場合】
 /usr/pgsql-13/bin/pg_dumpall
 ※PostgreSQLのインストール先をデフォルト状態にした場合(13は、PostgreSQLのバージョン名)



pg_dumpallコマンドを利用することで、PostgreSQL内に作成された全てのデータベースとユーザーをバックアップできます。
ちなみに、pg_dumpコマンドとpg_dumpallコマンドの違いは以下となります。
 

★pg_dumpコマンドとpg_dumpallコマンドの違いのまとめ★
・pg_dump
 → PostgreSQL内に作成した1つのデータベースをバックアップする
・pg_dumpall
 → PostgreSQL内に存在する全データベースとユーザをバックアップする



pg_dumpallコマンドのコマンドリファレンス(引数などのオプション)は、以下の公式サイトをご覧ください。
参照:PostgreSQLのバックアップコマンド「pg_dumpall」のコマンドリファレンス
 

ちなみにpg_dumpallコマンドのソースコードを確認したところ、pg_dumpallの内部処理では、「pg_dump」コマンドを複数回実行しています。
pg_dumpallコマンドのソースコード
 


以上が、「pg_dumpコマンドとpg_dumpallコマンドの違いについて」となります。
 

PostgreSQL内に作成したデータベースをバックアップする場合、pg_dumpコマンド、または、pg_dumpallコマンドを使用しましょう。


 

PostgreSQLをpg_dumpコマンドでバックアップするための準備

「PostgreSQLをpg_dumpコマンドでバックアップするための準備」に関してご紹介します。
 

★PostgreSQLをpg_dumpコマンドでバックアップするための準備★
手順1:PostgreSQLのインストール
手順2:インストールしたPostgreSQLにデータを挿入



上記の流れで、「PostgreSQLをpg_dumpコマンドでバックアップするための準備」ができます。
 

上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年7月18日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)



以降で、上記「PostgreSQLをpg_dumpコマンドでバックアップするための準備」の各手順に関してご説明します。
 

手順1:PostgreSQLのインストール

「手順1:PostgreSQLのインストール」に関してご説明します。
 

PostgreSQLのバックアップコマンド「pg_dump」を実行するためにも、PostgreSQLをインストールしましょう。



「PostgreSQLのインストール手順」に関しては、以下の記事をご覧ください。

>>【Ubuntu向け】PostgreSQL15を4手順でインストールする方法

>>【コピペOK】PostgreSQL15を5手順でインストールする方法

>>【5分でわかる】Windows版PostgreSQLのインストール方法

>> PostgreSQL Operator(Zalando)をKubernetesで使う手順



以上で、「手順1:PostgreSQLのインストール」は完了です。
 

手順2:インストールしたPostgreSQLにデータを挿入

「手順2:インストールしたPostgreSQLにデータを挿入」に関してご説明します。
 

pg_dumpコマンドでバックアップするためにも、PostgreSQL内にデータベースを作成しデータを登録しましょう。



「インストールしたPostgreSQLにデータを挿入する手順」に関しては、以下の記事「PostgreSQL 13でデータ登録と参照をする方法」をご覧ください。
 



以上で、「手順2:インストールしたPostgreSQLにデータを挿入」は完了です。
 

上記の流れで、「PostgreSQLをpg_dumpコマンドでバックアップするための準備」が完了しました。


 

PostgreSQLをpg_dumpコマンドでバックアップする手順

「PostgreSQLをpg_dumpコマンドでバックアップする手順」に関してご紹介します。
 

★PostgreSQLをpg_dumpコマンドでバックアップするまでの流れ★
手順1:pg_dumpコマンドを実行
手順2:pg_dumpコマンドの実行結果を確認



上記の流れで、「PostgreSQLをpg_dumpコマンドでバックアップ」できます。
 

上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年7月18日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)



以降で、上記「PostgreSQLをpg_dumpコマンドでバックアップするまでの流れ」の各手順に関してご説明します。
 

手順1:pg_dumpコマンドを実行【PostgreSQLのバックアップ】

「手順1:pg_dumpコマンドを実行」に関してご説明します。
 

PostgreSQL内に作成したデータベースをpg_dumpコマンドでバックアップしてみましょう。



「端末」または「コマンドプロンプト」を起動し、以下のpg_dumpコマンドを実行してください。コマンド内の「<>」と書いてある部分は、自分用に書き換えてください。

# /usr/pgsql-13/bin/pg_dump \
  -U <PostgreSQL内のユーザ名> <バックアップしたいデータベース名> \
  -h <PostgreSQLが稼働しているマシンのIPアドレス> \
  -p <PostgreSQLが利用しているポート番号> > <保存先のPATH>/postgresql_backup.sql
# echo $?
0
# 



コマンド実行後、「0」が表示された場合、「pg_dumpコマンドを利用してPostgreSQLのバックアップが正常にできた」と判断できます。
 

以上で、「手順1:pg_dumpコマンドを実行」は完了です。
 

手順2:pg_dumpコマンドの実行結果を確認【バックアップファイルの確認】

「手順2:pg_dumpコマンドの実行結果を確認」に関してご説明します。
 

pg_dumpコマンドで作成されたPostgreSQLのバックアップファイルの中身を確認しましょう。



pg_dumpコマンドで作成されたPostgreSQLのバックアップファイルを確認するために、以下のコマンドを実行してください。ちなみに、ファイルのサイズが数MB以上である場合、メモ帳やvimなどで開けないことがあります。

# head -n 100 postgresql_backup.sql
--
-- PostgreSQL database dump
--

-- Dumped from database version 12.4
-- Dumped by pg_dump version 12.3

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;

--
-- Name: get_sum; Type: EXTENSION; Schema: -; Owner: -
--

CREATE EXTENSION IF NOT EXISTS get_sum WITH SCHEMA public;


--
-- Name: EXTENSION get_sum; Type: COMMENT; Schema: -; Owner: 
--

COMMENT ON EXTENSION get_sum IS 'simple sum of two integers for postgres extension using c';


SET default_tablespace = '';

SET default_table_access_method = heap;

--
-- Name: album; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE public.album (
    album_id text NOT NULL,
    title text NOT NULL,
    latitude text,
    longitude text,
    address_full_text text,
    description text
);



上記のようなSQLが羅列されている場合、「正常にpg_dumpコマンド経由でPostgreSQLのバックアップファイルを作成できた」と判断できます。
 

以上で、「手順2:pg_dumpコマンドの実行結果を確認」は完了です。
 

上記の流れで、PostgreSQLに作成したデータベースをpg_dumpコマンドでバックアップできました。



ちなみに、「PostgreSQLのアーキテクチャを体系的に学びたい」や「その他のPostgreSQLのコマンドを知りたい」方は、以下の参考書がオススメです。


 

【まとめ】PostgreSQLのバックアップコマンドのまとめ【pg_dumpの紹介】

【まとめ】PostgreSQLのバックアップコマンドのまとめ【pg_dumpの紹介】


いかがでしたでしょうか?
「PostgreSQLのバックアップ方法・バックアップコマンド」や「pg_dumpコマンドを使ったPostgreSQLのバックアップ手順」を解説し、以下の悩みを解決しました。
  

★悩み★
・PostgreSQLをバックアップするためのコマンドや方法を知りたいな。
・コマンドでPostgreSQLをバックアップする方法って何があるのだろうか?
・PostgreSQLをpg_dumpコマンドでバックアップする手順を知りたい。



ぜひあなたも本記事を参考に「コマンドを用いて、PostgreSQLのバックアップ」を実践してみてください。
 

 


 

コメント

タイトルとURLをコピーしました