TutorialsTypetalk検索...ヌーラボについてヌーラボは最先端のコラボレーションツールを開発する集団です。Developmentこんにちは。Cacooチームのイニエスタこと、とおのぶです。CacooはデータベースのPostgreSQLのバージョンアップを実施しました。基本的には公式のpg_upgradeの手順に従っています。ここではドキュメントには記載の少ない具体的な作業内容の流れを紹介したいと思います。コア・バリューで記されたとおり、全体的なパフォーマンスの向上については重要度の高い課題の一つです。9.5ではソート性能の大幅な改善が強化点の一つで、パフォーマンスの改善が見込まれます。9.5の魅力の一つです。構成は、マスタとスレーブのストリーミング・レプリケーションの構成です。pg_stat_replicationで、WALのプライマリの送出済みの位置とスタンバイ側でのディスクへの書き込み済みの位置を確認します。大きく位置が異なってないことを確認します。最初に、上図のとおりにもう一つスレーブとカスケーディングスレーブを作成し、そのセットをアップグレードする方針としました。アップグレード作業に何らかの問題が発生した場合に備えるためです。することで、万が一、失敗したとしても、アプリケーションの接続を既存の稼働環境に切り替えれることができるので、元の状態に戻すことが簡単にできます。それぞれに、バージョン9.3とバージョン9.5をインストールしておく必要があり、この段階ではバージョン9.3で動作させ続けます。今回は9.3をソースからインストールし、9.5をパッケージからインストールしました。後述のpg_upgradeで、9.3と9.5両方のバイナリが必要になるためです。新しく作ったスレーブのみでinitdbで9.5用にデータベースクラスタを初期化します。カスケーディングスレーブでは初期化する必要ありません。スレーブをマスターに昇格させるマスターとスレーブの最終チェックポイントの位置が同じかpg_controldataで確認します。promoteを実施します。昇格したマスターをバージョン9.5にする準備は整いました。新マスターと新スレーブが止まっていることを確認して、pg_upgradeを実施してバージョンアップします。成功すると、9.5で動作できます。9.5で起動、停止する必要があります。スレーブをバージョン9.5にするスレーブのバージョンをあげるためには、データベースクラスタのディレクトリをrsyncでコピーします。Cacooでは複数のVolumeで構成されています。Volumeごとにrsyncする必要がありました。slave:/tblspc/データ量に依存しますが、それぞれ数秒程度で終わりました。rsyncがすべて完了すると、スレーブが9.5で動作できます。統計情報を収集するpg_upgradeではオプティマイザの統計情報を移行しないため、最後に、analyze_new_cluster.shを実施して統計情報を収集します。pg_upgradeを実行したディレクトリに生成されるanalyze_new_cluster.shを実行しましょう。これは内部的にはvacuumdbを実行し統計情報を生成します。pg_upgradeのマニュアルには記載ありませんが、pg_upgradeの処理では統計情報が生成されないので、既に稼働している実サービスでは絶対に行なうことをおすすめします。DriverのバージョンアップやProtocolバージョンの変更も行っています。このあたりは、反響があればまた書くつもりなので、よろしければ、はてなブックマークやTwitterなどで、感想をいただければと思います。現在、CacooではHTML5への移行も進んでいますが、バックエンド側の処理の一部も一新しようとしています。一緒にCacooをよりよくするエンジニアも募集していますのでぜひご応募下さい。Reserved.EnglishEnglish。