mysql 主从同步 实现增量备份

时间:2024-04-01 18:37:56

数据库复制 replication 的实现原理

1:主服务器凡运行语句,都产生一个二进制日志 binlog

2:从服务器不断读取主服务器的binlog

3:从主服务读取到的binlog,转换为自身可执行的relaylog,

4:执行relaylog

具体实施

本人虚拟机下有两台linux,IP为199 200

1: 200做从服务器

2: 199mysql,做为主服务器.

3: 保证主从3306端口互通.

4: 配置主服务器,打开binlog

上面就是实现增量备份的思路。下面我具体配置一下

一 、配置二进制日志

server_id = 199
#开启二进制日志
log-bin=mysql-bin
log-bin-index=master-bin.index
#指定日志格式 位置、语句 和自动选择(mixed) binlog_format=mixed

主服务器 配置好,重启mysql

进入mysql   输入  show master status;    出现下图的说明日志文件配好了。

mysql 主从同步 实现增量备份

二、授权账号

二进制文件是数据,也就是获得了二进制文件就获得了所以数据,那么问题来了,这么重要的东西要是谁都能访问,那不坏菜了。。。。。所以主服务器 要给从服务器设置账号,指定那些才能访问。

  授权给客户端  那些库和表 用户名为root 密码为root的账号在ip为192.168.1.200 起作用

  grant replication client, replication slave on *.*  to 'root'@'192.168.1.200' indentified by 'root' ;

三 从服务器


  server_id = 200

  relay_log = mysql-relay-bin

  log_slave_updates = 1

 read_only         = 1

server_id是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志
有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。

但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。

从服务器 从启mysql

在mysql 执行  告诉从服务器 从哪个ip 用那个用户名 密码   那个日志文件 从什么位置   开始监听复制

change master to master_host='192.168.1.199',master_user='root',master_password='root',
master_log_file='mysql-bin.000001',master_log_pos=154;

Start slave;   启动备

mysql 主从同步 实现增量备份

show  slave status; 查看从服务器状态

reset slave ;  重置slave状态.

stop slave; 暂停slave状态;