FC2ブログ

MySQL:データベース単位でレプリケーション

つか、そもそもそんなことができることを今まで知らなかった訳で。

MySQL :: MySQL 5.1 Reference Manual :: 16.1.3.3 Replication Slave Options and Variables

[MySQLウォッチ]第7回 大規模システムを支えるMySQLのレプリケーション機能 - オープンソース:ITpro

これでデータベース指定でレプリケーション。

[mysqld]
server-id=7 サーバーID(識別用なので他のサーバーと重複しない値)
master-host = 192.168.1.101 MasterのIPアドレス
master-user= satou レプリケーション・ユーザー名
master-password = pass レプリケーション・ユーザーのパスワード
replicate-do-db = databank レプリケーションを行うデータベース名

テーブル単位なら「replicate-do-table=テーブル名」なんですねー。もっと言えば「replicate-wild-do-table=テーブル(ワイルドカード)」で複数のテーブルを指定もできる。つか、いろいろ指定できるんだなーと。「replicate-ignore-table=db_name.table_name」で特定テーブルを除外とか。

まだまだ奥深き道ですなー。MySQL道。


実験@2009/11/30 21:18   | 0 comments | 0 trackbacks |

リバースプロキシ構成になったらCakePHPのリダイレクトが無限ループ

久々にハマったので。

ローカル環境では普通に単一サーバ構成。別の開発環境ではWebサーバの外側にリバースプロキシがあって。で、そうなるとWebサーバにとって、今は一体SSLで通信しているのかしてないのかを判別する方法が変わってくるそうで。

普通なら、

$_SERVER['HTTPS']が「on」なら「SSL」

ですけど、リバースプロキシが挟まる場合には、

$_SERVER['X-Forwarded-Proto']が「https」

になるそうで。伝聞形が多いのは自分がリバースプロキシよく知らんからです…。

で、開発環境に持っていったらリダイレクトがループしているとのこと。FireFoxだから分かったのですけど。色々調べてたら、特定URLに対してはSSLでの接続のみを許可するよーって処理をしているところが臭かったのでした。

こちらに書いてあるような処理をかましていたわけです。

[CakePHP]Cakeで初めてSSLを使ったメモ | HappyQuality

// SSL呼出エラー処理
function _sslFail($err) {

if ($err === 'secure') {
// リダイレクト先は$this->paramsからとってるけど、別のパラメータから取得した方がいいのかな?キャメライズされないのでいつもここからとってるんですが^^;
$this->redirect("https://".BASE_URL."/".$this->params['controller']."/".$this->params['action']);
exit;
}

}

ここで、関数の引数である$errはどこから?と調べたら「cake/libs/controller/components/request_handler.php」の

/**
* Returns true if the current request is over HTTPS, false otherwise.
*
* @return bool True if call is over HTTPS
* @access public
*/
function isSSL() {
return env('HTTPS');
}

がリバースプロキシの都合なんておかまい無しだったわけで。当然でしょうけど。泥臭くはありますが、

