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…

何かするスクリプト

なにかするスクリプトのひな形 XXXX.NNNNNNみたいなファイルの処理で使う。 #!/usr/bin/perl # # Usage: # # Remark: Don't use "RESET MASTER" use warnings; use strict; use Sys::Syslog; my $hist = '/usr/local/mysql/data/hist.dat'; # Save the file …

keepalived ソースコードリーディング 1

使うならソースくらい読まないと。今回の目標は「MISC_CHECKがどのように行われるか(timeout関連をきちっと知るため)」 ダウンロード ここからダウンロードする。 構造 ソースを展開して構造をみる。 $ pwd /usr/local/src/keepalived-1.2.9 $ du 0 ./bin 8 …

LVS+keepalived の設定 4

備忘録として、DSRによるLVSとkeepalivedの設定を段階的に書く。前提は以下とする。 LVSの転送方式はDSR ネットワークは単一セグメントで超簡単なもの OSはCentOS6.5 今回はMySQLスレーブの死活監視+管理について。システム構成はLVS+keepalivedの設定 3を…

LVS+keepalived の設定 3

備忘録として、DSRによるLVSとkeepalivedの設定を段階的に書く。前提は以下とする。 LVSの転送方式はDSR ネットワークは単一セグメントで超簡単なもの OSはCentOS6.5 今回はkeepalivedを冗長化(2台構成)にする。 ネットワーク構成 今回は以下の構成。 LVS1…

LVS+keepalived の設定 2

備忘録として、DSRによるLVSとkeepalivedの設定を段階的に書く。前提は以下とする。 LVSの転送方式はDSR ネットワークは単一セグメントで超簡単なもの OSはCentOS6.5 今回はkeepalivedを導入する。 ネットワーク構成 今回は前回と同じ、以下の構成。 LVSはet…

LVS+keepalived の設定 1

備忘録として、DSRによるLVSとkeepalivedの設定を段階的に書く。 前提は以下のとおり: LVSの転送方式はDSR ネットワークは単一セグメントで超簡単なもの OSはCentOS6.5 今回はDSRのLVSでMySQL:Slaveの負荷分散の練習。 以降の予定は: keepalived導入 LVS+k…

erlang #2 gen_serverで素数リストを求める

erlang #1 素数リストを求めるでつくったサーバを"Erlang World gen_server"を参考にしてgen_server化してみる。 init()の使い方がイマイチわからないまま。 # cat gprime.erl -module(gprime). -behaviour(gen_server). -export([start/0]). -export([get/1…

erlang #1 素数リストを求める

急に思い立ってerlangで素数リストを求めるプログラムを書いた。 エラトステネスのふるい まずは基本的なプログラミング。関数prime()は再帰的にsqrt(N)回実行する。 # cat prime1.erl -module(prime1). -export([getl/1, checkp/1]). %% Nまでの素数リスト…

MySQL、MariaDB、PostgreSQLのオプティマイザ/エクゼキュータ比較用スクリプト群

こちらの実験を手元で再試行できるように、スクリプト群と実験方法を示す。 ここで示した例以外にも、こちらでMariaDB vs MysSQLのオプティマイザ機能比較があるので、各自試してみるとよいと思う。 https://mariadb.com/kb/en/optimizer-switch/ スクリプト…

長年の議論に終止符 -- MySQL、MariaDB、PostgreSQLのオプティマイザ/エクゼキュータ比較

https://mariadb.com/kb/en/optimizer-switch/にあるように、MariaDBのオプティマイザはかなり改良されている。 では、MariaDBのオプティマイザ/エクゼキュータはどの程度優秀か、4つのSELECT文の実行を通してMySQLと(ついでにPostgreSQLと)比較してみる。 …

MySQLのCOMMIT時におけるfsyncの実行タイミング

バージョン5.6で"innodb_flush_log_at_trx_commit=1"の挙動が変わった的な話があったので、こっちで軽く調べ、さらに追加調査したので結果を書く。 目的と結論 目的 簡単に書くと、5.6でバイナリログのグループコミットが入ってREDOログとバイナリログの書込…

長年の議論に終止符 -- MySQLとMariaDBの違い一覧

