スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MySQLでレプリケーション始め

レプリケーションの設定メモ。

マスタホスト = mysqlmaster
スレーブホスト = mysqlslave
レプリケーション用アカウント USER:PASS = repl:repl

【マスタにスレーブ用のユーザを作成する】
・どのホストからでもマスタにアクセスできる↓
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY 'repl';

・mysqlslaveからアクセスできる↓
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@mysqlslave IDENTIFIED BY 'repl';

【マスタの書き込みブロック】
mysql> FLUSH TABLES WITH READ LOCK;

【ログ名とオフセットをメモする】
mysql> SHOW MASTER STATUS;

【マスタのダンプを取得】
# mysqldump --master-data database_name > master.dump

【マスタを停止】
# mysqladmin shutdown

【my.cnfの設定】
マスタ:
[mysqld]
log-bin
server-id=1

スレーブ:
[mysqld]
server-id=2

my.cnfは/etc/my.cnf→/usr/local/mysql/var/my.cnfの順。
server-idは数値。マスタとスレーブを異なる数値に。

【スレーブを起動】
初回のテスト起動時にmysqld_safeのオプションをメモしておく。
そのオプションに--skip-slave-startを追加して/usr/local/mysql/bin/mysqld_safeを
バックグランドジョブで起動。

【ダンプをスレーブにロード】
マスタと同じdatabaseを作成しておく
mysql> CREATE DATABASE database_name;

# mysql database_name -u root -p < master.dump

【マスタを起動】
# mysql.server start

【スレーブの設定】
mysql> CHANGE MASTER TO
-> MASTER_HOST = 'mysqlmaster',
-> MASTER_USER = 'repl',
-> MASTER_PASSWORD = 'repl',
-> MASTER_LOG_FILE = '',
-> MASTER_LOG_POS = '4';

MASTER_LOG_FILEはSHOW MASTER STATUSで表示されたログ名。
なければ(--log-binを有効にせずに稼動していた場合)空白。

MASTER_LOG_POSはSHOW MASTER STATUSで表示されたオフセット。
なければ(--log-binを有効にせずに稼動していた場合)4。

mysql> START SLAVE;

【マスタ側スレッドの確認】
mysql> SHOW PROCESSLIST\G
でBinlog Dumpがなければレプリケーションは行われない。

この記事のトラックバックURL

http://ysmt.blog21.fc2.com/tb.php/22-220cdb7c

コメント

コメントする

管理者にだけ表示を許可する

Template Designed by DW99

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。