/**
* Returns true if the current request is over HTTPS, false otherwise.
*
* @return bool True if call is over HTTPS
* @access public
*/
function isSSL() {
if(isset($_SERVER['HTTPS'])) {
return env('HTTPS');
else if(isset($_SERVER['X-FORWARDED-PROTO']) && $_SERVER['X-FORWARDED-PROTO'] = 'https'){
return true;
} else {
return false;
}
}

こんな感じにして解決と。奥が深いすなー。これをやっておかないといつまでたっても「お前いつまでHTTPで来るんだよー」ってことになるのでしたとさ。


実験@2009/10/21 23:52   | 0 comments | 0 trackbacks |

俺、まだCakePHPのこと全く分かってなかった…

こんなこととか。

cakePHP formで複数要素を配列として利用 - Love Tokyo

こんなことも。

[CakePHP]$form->inputで行われる自動判別のまとめ

もっとお前のこと理解するよう努力するよ!

勉強勉強っと。


実験@2009/10/01 22:59   | 0 comments | 0 trackbacks |

Javascriptで関数書かずに確認ダイアログを表示

とりあえず、iPhoneでは確認。つか、CakePHPがこのやり方しているから大丈夫でしょうけど。

<a href="/delete_hoge.php" onclick="return confirm('削除して宜しいですか?');">削除</a>

手軽なのがイイですな。


実験@2009/09/07 22:17   | 0 comments | 0 trackbacks |

FlexからLightbox2.0.4を呼び出す

こちらのサイトでタイトルのことをやりたかった次第。DataGrid内の写真をダブルクリックすると拡大表示。

Photo Stream(フォトストリーム)

この辺を見て試してみるものの、Lightboxを実行する時点でエラーになる。。

unstaticINACTION » Blog Archive » Execute Lightbox Scripts From Flash

しばらく悩んだらこちらに行き着きました。

Bram.us » flashLightBoxInjector 1.2 and Lightbox 2.0.4

In Lightbox 2.0.4 Lokesh (the author of Lightbox) decided to create the Lightbox instance without storing it into a variable. As flashLightBoxInjector relies on that variable, things broke. Now, to fix this follow this tiny procedure and it'll work just fine, as it did with version 2.0.3:

2.0.4では変数にインスタンスを格納しないようになっているんですね。これを解決するにはlightbox.jsの末尾にある

document.observe('dom:loaded', function () { new Lightbox(); });

これを

document.observe('dom:loaded', function () { myLightbox = new Lightbox(); });

としてあげて、Lightboxを呼び出すJavascript側では

// lightbox caller
function show(img_url) {
var objLink = document.createElement('a');

objLink.setAttribute('href',img_url);
objLink.setAttribute('rel','lightbox');
objLink.setAttribute('title','test');

myLightbox.start(objLink);
}

てな感じで。あ、Flex側はこちら。

var request:URLRequest = new URLRequest("javascript:show(" + targetData + ")");
navigateToURL(request, "_self");

targetDataには表示したい画像のURLを入れます。


実験@2009/08/29 12:13   | 0 comments | 0 trackbacks |

MacのFirefoxでだけFlashの挙動がおかしくなってたり

やー、しばらく悩んでましたわ。

何回かswfの張ってあるページをリロードすると、ボタンのレイアウトがおかしくなってたり。

FlashTracerでトレースしてたらどうやらstageのサイズがゼロになってたりなってなかったり。

FlashTracer :: Firefox Add-ons

で、ググってみたら、こちらがどんぴしゃで。

SWFObjectのDynamic Publishingを使うとIEとかでStage.stageWidthとheightが一瞬ゼロになるという都市伝説は実在した! | Katapad Design

Event.ENTER_FRAMEで監視して、stageのstageHeight、stageWidthがゼロじゃなくなるまで待ってから次の処理を行うようにしたら解消しました。


実験@2009/08/22 08:49   | 0 comments | 0 trackbacks |

myisamchkを行うも頻繁にテーブルが壊れる

そんな事態に陥ってました。

気づくとMySQLが止まってた

この時にブチブチとプロセスkillしてたしなー。

CHECK TABLEだけでなくて、こっちも試したりしてましたが。そもそも「myisamchk -r table_name」と同じだしなー。

MySQL :: MySQL 4.1 リファレンスマニュアル :: 4.5.5 REPAIR TABLE 構文

ホント面白いくらいにバタバタとテーブル壊れていくんだもんなー。

で、結局たどり着いたのがこちら。

MySQL :: MySQL 4.1 リファレンスマニュアル :: A.4.1 MySQL が何度もクラッシュする場合に行うこと

プロセスを正常終了させてから、myisamchkを行うと。これで一応エラーは出なくなりました。今の所。

しかし、復旧に伴い、いくつかのレコード更新が無かったことになってたのがとほほでした…。


実験@2009/08/19 19:51   | 0 comments | 0 trackbacks |

気づくとMySQLが止まってた

最近遭遇した現象。

MySQLを起動しておいて、数日間は問題なし。でも、そのくらい経過すると接続できなくなっている。エラーログには特にメッセージもなし。psでプロセスみると立ち上がってる。

再起動するかとこうするものの。

/sbin/service mysql stop

んが、停止に失敗。このときには、

MySql: Forcing close of thread xxx user: ...

とかってメッセージが出てるんですよね。結局、killでプロセスを止めるしか無い状況で。

テーブル壊れてんのかなーとmyisamchkとかを適当に実行してみても状況変わらず。いろいろ悩んでたりもして、結果mysql(対話ターミナル)でSHOW PROCESSLISTをしてみたら、特定テーブルのUPDATEで最大接続数を越えてることが判明。cronで更新処理していたのでした。その時点でそのクエリが止まってた次第。

こちらを参考にして、ちゃんとリカバリできたら、問題解消しました。
MySQL :: MySQL 4.1 リファレンスマニュアル :: 4.5.6.1 myisamchk 起動構文

まだまだ奥が深いす。


実験@2009/08/10 09:16   | 1 comments | 0 trackbacks |

Firefox3.5にしたらFlash動かなくなった

って、動いてはいるけど挙動が不思議な感じ。サイズがおかしかったり、読み込み始まんなかったり。

で、最新のFlash Playerにしてみたら直った次第。

Adobe - Flash Player 10

【7/21追記】
直ったと思ったがまだ挙動がおかしい。どうしたものか…。


実験@2009/07/20 12:40   | 0 comments | 0 trackbacks |

天気予報

気付いたら、Firefox 3.5やらiPhoneのブラウザで位置情報取れるようになってたりして。

このあたりの記事に触発されて。

Firefox 3.5 からは、位置情報通知機能 (Geolocation API) が標準搭載に - Cirius Lab. ブログ
ついに iPhone Safari ブラウザから位置情報を取得できるようになります - Cirius Lab. ブログ

作ってみました。

天気予報

対応しているのはFirefox3.5、iPhone OS 3.0でのブラウザ、そしてi-mode。単に自分の持っている端末群ってことで。

weather

IMG_0150

IMG_0158

もう少し何かに昇華したいところではありますが。アプリ作らなくても位置情報使えるのは嬉しいなー。

使ってみたいと言う方がいらっしゃれば以下からどうぞ。

メールでURLを送信

QRコードでアクセス


実験@2009/07/06 23:11   | 0 comments | 0 trackbacks |

«  | HOME |  »

いろいろ作ったり

プロフィール

icot

Author:icot
総合電気メーカで働く会社員でしたがいい年にも関わらずコンサルに転職。お酒、ジョギング、音楽、本、料理をこよなく愛してます。ここでは、日々感じた事を書き連ねるとともに、いろいろ実験してみたりしてます。
icotfeels[at]gmail.com

これまでに感じたこと