PostgreSQLの設定 チューニング¶ PostgreSQL when it is not your job - Christophe Pettus 経由で DjangoCon Europe 2012 で発表された このスライド を知ったので、 メモ代わりに残してみる。件のblogは抜粋なので、ここでは可能な限り全部載 せます。 最初に¶ 気をつける設定はこれだけ。 ログ メモリ チェックポイント プランナー ログ¶ ログに対して寛容になること。システムへの影響は少ない。 ログは性能問題を解決するための一番いい情報。 どこにログを出す?¶ syslog: すでにsyslogを使うシステムを構築してるならこれがいいでしょう 標準形式のファイル: 標準形式のファイルを使うツールをすでに使っていればこれ。 そうでなければ CSVフォーマット あとの設定はこれ。 log_destination
本記事では、オンプレミス、または、EC2にインストールされているPostgreSQLからRDS for PostgreSQLにユーザを移行する際に発生するエラーについて記載します。この権限エラーは、移行元のPostgreSQLに存在するユーザの設定次第で発生し、そのままだと移行することができません。 ユーザ移行時に発生する権限エラー pg_dumpall等を用いてユーザを移行するためのSQL文を発行し、それをそのままRDSで実行すると、次のような権限エラーが発生することがあります。本記事では、このエラーに対応するのが目的です。 ユーザ移行時の権限エラー例 ERROR: must be superuser to alter superusers ERROR: must be superuser to alter replication users ご参考までに、今回検証に利用したユーザの情報
プラハという会社でサーバ・インフラをメインに開発している@revenue-hackです。 現在弊社ではマルチテナントを使った新規サービスを開発していて、どの様にしてマルチテナントを解決したかをご紹介したいと思います。 マルチテナントの種類 マルチテナントでは一般的に3つの対応の仕方があります。 データベース分離方式(インスタンスごと分ける場合と分けない場合) 単一データベース個別スキーマ方式 単一データベース共通スキーマ方式 これらはそれぞれメリット・デメリットがあるのですが、弊社では最後の3つ目の方式を採用しています。 理由としてはすくないリソースでサービス提供できる点、DBマイグレーションコストを避ける点です。 特にまだMVPを目指している段階で他の方法を採用するのはコスト面では折り合いがつかないため、これを採用しました。 これらのマルチテナントの種類に関してはいくつかネットに文献が載
PostgreSQL では複数のデータベースを管理することができます。インストールした直後などはテンプレート用のデータベースである template0 と template1 、そして postgres という名前のデータベースが作成されます。(これらデータベースが集まったものもデータベースクラスタと呼んでいます)。 データベースは作成する権限があれば新規で追加することができます。 PostgreSQLにおいて実際のデータはテーブルに格納されます。テーブルは目的に応じて複数作成することができ、それをまとめているのがデータベースですが、さらに PostgreSQL ではデータベースの中にスキーマと呼ばれるものがあります。 スキーマはデータベースに作成されるテーブルや関数といったオブジェクトをグループ化するものです。スキーマが異なれば同じデータベース内であっても同じテーブル名でテーブルを作成す
問題 CREATE TABLE文を実行すると、(書いてて思ったけど、UUID v4、255byteもなくていいな) CREATE TABLE "users" ( "id" varchar(255) DEFAULT uuid_generate_v4(), "name" text, PRIMARY KEY ("id") ) 以下のようにしかられる ERROR: function uuid_generate_v4() does not exist uuid_generate_v4とは PostgreSQL: Documentation: 9.5: uuid-ossp The uuid-ossp module provides functions to generate universally unique identifiers (UUIDs) using one of several stan
まずはpg_upgradeのドキュメントに目を通す。 以下は、Windows8.1 上で、PostgreSQL9.4 から 9.5.4 に pg_upgrade した時の手順。 1.旧バージョンのpostgresサービスを停止 2. 新バージョンのバイナリーをインストール ※EnterpriseDBの x86-32版 を使用した。当然、旧バージョンのもx86-32版。 3. 新バージョンのpostgresサービスを停止 4. pg_hba.confの編集 新旧DBクラスタのpg_hba.confの上の方に以下の行を入れる。 5. pg_upgradeを実行 管理者としてコマンドプロンプトを起動し、Everyone書き込み可能なディレクトリに cd する。 ※ProgramFilesやWindows配下とかじゃなければ、ほぼどこでも大丈夫なはず。参考 ※pg_upgradeはカレントディレク
2010/09/20に正式リリースされたPostgreSQL9.0ですが、大幅な機能強化がなされてますね。 PostgreSQL 9.0 に関する技術情報 - SRA OSS, Inc. 日本支社 個人的に大きなポイントだと思っている項目がいくつかありますが、その中でも ストリーミングレプリケーション ホットスタンバイ の組み合わせは実運用でもかなり使いたいと思っています。 ストリーミングレプリケーションは、WAL(アーカイブログ)の転送タイミングがより細かくなったことで、レプリケーションしているDBのスタンバイ側の更新遅延が少なくなるというもの。ホットスタンバイは、同じくスタンバイ側で参照系のクエリを受け付けられるようになるというものです。以前試したウォームスタンバイの場合、スタンバイ中はDB接続できませんでしたから、レプリケーションしつつ参照用DBとして活用できるようになりそうです。
要点 MySQL 用語の「マスター」と「スレーブ」を、PostgreSQL 用語では「マスター」と「スタンバイ(standby)」と呼ぶ。 レプリケーションには「非同期(async)」と「同期(sync)」の区別がある。可用性を上げたいなら「同期」を選択する。 pg_basebackup コマンドを利用すると、マスターを停止させずにスタンバイを構築できる。 PostgreSQL 9.4 で導入された「ロジカルレプリケーション」、「レプリケーションスロット」を活用すべし。 PostgreSQL 12 でレプリケーションに関する重要な仕様変更が行われた。本稿末尾に「PostgreSQL 12 のための追記」という節を追加した。(2020-09-06) 参考資料 http://www.atmarkit.co.jp/ait/articles/1411/13/news004_3.html http:
今回はVM2台を使用したPostgreSQLのレプリケーション環境の構築手順について説明します。 前提 VirtualBoxでVMを2台使用します。 2台のVMでは、CentOS 7でPostgreSQLのインストール手順の「3-1. ~/.bash_profileを編集」まで実施します マスタとして構築するVMでは「3-2. DBクラスタ作成」まで実施します。 以降の作業は全てpostgresユーザを使用します。 1. PostgreSQLの設定ファイルを修正する(マスタのみで実施) 1-1. postgresql.conf レプリケーション用に設定ファイルを修正します。 レプリケーションを行う上で必須なのは wal_level, max_wal_sender の設定です。 # Add settings for extensions here listen_addresses = '*'
※ 新しいバージョンに書き換えました 普段はメインのデータストアとしてMySQLを使用していますが、 9.0以降で実装された新たな機能(ストリーミグレプリケーション、JSONサポート)を体験したく、あらためてPostgresに触れてみようかと思っています。 新機能の所感はのちに触れるとして、今回はインストールからDB接続までを書いてみます。 バージョン MacOSX El Capitan(10.11.6) VirtualBox(5.1.8) Vagrant(1.8.7) Ubuntu(18.04 Bionic Beaver) Postgres(12) 1. 仮想環境構築 こちらを参考に環境を作っておいてください。 2. パッケージのダウンロード一覧にPostgresを追記 $ sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く