どのように定期的にLinux上でpostgresqlのデータベースをバックアップする
データベースが操作されるリスクを避けるために、postgresqlのデータベースのバックアップを毎日行う予定です
1. サーバーのアドレスです。
/{br
バックアップサーバーアドレス 10.10.10.101 (架空)
postgresqlのデータベースがあるサーバーのアドレス 10.10.10.100(架空)
バックアップ用のデータベースを別に持っていて、同じサーバーで操作していないため、まず両方のサーバーのネットワークが接続されていることを確認する必要があります。
/{br
私はこれをシェルスクリプトとLinuxに付属するタイムドタスクを使って行いましたが、その手順は以下の通りです。
**
I バックアップ用シェルスクリプトを作成する
**
1. バックアップスクリプトの保存パスを作成します。
mkdir -p /u01/db-bak/2/bak-file
mkdir -p /u01/db-bak/2/bak-file
/u01/db-bak/2/bak-file/allファイルにバックアップ後、/u01/db-bak/2 pgsql.backupにシェルスクリプトを配置したところ、/u01/db-bak/2/bak-file/allファイル
2. シェルスクリプトを準備する
u01/db-bakに移動します。
<未定義
cd /u01/db-bak
バックアップ用シェルスクリプトの作成
vim pgsql-all-backup.sh
シェルスクリプト
#! /binecho "Started performing a backup of the PostgreSql database hrmw! "
echo "backup ing -------------------"
nowtime=$(date +%F+%T)
export PGPASSWORD=123
echo "time:" $nowtime
set timeout 500
/usr/pgsql-11/bin/pg_dump --file "/u01/db-bak/2/bak-file/all/pgsql-all-"$nowtime".backup" --host "10.10. 10.100" --port "5432" --username "postgres" --dbname "hrmw" --verbose --role "postgres" -- format=c --blobs --encoding "UTF8"
echo "Database hrmw Backup ended! "
exit;
nowtime=$(date +%F+%T) -- 現在の時刻
PGPASSWORD='データベースパスワード'
pg_dumpの使用法
~
Usage:
pg_dump [option]... [database name].
~
General options:
-f, --file=FILENAME Output file or directory name
-F, --format=c|d|t|p Output file format (custom, directory, tar
plaintext (default))
-j, --jobs=NUM Performs multiple parallel jobs for backup dumps
-v, --verbose detail mode
-V, --version Output version information and exit
-Z, --compress=0-9 Compression level of the format being compressed
--lock-wait-timeout=TIMEOUT Fails after waiting for table lock timeout
--no-sync write to disk safely without waiting for changes
-? , --help Show this help, then exit
~
Control output content options:
-a, --data-only Dump data only, do not include schema
-b, --blobs Include large objects in dumps
-B, --no-blobs exclude large objects from the dump
-c, --clean Clear (delete) database objects before re-creating
-C, --create Include commands in the dump to create the database
-E, --encoding=ENCODING Dump data encoded in ENCODING form
-n, --schema=SCHEMA Dump only the schema with the specified name
-N, --exclude-schema=SCHEMA does not dump named schemas
-o, --oids Include OIDs in dumps
-O, --no-owner In plaintext format, ignore who owns the recovery object
-s, --schema-only Dump schema only, no data included
-S, --superuser=NAME Use the specified superuser in plaintext format
-t, --table=TABLE Dump only the table with the specified name
-T, --exclude-table=TABLE does not dump tables of the specified name
-x, --no-privileges Don't dump privileges (grant/revoke)
--binary-upgrade can only be used by upgrade tools
--column-inserts Dump data as an INSERT command with column names
--disable-dollar-quoting Remove dollar (symbol) quotes, use SQL standard quotes
--disable-triggers Disable triggers during data recovery only
--enable-row-security Enables row security (only dumps what the user can access)
--exclude-table-data=TABLE Do not dump data from tables with specified names
--if-exists Use IF EXISTS when deleting objects
--inserts dumps data as an INSERT command, not as a COPY command
--load-via-partition-root Load partitions via the root table
--no-comments do not dump comments
--no-publications do not dump releases
--no-security-labels do not dump security label assignments
--no-subscriptions no-dump-subscriptions
--no-synchronized-snapshots Do not use synchronized snapshots in parallel working sets
--no-tablespaces do not dump tablespace allocation information
--no-unlogged-table-data No dumping of unlogged table data
--quote-all-identifiers All identifiers in quotes, even if not keywords
--section=SECTION Backup named sections (pre-data, data, and post-data)
--serializable-deferrable etc. until the backup can run without exceptions
--snapshot=SNAPSHOT Use the given snapshot for the dump
--strict-names requires each table and/or schema to include a schema to match at least one entity
--use-set-session-authorization
Use the SESSION AUTHORIZATION command instead of the
ALTER OWNER command to set ownership
Linkage options:
-d, --dbname=DBNAME Backup of database DBNAME
-h, --host=hostname Hostname of the database server or socket directory
-p, --port=Port number Port number of the database server
-U, --username=name Connect as the specified database user
-w, --no-password Never prompt for a password
-W, --password force password prompt (automatic)
--role=ROLENAME Run SET ROLE before dumping
If no database name is provided, then use the PGDATABASE environment variable
value.
**
II 定期的にクリアバックアップするシェルスクリプトを作成する
**
毎日のデータベースのバックアップは、クリーンアップしないとメモリを食うし、手動でやるのは面倒なので、自動でやらせる。
バックアップシェルと同じパスなので、管理が楽です。
1...シェルスクリプトの準備
u01/db-bakへ移動します。
<未定義
cd /u01/db-bak
削除シェルスクリプトの作成
vim delete-pgbak.sh
シェルスクリプトの削除
#! /binecho "Deleting 8-day old database backup file! "
find /u01/db-bak/2/bak-file/all/ -name "pgsql-all*" -mtime +7 -exec rm -rf {} \;
set timeout 1000
echo " 8 days old database backup file deleted! "
**
III 時間指定タスクの設定
**
1. 時間指定タスクの追加
[root@host-10-10-10-101 db-bak]# crontab -e
毎日23:00にデータベースバックアップスクリプトを実行 毎日23:30に削除スクリプトを実行
30 23 * * * /u01/db-bak/2/delete-pgbak.sh
0 23 * * * /u01/db-bak/2/pgsql-all-backup.sh
2. 時間指定タスクの表示
[root@host-10-10-10-101 db-bak]# crontab -l
30 23 * * * /u01/db-bak/2/delete-pgbak.sh
0 23 * * * /u01/db-bak/2/pgsql-all-backup.sh
**
IV 権限を付与する
**
パーミッションの設定 chmod
chmod +x /u01/db-bak/2/*
**
Vテスト用シェルスクリプト
**
[root@host-10-10-10-101 2]# bash pgsql-all-backup.sh
Start executing a backup of the PostgreSql database hrmw!
backup ing -------------------
Time: 2020-12-17+14:47:53
pg_dump: The last built-in OID is 16383
pg_dump: read extension
pg_dump: Identify extension members
pg_dump: Read mode
pg_dump: Read user-defined table
pg_dump: Read user-defined functions
pg_dump: Read user-defined types
pg_dump: Read procedure language
pg_dump: Read user-defined aggregate functions
pg_dump: Read user-defined operators
pg_dump: Read user-defined access methods
pg_dump: Read user-defined operator sets
pg_dump: Read user-defined operators
pg_dump: Read user-defined text search parsers
pg_dump: Read user-defined text search templates
pg_dump: Read user-defined text search dictionaries
pg_dump: Read user-defined text search configuration
pg_dump: Read user-defined external data wrappers
pg_dump: Read user-defined external servers
......
Database hrmw2 End of backup!
[root@host-10-10-10-101 2]# bash delete-pgbak.sh
Deleting 8-day-old database backup file!
8-day old database backup file deleted!
今回はpostgresqlデータベースのLinux時限バックアップについてです、postgresqlのLinux時限バックアップについては、BinaryDevelopの過去の記事を検索するか、以下の関連記事を引き続きご覧ください、今後ともBinaryDevelopをよろしくお願いします!
関連
-
PostgreSQLのJSONBのマッチングと交差の問題について
-
postgresql 重複データ削除 ケーススタディ
-
PostgreSQLのテーブルをパーティション分割する3つの方法
-
PostgreSQLでバッファキャッシュにデータを読み込む方法
-
postgresqlにおける時間処理のコツ(推奨)
-
Postgresqlのユーザーログインエラーの回数を制限するサンプルコード
-
PostgreSQLでデータの一括インポートのパフォーマンスを向上させるn個の方法を説明します。
-
Postgresqlのデータマージ、複数のデータを1つの操作にマージする。
-
PostgreSQLにおけるsequence、serial、identityの使い方の違いについて
-
Postgresqlのセルフインクリメントidをキーにした場合の重複問題の解決
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PostgreSQLのURL解決方法
-
PostgreSQLのユーザーログイン失敗時の自動ロック解決策
-
PostgreSQLで文字列が対象の文字列を含むかどうかを判断する様々な方法
-
Postgresqlのデータベース権限まとめ
-
postgresql いくつかのメソッドは、要約の重複するデータを削除する
-
Postgresqlのデータは、2つのフィールドを追加し、一意の操作を統合する
-
pgAdmin for postgreSQLでサーバーのデータをバックアップする方法
-
postgreSQLのクエリ結果に自己インクリメントシーケンス演算が追加されました。
-
Postgresqlのシーケンススキップの問題を解決する
-
PostgreSQLのデータベースでLIKE文の効率を確保する方法(推奨)