こうする 参考URL Master/Slaveのセットアップ †my.cnf(master側) †/etc/mysql/my.cnf [mysqld] server-id = 1 log-bin = mysql-bin log-bin-index = mysql-bin relay-log = relay-bin relay-log-index = relay-bin log-slave-updates log = /var/log/mysql/mysql.log Master/Slaveのmy.cnfを作って確認する. server-idが違えばよい Slave用のアカウント作成、権限を与える †Masterで以下のコマンドを実行 GRANT REPLICTION SLAVE ON *.* TO username@"192.168.XXX.XXX/255.255.255.0' IDENTIFIED BY 'password' 要注意(特定DB.特定Tableに対してのEvent特権は付与することが出来ない。*.*が大事) データをコピー †Masterでmysqldを停止させて、 mysql> FLUSH TABLES WITH READ LOCK; データディレクトリを丸ごとtarでコピーする tar -cvvf /home/aya/mysql.tar /var/lib/mysql データの場所は aya@example:/etc/mysql$ lv my.cnf | grep datadir datadir = /var/lib/mysql で見ることが出来る。tarが終わったらlockをはずす mysql> UNLOCK TABLES; # --excludeで不要なファイルはコピー対象外にする mysqldをとめれない場合は、更新系を止めてフルダンプをとり、 SHOW MASTER STATUS の結果をメモする mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000638 | 411 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.01 sec) SCPでデータをSlave側に持ってくる scp /tmp/mysql.tar hoge@hogeserver.com:/tmp そしてhogeserverで展開 hoge@hogeserver:tar xvf /tmp/mysql.tar 元々ある/var/lib/mysqlをリネームしてバックアップを取っておく hoge@hogeserver: mv /var/lib/mysql /var/lib/mysql.orj 持ってきたファイルを現データフォルダーとする hoge@hogeserver: mv /tmp/mysql /var/lib/mysql ここで肝になるのがownerの設定。ついsudoとかですると持ってきたデータファイル/ディレクトリが自分の名前(ここだとhoge)になってしまうので、chownでmysqlに変えておく hoge@hogeserver: chown mysql:mysql -R /var/lib/mysql Slaveでmysqldを起動する †Slaveで以下のコマンドを実行 CHANGE MASTER TO MASTER_HOST = 'ホスト名', MASTER_USER = 'username', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'myql-bin.00003(開始ポジション情報)', MASTER_LOG_POS =4; SLAVE START; MASTER_LOG_POSは show master status; に書いてあるので確認する。 確認方法 †動いているかどうかを確認する場合は Slave_IO_Running Slave_SQL_Running 両方がOKになっていたらよい mysql>show slave status; だと横にテーブル形式で出力されるので、 mysql>show slave status\G とすると見やすく出力される。 mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Connecting to master Master_Host: マスターサーバのホスト名 Master_User: 接続用のユーザ Master_Port: 3306 Connect_Retry: 60 Master_Log_File: myssql-bin.000639 Read_Master_Log_Pos: 412 Relay_Log_File: relay-bin.000001 Relay_Log_Pos: 98 Relay_Master_Log_File: myssql-bin.000639 Slave_IO_Running: No 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: 412 Relay_Log_Space: 98 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: NULL 1 row in set (0.00 sec) Master状況確認方法 †show master status; show master logs Slave状況確認 †show slave status; master_log_file = read_master_log_pos relay_log_file = relay_log_post relay_master_log_fiel = exec_master_log_pos |