0.介绍
MySQL主从复制,其实就是将主服务器中的数据复制到一个或者多个从服务器上的过程,从服务器从主服务器取到它的二进制文件,然后在从服务器上执行,从而使得主从数据保持一致性。如果主服务器上访问量较大,可以通过复制数据,然后在从服务器上查询数据,来分担主服务器的压力,同时,从服务器也可以作为主服务器的备份,防止数据丢失。
1.主从复制分为三个步骤
- 主服务器将数据的改变记录到二进制文件(binary log)中
- 从服务器将主服务器的二进制文件复制到它的中继日志(relay log)中
- 从服务器重新执行中继日志中的事件,达到主从同步的效果
2.windows 环境下主从复制
- 修改主服务器配置文件my.ini
[mysqld]
log_bin="D:/MySqlLog/binlog" //二进制文件的位置
expire_logs_days = 10 //过期删除的天数
max_binlog_size = 100m //二进制文件最大的大小
server-id = 1 //服务器标识,必须唯一
binlog-do-db = test //要同步的数据库
binlog-ignore-db = mysql //不要同步的数据库
- 在主服务器上建立帐户并授权从服务器:
创建一个用户“test”,“%”表示任务远程的test用户都可以连接master主机。
GRANT REPLICATION SLAVE ON *.* to 'test'@'%' identified by '123';
- 重启MySQL
重启MySQL,然后用
show master status \G;
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
主服务器操作完成
4.从服务器my.ini配置
[mysql]
log_bin="D:/MySqlLog/binlog" //二进制文件的位置
expire_logs_days = 10 //过期删除的天数
max_binlog_size = 100m //二进制文件最大的大小
[mysqld]
server-id = 2 //服务器标识,必须唯一
5.再关掉slaves
stop slave;
6.设置连接参数
change master to
master_host='192.168.145.222',
master_user='test',
master_password='123',
master_log_file='mysql-bin.000004', //复制log文件,根据master来看的,用show master staus 查看
master_log_pos=308; //binlog文件偏移量
7.重启slave
start slave; //重启
show slave status; //查看
大功告成。