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上创建复制账号
在master上创建一个账号slave,密码slave,并赋予REPLICATION SLAVE权限
mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.225' IDENTIFIED BY 'slave';
2.2 配置Master
# 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
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的file
MASTER_LOG_POS对应master的Position
运行命令:mysql>show slave statusG
Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running表明slave还没有开始复制过程。日志的位置为4而不是0,这是因为0只是日志文件的开始位置,并不是日志位置。实际上,MySQL知道的第一个事件的位置是4。
开始复制,运行命令:mysql> START SLAVE;
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上查看
说明复制成功了。