[ ホーム | 一覧 | 検索 | 最終更新 | ヘルプ ] [ 新規 ]

KAWANO's PukiWiki Plus! - Install Log/CentOS5/MySQL_repl のバックアップ(No.2)

AND OR
  • バックアップ一覧
  • 差分 を表示
  • 現在との差分 を表示
  • 現在との差分 - Visual を表示
  • ソース を表示
  • Install Log/CentOS5/MySQL_repl へ行く。
    • 1 (2008-05-02 (金) 09:31:39)
    • 2 (2008-12-27 (土) 14:48:10)

MySQLでのレプリケーションの設定

Vine Linuxでやったのと、 まったく同じ作業でできた。

▲ ▼

レプリケーションとは

通常、データベースを別のサーバに複製することを、「レプリケーション」という。 レプリケーションのメリットは、次のとおり。

  • データベースのバックアップ
  • データベースの冗長化
  • サーバの負荷分散

MySQLは標準でレプリケーション機能を備えているが、 その方式は「マスタ-スレーブ方式」で、 データベースの更新を受け付ける「マスタ」と、 マスタから伝搬されたデータを受け付ける「スレーブ」からなる、 一方通行の複製になる。

細かいことは、参照先のページを見ること。

▲ ▼

今回の目的

まったく同一構成の2台のマシンがあるので、 1台をマスタ、もう1台をスレーブにして、 データベースのバックアップと冗長化をはかる。

▲ ▼

レプリケーション用のユーザの作成

スレーブがマスタに接続するための専用ユーザを、マスタで作成する。 与える権限は「REPLICATION」「SLAVE」のみ。 今回は、ユーザ名「repl」、パスワード「password」で、 どのコンピュータからの接続も受け付ける('%')ようにする。

master# mysql -u root -p
...
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY 'password';
▲ ▼

マスターのデータをスレーブにコピー

マスターの全データを、スレーブにコピーする。

今回は、稼働中のデータベースにレプリケーションを設定するため、 次のようなややこしい操作をする。 詳細は、参考に書いたページを見ること。

  1. マスタになるよう、設定ファイル(/etc/my.cnf)に追加する
    [mysqld]
    log-bin
    server-id=1
  2. MySQLを再起動する
  3. マスタで、tarコマンドを使って全データのバックアップをとる
    master# cd /var/lib/mysql
    master# tar cpf /var/tmp/mysql-snapshot.tar .
  4. マスタで、すかさずmysqlコマンドを使って、データベースが更新されないよう、書き込みロックをする(別端末で用意しておくとよい)
    mysql> FLUSH TABLES WITH READ LOCK;
  5. マスタで、もう一度tarコマンドを使って全データのバックアップをとる
    master# tar cpf /var/tmp/mysql-snapshot.tar .
  6. マスタで、mysqlコマンドを使って、マスタのバイナリログの位置情報を確認する。
    あとで使うので、必ずメモしておくこと
    mysql> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_do_db | Binlog_ignore_db |
    +------------------+----------+--------------+------------------+
    | mysql-bin.00002  | 35389    |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
  7. マスタで、書き込みロックを解除する
    mysql> UNLOCK TABLES;
  8. マスタでバックアップしたデータをスレーブにコピーする
    master# scp /var/tmp/mysql-snapshot.tar slave:/var/tmp/
▲ ▼

スレーブを開始する

スレーブのための設定をする。 ここからの作業は、失敗してもマスタには影響がないので、 何回でもやり直しできる。

  1. スレーブで、起動中のmysqldを停止する
    slave# service mysql stop
  2. マスタからコピーしたデータを展開する
    slave# cd /var/lib/mysql
    slave# rm -rf *
    slave# tar xpf /var/tmp/mysql-snapshot.tar
  3. 展開したら、マスタで使っていたバイナリログ用ファイルやエラーログ用ファイルなどを削除する
    slave# rm -f mysql-bin.????? mysql-bin.index
    slave# rm -f マスタのホスト名.pid マスタのホスト名.err
  4. スレーブで、/etc/my.cnfを編集して、「server-id」をマスタのと違う数字にする
    [mysqld]
    server-id=2
  5. スレーブで、サーバを起動する
    slave# service mysql start
  6. スレーブで、mysqlコマンドを使って、マスタの情報を設定する
    mysql> CHANGE MASTER TO
        -> MASTER_HOST = 'master',
        -> MASTER_USER = 'repl',
        -> MASTER_PASSWORD = 'password',
        -> MASTER_LOG_FILE = 'mysql-bin.00002', (メモしたバイナリログのファイル名)
        -> MASTER_LOG_POS = 35389; (メモしたバイナリログの位置)
  7. スレーブを開始する
    mysql> START SLAVE;
  8. レプリケーションが成功したら、スレーブで、/etc/my.cnfを編集して、マスタの情報を設定する(情報は/var/lib/mysql/masater.infoにすでに書き込まれている)
    [mysqld]
    erver-id=2
    master-host=master
    master-user=repl
    master-password=password
▲ ▼

参考

  • http://www.irori.org/doc/mysql-rep.html
  • http://wiki.bit-hive.com/tomizoo/pg/MySQL%20%A5%EC%A5%D7%A5%EA%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A4%CE%C0%DF%C4%EA

メニュー

  • トップ
  • 授業
  • PukiWiki Log
  • Install Log
  • 道具箱
  • セキュリティ情報
  • RSSアンテナ

大学関係リンク

  • Webメール
  • 健康システム学科
  • 情報メディアセンター
  • 兵庫大学

今日の5件
  • FrontPage(35)
  • Lecture/CompPracC32005/10th(1)
  • Lecture/CompPracC2005/8th/example(1)
  • Lecture/CompPracR2004/11th(1)
  • Lecture/CompPracC2006/11th(1)
最新の5件
2016-04-08
  • Lecture/timetable_2016
  • Lecture
  • FrontPage
2015-09-30
  • Lecture/timetable_2015
2015-04-04
  • MenuBar

total: 41709
today: 1
yesterday: 0
now: 3


リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
http%3A%2F%2Fhs-www.hyogo-dai.ac.jp%2F~kawano%2F%3FInstall%252520Log%25252FCentOS5%25252FMySQL_repl
Founded by Minoru Kawano.
Powered by PukiWiki Plus! 1.4.7plus-u2-i18n. HTML convert time to 0.584 sec.
Valid XHTML 1.1