数据库复制 replication 的实现原理
1:主服务器凡运行语句,都产生一个二进制日志 binlog
2:从服务器不断读取主服务器的binlog
3:从主服务读取到的binlog,转换为自身可执行的relaylog,
4:从服务器执行relaylog
实现步骤:
1:首先确保主服务器打开二进制日志功能.这样,主服务器一旦有数据变化,立即产生二进制日志.
2:从服务器也需要开启二进制日志和relay日志功能.这样可以从主服务器读取binlog,并产生relaylog
3:在主服务器建立一个从服务器的账号,并授予读binlog的权限.
4: 指定从服务对应的主服务器,开启从服务器.
具体实施
用两台mysql服务器,我这使用的本地与虚拟机 IP为192.168.1.124, 192.168.1.148
1: 124为master,148为slave做主从复制
2: 保证主从3306端口互通.
3: 配置主服务器,打开binlog
4:编辑msyql配置文件 win下为 mysql目录下my.ini linux为/ect/my.cnf
5:配置内容写在mysqld下即可
#给服务器起一个唯一的id (一般是用IP的最后一段数字做id)
server-id=124
#开启二进制日志
log-bin=mysql-bin
#指定日志格式
binlog-format=mixed
6:重启mysql 输入命令show master status; 显示如下即可
7:配置从服务器打开binlog和relaylog
#服务器id
server-id = 148
#从服务器日志
relay-log = mysql-relay
#设置只读
read-only = 1
8: 在主服务器上创建相应的复制账号,供从服务器连接使用
#授权账号 给客户端从服务器权限 所有库所有表 账号为repl ip为 192.168.1.* 密码为repl
grant replication slave,replication client on *.* to repl@'192.168.1.%' identified by 'repl';
之后需要刷新下 flush privileges;
9: 再次查看主服务器的状态 show master status;
10: 在从服务器通过语句指定要复制的主服务器(注意,可以一主多从,不可一从多主).
#修改从服务器 连接ip为 192.168.1.201 账号为repl 密码为repl 充mysql-bin.0000001开始读取 在349字节开始,
->
change master to
master_host='192.168.1.124' ,
master_user='repl' ,
master_password='repl',
master_log_file='mysql-bin.000001',
master_log_pos=981;
10: 查看从服务器状态
show slave status \G
启动从服务器功能
->start slave;
配置成功等待主服务器修改
Comments | NOTHING