技術のご紹介

技術のご紹介

このブログを購読する

IT開発センターBlog

ALLインクレ日誌ITニュース製品応用事例技術Tips技術リリース

MySQLのレプリケーション機能

title=

こんにちは粟野です。
RDBMSを利用していると、データベースのバックアップや冗長化、負荷分散等が課題になってきますが、冗長化や負荷分散と聞くと「専用の機器が必要」「高度な設計や運用が必要」と考えてしまいます。
MySQLでは「レプリケーション」という機能が標準で利用でき、ある程度の規模までではありますが、これらの問題を比較的簡単に解決することが出来てしまいます。
今回はその、レプリケーション機能を有効にするための設定方法を書いてみたいと思います。
※本内容は新規構築用となります。既にご利用の環境への適用には適していませんのでご注意下さい。
■ サーバ環境
OS: CentOS 5.6 64bit
MySQL: 5.5.16-log
DB1(Master側) IPアドレス: 10.0.0.2
DB2(Slave側) IPアドレス: 10.0.0.3

■ 設定ファイルの編集(DB1での作業)
バイナリログを有効にし「server-id」に他のMySQLサーバのIDと重ならないような正数を設定します。

# vi my.cnf
-----
[mysqld]
log-bin
server-id=1001

■ 接続アカウントの作成(DB1での作業)
MySQLにログインし、接続用アカウントを追加します。
※「ユーザー名」「パスワード」は半角英数字に置き換えて下さい。

mysql> GRANT REPLICATION SLAVE ON *.* TO ユーザー名@10.0.0.3 IDENTIFIED BY 'パスワード';

■ データベースのバックアップ(DB1での作業)
DB2へデータの移動を行うためのアーカイブ作成の際、データベースが更新されないように書き込みをロックします。

mysql> FLUSH TABLES WITH READ LOCK;

現在のバイナリログの状態を確認(ロック中に行います)

mysql> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| mysqld-bin.000001 |     1800 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

※「mysqld-bin.000001」「1800」の値は都度異なります。後から利用しますので記録しておきます。

レプリケーション対象のデータベース(テーブル)のアーカイブを作成します。

# cd /var/lib/mysql/
# tar cvf ~/データベース名.tar データベース名

ロックを解除します。

mysql> UNLOCK TABLES;

scp等の方法を利用し、上記で作成した「データベース名.tar」をDB2にコピーします。
※DB2では、ユーザー名、パーミッションを合わせます。

■ 設定ファイルの編集(DB2での作業)
DB2でもバイナリログを有効にし「server-id」をDB1とは違う正数に設定します。

# vi my.cnf
-----
[mysqld]
log-bin
server-id=1002

■ データベースアーカイブの展開(DB2での作業)
DB1から取得したアーカイブを、DB2のデータベース領域で展開します。

# cd /var/lib/mysql
# tar xvf データベース名.tar

MySQLを再起動します。

# /etc/init.d/mysqld restart

■ 接続アカウントの作成(DB2での作業)
MySQLにログインし、DB2からDB1に接続するための各種設定(ホスト名やユーザー名等)を行います。

mysql> CHANGE MASTER TO
        MASTER_HOST='10.0.0.2',
        MASTER_USER='ユーザー名',
        MASTER_PASSWORD='パスワード',
        MASTER_LOG_FILE='mysqld-bin.000001',
        MASTER_LOG_POS=1800;

※「ユーザー名」「パスワード」にはDB1で設定した内容を入力します。

■ レプリケーションの開始(DB2での作業)
レプリケーションを開始します。

mysql> START SLAVE;

■ 動作確認(DB2での作業)
動作状況を確認します。

mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
   Slave_IO_State: Waiting for master to send event
~
 Slave_IO_Running: Yes
Slave_SQL_Running: Yes
~

正常にレプリケーションが開始されると上記のような値になりますので、select文等を利用しデータが同期されている事を確認します。

詳細は公式サイトを参照下さい。
http://dev.mysql.com/doc/refman/5.1/ja/show-slave-status.html
※利用バージョン(MySQL 5.5)の日本語マニュアルがありませんでしたので、5.1のドキュメントをお知らせします。

以上で設定が完了となります。
既に動いているサービスへの適用は要注意ですが、今後新しく設定する際には、選択肢の1つとして検討しても良いのかもしれませんね。

PAGE TOP

感動させる仕事

感動こんにちは。仲沢です。

先週の日曜日に大改造!!劇的ビフォーアフターを見ました。
顧客の要件やイメージを遙かに超越したリフォームを行い、完成した家を見て依頼主が涙を流して喜んでいました。
このように「感動させる仕事」を提供している匠の姿にはいつも真のプロ意識を感じ、共感させられます。

我々も分野は違えど「モノづくり」という点で一致していますが、いつもこの番組を見ながら、自分達はこのような仕事が日々できているのかと自問自答しています。

お客様の要件通りでは、「満足」は得られても「感動」は得られません。
お客様の要件を超えた「感動させる仕事」をすることで初めて、我々の使命である「ITを通じてお客様の事業発展に貢献すること」ができると考えています。
そのために、インクレイブでは先日三塚が紹介した「1+1=3」のいわゆる集団思考制作を行なっています。
一人一人がお客様のことを本気で考え、本音の意見をぶつけ合うことで、要件を超えた製品設計を行うことができます。

「感動させる仕事」に対し、明確な達成基準はありませんが、日々このような仕事を目指して取り組んでまいります。

PAGE TOP

最速ブラウザはどれ?

title=

みなさんこんにちは、丸山です。

先日、Firefox7がリリースされましたが、このタイミングにあわせて、あるサイトで「今いちばん速いブラウザは?」という企画がありましたのでご紹介します。実際には、多角的な観点で主要ブラウザの性能を測るスピードテストだったようです。

http://www.lifehacker.jp/2011/10/110929browser-speed-test.html

現時点でのスコアが最も高いブラウザはOperaだったようです。

このような結果を出しているOperaですが、ふと開発者はどんなことを狙ったんだろう、と考えてみると・・

・業界最速であること(他に負けない)
・ユーザーにとってストレスがないこと
・軽快な操作性であること
・時流に合わせた言語処理や描画を実現すること
・カスタマイズしても重くならないこと(アドオン対応)
・とにかく安定していること
・セキュリティ性能に優れていること

・・・などなど、相当な規模での開発コンセプトがあったんだろうなぁ、と勝手に想像してしまいました。
(具体的な性能についてはOperaサイトをご覧ください)

どんな製品やサービスも、どうありたいのか、の設計が明確にあるのとないのとでは、その仕上がりが全然違うものになるんだな、と改めて考えるいい機会になりました。
私たちの日々の仕事でも、設計図の重要性を再認識して、製品開発やサービス開発に臨んでいこうと思います。

ここまでは「製品性能や開発」のお話なのですが、実際Operaがどのくらい使われているかというと、どうやらそんなに普及はしていないみたいです。
http://www.netmarketshare.com/browser-market-share.aspx?qprid=0&qpcustomd=0&qptimeframe=M

スピードテストで優秀な成績だったOperaですが、ブラウザシェアは2011年9月現在のデータでわずか1.67%…。性能だけでは選ばれないんだな、ということがわかるデータです。

そんな私も、普段はChromeを使っています。
みなさんがお使いのブラウザは、なぜそのブラウザなのでしょうか?
開発コンセプトを裏読みして考えてみると、おもしろいかもしれません。

PAGE TOP