MySQLのレプリケーションにおける矛盾

家系図MySQLレプリケーションを示すことの危険

 僕が働いていた会社では、MySQLレプリケーションにおけるマスタを"親"、スレーブを"子"と呼んでいた。そのスレーブにスレーブが存在すれば"孫"というわけである。単純明快、レプリケーションのオリジナルに近くなるほど先祖なわけだ。凄く良い例えだと思うし、僕自身そう云うんだよと教えられずに自然に親子関係を名称に適用して会話をしていたくらいである。

 しかし、矛盾に気づいてしまった。MySQLはマスタを1ホストだけ指定出来、スレーブはいくらでも持てるというルールである。これを親子関係に適用してみよう。自分にとって親は一人しか居ないが、子はいくらでも持てるということだ。

 重大なのはこの後である。ホスト同士が互いにレプリケーションになることが出来るのである。つまり、"あいつは俺の子で俺はあいつの子"である。どうしよう、デュアルマスタにした途端表現が無茶苦茶になってしまう。鶏が卵を生んで卵が鶏を生んでってどっちが親なのかはっきりしてよ。

 デュアルマスタ構成の片方にスレーブを1つ加えてみたら目もあてられない。スレーブから見たマスタのマスタはおじいちゃん、しかしそのおじいちゃんのマスタは自分と同じマスタである。気づいてみればおじいちゃんが兄もしくは弟という現実では考えたくもないシチュエーションである。

 こんなことでは済まされない。マスタをデュアルでなく、3つのマルチマスタ構成にしたらどうなろうものか。俺の父さんの父さんは俺の子みたいな、エッシャーの無限階段の状態である。

次なる提案

 上のような小さな構成程度で崩壊しているようでは、比喩に失敗があるのだと、新たな表現方法を着想した。原点に立ち戻り、本来のマスタとスレーブの関係で考えるのである。しかし主と奴隷という形では、主は奴隷の奴隷というような家系図と同じ目を見るのは明らかだ。そこでマスタを女王様、スレーブを下僕という性的な要素を加えることで解決を試みた。

 これが何とうまくいくのである。デュアルマスタで考えてみよう。下僕にとっての女王様はときに下僕であるといえば話がすっきりする。単純なことだ。必要に応じて立場をわきまえている関係である。マルチマスタで考えても、下僕にとっての女王様も誰かにとっては下僕であり、その誰かは最初の下僕よりも下僕なのだ。文を見て確認していたらゲシュタルト崩壊が起きないこともないが成り立つ。

 凄い発見をしたと思ったが、紙に書き表す時にMaster,Slaveと書いていたら、Sadist,Masochistに対して意味合いと頭文字が逆になってしまい、これはこれで不便である。