mysql---主master从slave复制 replacation
实现原理:1.主服务器凡运行语句,都产生一个二进制日志 binlog
2.从服务器不断读取主服务器的binlog
3 .从服务器读取到的binlog转换为自身可执行的relaylog
4.执行relaylog
配置原理:1.首先确保主服务器打开二进制日志功能,这样,主服务器一旦有数据变化,立即产生二进制日志--------主服务器要配置binlog
2.从服务器也需要开启二进制日志和relay日志功能,这样可以从主服务器读取binlog并产生relaylog-------------从服务器要配置relaylog
3.在主服务器建立一个从服务器的账号,并授予读binlog的权限------------从服务器如何有权读取主服务器的binlog?(binlog是比较敏感的)----授权,master要授予slave账号
4.指定从服务器对应的主服务器,开启从服务器--------------从服务器用账号连接master
配置过程:Linux环境下
1主服务器配置:
给服务器起一个独特的id
server-id=201
声明二进制日志的文件为mysql-bin.xxxx
log-bin=mysql-bin
二进制日志的格式 mixed/roe/statement
binlog-format=mixed
主:
binlog-format=row/statement
statement:二进制记录执行语句,如update............
row:二进制记录的是磁盘变化
用哪种比较好?
update age=age+1 where id=3;//语句长而磁盘变化少,宜用row
update salary=salary+100;//语句短,但影响上万行,磁盘变化大,用statement
mixed:混合的,由系统根据语句来决定
2从服务器配置:
server-id=202
log-bin=mysql-bin----从服务器也要打开log-bin ,从服务器有时候也起到数据备份的功能,还有万一从服务器是作为另一台服务器的主服务器
binlog-format=mixed
relay-log=mysql-relay
重启服务器
3主从服务器都配置好后,还要建立两台服务器的关系,才能生效:
在主服务器上给从服务器授权:在主服务器上创建相应的复制账号
grant replication client,replication slave on *.* to repl@‘192.168.1.%’ identified by '111111';
冲刷 flush privileges;
4在从服务器上配置:在从服务器通过语句指定要复制的主服务器(注意,可以一主多从,不可一从多主,也可主主复制)
change master to
master_host='192.168.1.201',
master_user='repl',
master_password='111111',
master_log_file='mysql-bin.000001',
master_log_pos=348;---->pos的意思是当前主服务器的log文件也就是000001上的指针已经指到348的位置了
5重启slave
测试,在主服务器上建立一个数据库,从服务器上也会生成同样的数据库
配置好重新启动mysql
常用语句:
show master status;查看master的状态,尤其是当前的日志及位置
show slave status ;查看slave的状态
Reset slave;重置slave状态
start slave;启动slave状态(开始监听master的变化)
stop slave;暂停slave状态