kinjouj.github.io

MySQL Replication


MySQL

MySQLでデータベースをレプリケーションさせてみる

my.cnfを設定 (レプリケーション元)

[mysqld]
log_bin = /var/log/mysql/mysql-bin.log
server-id = 1

上を追加しておく。ついでにMySQL上のレプリケーションを行うユーザーを作っておいた方が良い

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO repl@'%' IDENTIFIED BY 'pass';

あと

SHOW MASTER STATUS

を実行した結果のPositionとログファイル名は記憶しておく

my.cnfを設定 (レプリケーション先)

[mysqld]
server-id = 2

レプリケーション元の情報を設定 (レプリケーション先)

CHANGE MASTER TO
  MASTER_HOST='localhost',
  MASTER_PORT=13306,
  MASTER_USER='repl',
  MASTER_PASSWORD='pass',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=106;

MASTERLOGFILEとMASTERLOGPOSはレプリケーション元側で取得したスレーブログ情報を指定する

SSHトンネリング側の設定 (レプリケーション先)

んでマスターサーバー側のMySQLポートのファイアウォール設定を変えるのはまずいので、とりあえずSSHトンネリングを設定する

ssh -f -N -N 13306:192.168.3.1:3306 kinjouj@192.168.3.1

レプリケーション元でSSHサーバーを起動しておき、このSSHポートフォワーディングを利用する事でマスターサーバーのSSHを利用してレプリケーションを実行する事ができるようになる