ユーザ用ツール

サイト用ツール


02_freebsd:04_database:01_mysql:mysql_replication

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

02_freebsd:04_database:01_mysql:mysql_replication [2012/12/13 15:28]
matsui 作成
02_freebsd:04_database:01_mysql:mysql_replication [2012/12/13 15:30] (現在)
matsui [[スレーブ側]]
ライン 1: ライン 1:
 +====== MySQL - レプリケーション ======
  
 +レプリケーションとは、あるデータベースから他のデータベースに複製を作ることです。
 +
 +====== 構成 ======
 +MySQL 5.1.30
 +
 +
 +====== [マスター側] ======
 +
 +===== プリケーション用ユーザを作成 =====
 +  mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'​%'​ IDENTIFIED BY '<​password>';​
 +
 +===== マスタサーバで更新ログを有効にする =====
 +
 +マスタサーバで更新ログ(バイナリログとも言う)を有効にします。~
 +my.cnf ファイルに以下の記述があるか確認して下さい。
 +<​code>​
 + ​[mysqld]
 + ​log-bin
 + ​server-id=1
 +</​code>​
 +<color red>​※server-id は、1以上の整数であれば何でも良いです。</​color>​
 +
 +===== テーブルへの書き込みを禁止 =====
 +
 +  mysql> FLUSH TABLES WITH READ LOCK;
 +
 +===== マスタデータのスナップショットを撮る(tarで固める) =====
 +<​code>​
 + # cd /home/mysql
 + # tar zcvf data.tar.gz data
 + # scp data.tar.gz [スレーブサーバ]
 +</​code>​
 +
 +===== 更新ログの状態を取得する =====
 +実行したら、画面に出力された「File」と「Position」カラムの内容をメモしておきます。\\
 +これは、現時点での更新ログファイル名とそのオフセットです。\\
 +この後スレーブサーバ上でレプリケーションを有効にする際に必要になります。
 +
 +  mysql> SHOW MASTER STATUS;
 +
 +===== ロックを解除 =====
 +
 +  mysql> UNLOCK TABLES;
 +
 +===== バイナリログの自動削除 =====
 +
 +確認コマンド
 +  mysql> show global variables like '​expire_logs_days';​
 +<color red>​デフォルトの0は削除しないの意味</​red>​
 +
 +my.cnfに下記を書いておけば、14日で削除される。
 +  set-variable = expire_logs_days=14
 +
 +====== [スレーブ側] ======
 +
 +===== スナップショットを展開する =====
 +
 +  # cd /home/mysql
 +  # tar zxvf data.tar.gz
 +
 +==== my.cnf設定 ====
 +<​code>​
 + ​server-id ​      = 2
 + ​master-host ​    = 172.16.8.53
 + ​master-port ​    = 3306
 + ​master-user ​    = slave
 + ​master-password = xxslave
 +</​code>​
 +
 +==== レプリケーションを行う準備 ====
 +<​code>​
 + ​mysql>​ STOP SLAVE;
 + ​mysql>​ CHANGE MASTER TO
 +           ​MASTER_HOST='<​master host name>',​
 +           ​MASTER_USER='<​replication user name>',​
 +           ​MASTER_PASSWORD='<​replication password>',​
 +           ​MASTER_LOG_FILE='<​recorded log file name>',​
 +           ​MASTER_LOG_POS=<​recorded log offset>;
 + 
 + ​mysql>​ START SLAVE;
 +</​code>​
 +
 +==== スレーブの状態確認 ====
 +<​code>​
 + ​mysql>​ show slave status\G;
 + ​*************************** 1. row ***************************
 +                Slave_IO_State:​ Waiting for master to send event
 +                   ​Master_Host:​ 172.16.8.53
 +                   ​Master_User:​ slave
 +                   ​Master_Port:​ 3306
 +                 ​Connect_Retry:​ 60
 +               ​Master_Log_File:​ mysql-bin.000007
 +           ​Read_Master_Log_Pos:​ 19072
 +                Relay_Log_File:​ localhost-relay-bin.000002
 +                 ​Relay_Log_Pos:​ 8504
 +         ​Relay_Master_Log_File:​ mysql-bin.000007
 +              Slave_IO_Running:​ Yes
 +             ​Slave_SQL_Running:​ Yes
 +               ​Replicate_Do_DB: ​
 +           ​Replicate_Ignore_DB: ​
 +            Replicate_Do_Table: ​
 +        Replicate_Ignore_Table: ​
 +       ​Replicate_Wild_Do_Table: ​
 +   ​Replicate_Wild_Ignore_Table: ​
 +                    Last_Errno: 0
 +                    Last_Error: ​
 +                 ​Skip_Counter:​ 0
 +           ​Exec_Master_Log_Pos:​ 19072
 +               ​Relay_Log_Space:​ 8663
 +               ​Until_Condition:​ None
 +                Until_Log_File: ​
 +                 ​Until_Log_Pos:​ 0
 +            Master_SSL_Allowed:​ No
 +            Master_SSL_CA_File: ​
 +            Master_SSL_CA_Path: ​
 +               ​Master_SSL_Cert: ​
 +             ​Master_SSL_Cipher: ​
 +                Master_SSL_Key: ​
 +         ​Seconds_Behind_Master:​ 0
 + ​Master_SSL_Verify_Server_Cert:​ No
 +                 ​Last_IO_Errno:​ 0
 +                 ​Last_IO_Error: ​
 +                Last_SQL_Errno:​ 0
 +                Last_SQL_Error: ​
 + 1 row in set (0.00 sec)
 + 
 + ​ERROR: ​
 + No query specified
 +</​code>​
02_freebsd/04_database/01_mysql/mysql_replication.txt · 最終更新: 2012/12/13 15:30 by matsui

Yesterday:760 Today:037 Total:03607