(2014.12.3追記:このblogの内容は、以下の書籍にも反映させた。) SQLレベルの差異 MariaDB5.5とMySQL5.5ではSQLレベルでの違いはほとんどなかった。autoincrementの最大値の扱いくらい。 ただし、MariaDB10.0でREGEXPがマルチバイト対応になったので、アプ…

PostgreSQL 9.3リリース記念  FDWで本当のデッドロックにはまってみよう

2013年9月9日、いきなりPostgreSQL9.3がリリースされた。 それを記念してFDWを使って本当のデッドロック状態をつくって遊んでみようと思う。 準備 サーバを2台準備する。サーバはtest1とtest2とする。

MySQL5.6のordered_commit()とHA_IGNORE_DURABILITYとinnodb_flush_log_at_trx_commit

『MySQL 5.6 ではinnodb_flush_log_at_trx_commitの意味が MySQL 5.5 と違う』で、論理飛躍*1や間違い*2があったので、結論が正しいかどうかチェックしてみた。 なお、flushというかfsync()の呼び出しについて、および上記の記事に対する結論はこちらに書い…

PostgreSQLの共有バッファ(shared_buffer)とMySQLのバッファプール(buffer_pool)のメカニズム比較

PostgreSQLとMySQLのバッファについて。 PostgreSQLのバッファマネージャ 詳細はこちらをみて頂くとして、PostgreSQLのバッファマネージャは、2005年リリースのバージョン8.1で大幅に変わった。以下の表をみて頂くとわかるようにページ置換アルゴリズム…

"Introduction Of Reliable Distributed Programming" Review

3年ほど前に(後述するライブラリを目的に)読んだ"Introduction Of Reliable Distributed Programming"を、復習も兼ねてレビュー。 注意:すでに2nd Edition "Introduction to Reliable and Secure Distributed Programming" が出ているが、このレビューは1st…

PostgreSQL全機能バイブル

毎度おなじみ、流浪のPostgreSQL本が2012年11月16日に出版されます。 今回の書名は「PostgreSQL全機能バイブル」。6年ぶり、バージョン9.2対応。 内部構造は100ページ、図70枚。内容的には前著の1024倍以上グレードアップしています。関連情報…

日本語版PostgreSQLwikiについて

調べものがあってPostgreSQLのwikiをみたのですが、日本語wikiにのみ、不思議な記述があります。http://ja.wikipedia.org/wiki/PostgreSQL 市場シェア 世界的な利用状況を見ると、2004年の時点では商用DBを含めると第6位、 オープンソースDBに限定すると MyS…

CBMC

いつの間にかCBMCがオープンソースになっていた。 http://www.cprover.org/cbmc/svnでversion4.1のソースをダウンロードできる。 svn co http://www.cprover.org/svn/cbmc/releases/cbmc-4.1 これらを書いたころはver2.4のみソースが公開され、Currentの3.9…

PostgreSQL 9.1 - 同期レプリケーション: クイックスタート

sr_sync02.htmlに、より詳細な動作機構や新規に追加された関数、ツールの紹介がある。 sr_sync03.htmlに、障害対応に関する解説がある。解説資料としては、 http://lets.postgresql.jp/documents/technical/replication/1 が詳しい。 (2012.10.30追記)以下の…

PostgreSQL 9.1 - 同期レプリケーションの障害対応

同期レプリケーションでの障害対応について、具体例を使って説明する。 なお、分量が多いのでここでは一部のみ公開。全体はこちら (2012.10.30追記)最新情報は書籍にまとめたので、参照のこと。 マスタ:スレーブ = 1:1の場合 マスタ障害:スレーブが1台の場合…

PostgreSQL 9.1の同期レプリケーション:機構と新機能など

今さら、同期レプリケーションについて。ここでは機構のみ。新機能など含む全文はこちら (2012.10.30追記)正式な文書は以下の書籍にまとめたので参照のこと。 また、http://www.interdb.jp/techinfo/postgresql/internal-11.html に原稿のサンプルをアップし…

障害に関すること

いろいろあって、障害というものについてちょっとだけ書いてみる。 万が一のときに壊滅的致命的破滅的災害にいたる技術を、人間は使っていいものか。 いい方悪いが飛行機事故で最悪1000人規模。スタジアムに落ちれば桁がかわってくるか。では原発事故では?…