MySQL主从复制与读写分离


数据库复制 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;

配置成功等待主服务器修改

声明:祁志飞||小祁的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - MySQL主从复制与读写分离


QQ:137867590