2014-01-01から1年間の記事一覧

pg_bman : Yet another backup tool for PostgreSQL

リモートサーバにデータをバックアップできるpg_rmanみたいなツールを作ってみた。 動機 pg_rmanはとてもよいツールだったのだが、PostgreSQLを置いたサーバにしかバックアップデータを保存できない*1。通常は別サーバにバックアップデータを置くので、実は…

再掲 並列アルゴリズム

5年くらい前に作ったマルチスレッドの分散アルゴリズム群を64bit対応にして再リリース。 ソースコードや使い方はこちらを参照プログラムリスト: Queue "Bringing Practical LockFree Synchronization to 64Bit Applications" by Simon Doherty, Maurice He…

クラッシュセーフなスレーブ

MySQLでslaveをクラッシュセーフ*1にするには、 MySQL 5.6以上 relay_log_recovery=ON relay_log_info_repository=TABLE というセッティングが必要。詳細は"こちら"、翻訳版は"こちら"。 ざっくり言えば、リレーログのreplayと同じトランザクションで、InnoD…

PostgreSQLのリカバリ超入門

"JPUG勉強会の最終回"で「PostgreSQLのリカバリ超入門」という話をした。 "SlideShare:PostgreSQLのリカバリ超入門" WALとかCHECKPOINTとか、オンラインバックアップの原理について、可能な限り簡単に説明したつもり。 ネタ元の「内部構造:WAL」が分かりに…

MariaDB/MySQL C client libraryまとめ

ちょっと勘違いしていたので、まとめ。(2014.12.3追記:以下の書籍にも記述した。) プロトコルバージョン まず、プロトコルから。(少なくとも)MySQL 5.0.20以前から、プロトコルバージョンは"10"。MySQL 5.6.3xもMariaDB 10.0.11も、プロトコルバージョンは1…

MariaDB 10.0 GA記念 ダイナミックカラムって何?

(2014.12.3追記:以下の書籍にも記述した。)(2014.4.16)微妙に反応があるので、PostgreSQLネタ追記。 PostgreSQLには古くから配列型や複合型というのがあって、似たようなことができる。 あと、MariaDBのダイナミックカラムをJSONで取り出すcolumn_jsonなん…

MariaDB 10.0 GA記念 並列レプリケーションって何?

2014年3月末にMariaDB 10.0.10 GAがリリースされて、並列レプリケーション(Parallel replication)が目玉の1つっぽく書かれているので、簡単に解説。(2014.12.3追記:以下の書籍にも記述した。) 並列レプリケーションとはスレーブ側の機能で、従来はSQLスレ…

溜まったアーカイブログを削除する

表題とおり、溜まったアーカイブログを削除するスクリプト*1。ここまでやる意味があるかどうかは別として。 commitやabortした時刻はWALログに記録されているので、pg_xlogdumpを使って「X日以前のWALアーカイブを削除する」スクリプトを書いた。 動作はpg_x…

pg_rmanの挙動

追記(2014.02.19):バグのようです。1.2.2から紛れ込んだ模様。開発者に連絡してもらったので、そのうち直るでしょう。 ドキュメントと違う挙動をしているように見える。 私の解釈が間違っているのか、使い方が間違っているのか?ドキュメントの記述を抜粋。…

VACUUM FULLとREINDEXはいつ行うべきか?

表題のとおり、みなさん「いつ、何をキッカケに実行してますか」という素朴な疑問。 VACUUM FULL ひとつ考えたのがpg_freespacemapを使う方法。以下のSQLを実行するとテーブル"tablename"の空き領域(FreeSpace)の割合が求まる。 SELECT pg_size_pretty(cas…

【はじめたばかりで1/3も書いてない】 OracleとPostgreSQLのシステムビュー/カタログ 比較

自分用メモ。 OracleのシステムビューとPostgreSQLの各種カタログ(テーブルとかビューとか)の対応を緩くまとめる。メモ書きをはじめたばかりで、内容には非常に多くの間違いが混じっているはずので信じないこと。 徐々に完成度を上げていく予定。 (なんとか)…

ZabbixでMySQLスレーブの Slave_IO_RunningとSlave_SQL_Runningを監視する

表題の件に関するメモ。Zabbixは便利だけどTempalete_App_MySQLでは、レプリケーションしたときに一番知りたいSlave_IO_RunningとSlave_SQL_Runningの値を監視できない。なのでUserParameterを設定して監視することにした。 Zabbixのインストール方法などはZ…