Catalyst と DBIC と mysql でレプリケーション

たいしたことではないんですけど、レプリケーションを構築したら是非ともたってみたかったこと。

まずは bakelatte_create.pl で マスタ用 Model を生成。

[travail@mina]~/public_html/SVNHOME/Bakelatte/script% ./bakelatte_create.pl model DBIC::Bakelatte DBIC::Schema Bakelatte::Schema
created "/home/travail/public_html/SVNHOME/Bakelatte/script/../lib/Bakelatte/Model/DBIC/Bakelatte"
 exists "/home/travail/public_html/SVNHOME/Bakelatte/script/../t"
created "/home/travail/public_html/SVNHOME/Bakelatte/script/../lib/Bakelatte/Model/DBIC/Bakelatte.pm"
created "/home/travail/public_html/SVNHOME/Bakelatte/script/../t/model_DBIC-Bakelatte.t"

続いて、スレーブ用 Model を生成。

[travail@mina]~/public_html/SVNHOME/Bakelatte/script% ./bakelatte_create.pl model DBIC::Bakelatte::Slave DBIC::Schema Bakelatte::Schema
created "/home/travail/public_html/SVNHOME/Bakelatte/script/../lib/Bakelatte/Model/DBIC/Bakelatte"
 exists "/home/travail/public_html/SVNHOME/Bakelatte/script/../t"
created "/home/travail/public_html/SVNHOME/Bakelatte/script/../lib/Bakelatte/Model/DBIC/Bakelatte/Slave.pm"
created "/home/travail/public_html/SVNHOME/Bakelatte/script/../t/model_DBIC-Bakelatte-Slave.t"

Bakelatte/etc/conf/bakelatte_local.yml(開発環境用) を編集。

## マスタ用
Model::DBIC::Bakelatte:
  schema_class: Bakelatte::Schema
  connect_info:
    - dbi:mysql:bakelatte_local:hostname=192.168.1.1
    - username
    - password

## スレーブ用
Model::DBIC::Bakelatte::Slave:
  schema_class: Bakelatte::Schema
  connect_info:
    - dbi:mysql:bakelatte_local:hostname=192.168.1.2
    - username
    - password

Bakelatte/etc/conf/bakelatte_service.yml(本番環境用) を編集。

## マスタ用
Model::DBIC::Bakelatte:
  schema_class: Bakelatte::Schema
  connect_info:
    - dbi:mysql:bakelatte:hostname=192.168.1.1
    - username
    - password

## スレーブ用
Model::DBIC::Bakelatte::Slave:
      schema_class: Bakelatte::Schema
  connect_info:
    - dbi:mysql:bakelatte:hostname=192.168.1.2
    - username
    - password

Bakelatte::Model::DBIC::Bakelatte を編集。

package Bakelatte::Model::DBIC::Bakelatte;

use strict;
use base 'Catalyst::Model::DBIC::Schema';

__PACKAGE__->config( Bakelatte->config->{'Model::DBIC::Bakelatte'} );

Bakelatte::Model::DBIC::Bakelatte::Slave を編集。

package Bakelatte::Model::DBIC::Bakelatte::Slave;

use strict;
use base 'Catalyst::Model::DBIC::Schema';

__PACKAGE__->config( Bakelatte->config->{'Model::DBIC::Bakelatte::Slave'} );

準備完了。

## マスタから SELECT
$c->model('Bakelatte::Member')->find( $id );

## スレーブから SELECT
$c->model('Bakelatte::Slave::Member')->find( $id );

今まで作ったアプリをこんな感じで実装し直しています。

Comments:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://hibinokoto.jp/mt/mt-tb.cgi/265
Listed below are links to weblogs that reference
Catalyst と DBIC と mysql でレプリケーション from 日々のこと

Home > 仕事のこと > Catalyst と DBIC と mysql でレプリケーション

Search
Feeds

Return to page top