MySQLレプリケーション(二)Master-Slaveレプリケーション実践

5595 ワード

1.準備
まず2台のマシンを用意し、それぞれmysqlを取り付けます
私のここのバージョンは5.1.73で、mysqlデータベースのインストールは参考してください:http://www.cnblogs.com/tangyanbo/p/4289753.html
linuxシステムはcentos
マシンは次のとおりです.
Master: 192.168.1.227
Slave:192.168.1.225
シーン:masterとslaveは作成したばかりのデータベースです.つまり、データが一致するシーンの下です.
2.レプリケーションの構成
大まかな手順は次のとおりです.
1)サーバごとにレプリケーションアカウントを作成する
2)MasterとSlaveの構成
3)Slave接続Masterコピー開始
2.1 Masterでのレプリケーションアカウントの作成
マスターにアカウントslave、パスワードslaveを作成し、REPLICATION SLAVE権限を付与します.
mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.225' IDENTIFIED BY 'slave';
2.2マスターの構成
# vi/etc/my.cnf
mysqldの下に次の構成があることを確認します.
[mysqld] 



port = 3306



server-id = 1

log_bin = mysql-bin


socket = /tmp/mysql.sock 



skip-locking 



key_buffer_size = 16M 



max_allowed_packet = 1M 



table_open_cache = 64 



sort_buffer_size = 512K 



net_buffer_length = 8K 



read_buffer_size = 256K 



read_rnd_buffer_size = 512K 



myisam_sort_buffer_size = 8M 



binlog_format=ROW 



log-slave-updates 



sync_binlog=1 



auto_increment_increment=2 



auto_increment_offset=1

server_id:slaveのserver_とは設定できない必要があります.idは同じ
log_bin:バイナリログを開く
保存して終了し、masterを再起動
service mysqld restart
sqlコンソールに入り、コマンドSHOW MASTER STATUSまたはshow master statusGを実行
image
2.3 Slaveの構成
Slaveマシンで
# vi/etc/my.cnf
[mysqld] 



port = 3306



server-id = 2



log_bin = mysql-bin



relay_log         = mysql-relay-bin

log_slave_updates = 1

read_only         = 1

server_id:slaveのserver_とは設定できない必要があります.idは同じ
log_bin:バイナリログを開く
relay_log構成中継ログ、log_slave_updatesはslaveがコピーイベントを自分のバイナリログに書き込むことを示します(後でその用途が表示されます)
slaveの保存と再起動
2.4レプリケーションの開始
slaveをmasterに接続する
mysql>CHANGE MASTER TO MASTER_HOST='192.168.1.227',MASTER_USER='slave',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=106;
赤い部分に注意
MASTER_LOG_FILE対応マスターファイル
MASTER_LOG_POS対応マスターのPosition
実行コマンド:mysql>show slave statusG
image
Slave_IO_State, Slave_IO_RunningとSlave_SQL_Runningはslaveがレプリケーションプロセスを開始していないことを示しています.ログの場所は0ではなく4です.これは、0がログファイルの開始位置であり、ログの場所ではないためです.実際、MySQLが知っている最初のイベントの場所は4です.
コピーを開始し、コマンドを実行します:mysql>START SLAVE;
image
 
Slave_IO_RunningとSlave_SQL_Runningはすべてyesで、起動に成功したことを示します
masterでsql操作を実行する
mysql>use test;



mysql>create table test1(id int,name varchar(20));



mysql>insert into test1 values(1,'2');

slaveで表示
image
コピーが成功したことを示します.