カスタム検索
ラベル MySQL の投稿を表示しています。 すべての投稿を表示
ラベル MySQL の投稿を表示しています。 すべての投稿を表示

2009年3月2日月曜日

GrailsでMySQLに接続

特に書くほどの事でも無いですが一応メモ・・・

MySQLへの接続は Connector/J で行いますんで、MySQLのサイトから接続するDBバージョンにあわせたConnector/Jをダウンロードします。
今回は 5.1 なので mysql-connector-java-5.1.7.tar.gz をダウンロードしました。
こいつを解凍して mysql-connector-java-5.1.7-bin.jar を grails の lib フォルダに入れます。

まずはDB側の設定。my.cnf に以下を入れておく。

default-character-set=utf8

MySQLAdministrator の設定画面から行くと↓のへん


DBを先に作っておき(今回はdbnameという名称で仮定)、 conf/DataSource.groovy の設定を

pooled = true
dialect = org.hibernate.dialect.MySQLDialect.class
driverClassName = "org.gjt.mm.mysql.Driver"
username = "root"
password = ""
dbCreate = "update"
url = "jdbc:mysql://localhost/dbname?useUnicode=true&characterEncoding=UTF8"

以上のようにして起動すればめでたしめでたし。

2009年2月27日金曜日

mySQLレプリケーションのセットアップ

もっぱらpostgresだったのだけんども食わず嫌いも良くないのでmySQLをもしゃもしゃしてみた。
このへんを参考に。

・セットアップ
Macはパッケージがあるので簡単セットアップで完了。
postgresでいう所のpgAdminはmySQL GUI TOOLというのがある。

サーバ管理系とクエリ/データ処理系とで以下の二つに別れている。

・MySQL Administrator
DBの起動/停止、DBの作成、テーブルの作成、ユーザの作成、バックアップ/リストア等がGUIで出来るツール

・MySQL QueryBrowser
クエリの実行、テーブルの中身をざっくりみたい場合もこっち


サクっと起動した所で、レプリケーションの設定。
スレーブ側からマスタへ接続する為のユーザを作成。

mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'192.168.20.0/255.255.255.0' IDENTIFIED BY 'xmldo';

repl / xmldo というユーザが作成される。
この接続は 192.168.20.0/24 からのみ接続可能。
MySQL Administratorから作る事も出来る。

マスタ側はログをバイナリで出力する必要がある。
また、レプリケーションする際には、すべてのDBへ固有のserver-idが必要となる。
マスター側のmy.cnf

[mysqld]
server-id=10
log-bin


スレーブ側のmy.cnf

[mysqld]
server-id=11
master-host=192.168.20.15
master-user=repl
master-password=xmldo


設定ファイルを書き換えて再起動でレプリケーション完成。あら、アッサリなのね。
ではトラブルを想定して実験をしてみましょう。

・スレーブが停止中にマスターにデータが書き込まれ、その後スレーブが復帰。
>スレーブ復旧後に、追加したデータ問題なく挿入されました。

・マスターが停止中にスレーブにデータが書き込まれ、その後マスターが復帰。
>標準のレプリケーションはマスタ/スレーブ方式なので、復旧しない。

なんらかのトラブルでスレーブを使う事になったら、マスタ復旧時にはスレーブをバックアップ>マスタへリストアしてやる必要がある、と。
ここでマルチマスタ方式のmySqlClusterを使うのだろうけど、とりあえずバックアップをとっておきたいの場合はこれでも十分だろう。
(なんといっても設定が簡単だし・・・)

データだけを別システムで流用(リードオンリーで)するような場合は良いっすね。