MySql主从复制

binlog之主从复制

binlog 基本认识

MySQL二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDLDML语句(除了 select)。

binlog日志有两个最重要的使用场景。

1、主从复制

2、数据恢复

.主从简介

主从就是多个数据库一起工作,他们被人为设置成主库或者从库,他们之间的数据结构以及存储的数 据完全一样

主从数据库比单机数据库有两大优势

提高了系统的可用性

现在有两份一模一样的数据,主库出问题,从库就可以顶上

提供了系统的性能

现在有两份一模一样的数据,主库负责写,从库就负责读

.主从复制原理

1 / 14

MySql主从复制_第1张图片

Mysql的主从复制是基于日志的。主数据库将数据库修改写入它的binlog日志中,从数据库启动Io线程 和sql线程。Io线程去主库把binlog日志读取过来写入自己的中继日志(relay log),然后sql线程读取 relaylog 然后解析成sql将数据插入到从库中。

.搭建环境

首先在自己本地准备两个mysql数据库 _master:   192.168.253.129:3001(主库) _slave:      192.168.253.129:3002(从库)

_master插入模拟数据

MySql主从复制_第2张图片

2 / 14

INSERT INTO student (`id`, `name`) VALUES (3, '卫霜岚');

MySql主从复制_第3张图片

现在这两个数据库之间完全没有关系,所以还需要一些配置让他们联系起来

1.主库配置

一开始两个mysql完全一样的,所以随便找一个做主库,那另一个就是从库

开启binlog

因为主从复制是基于binlog的,所以首先要确保binlog正常记录的。

查看binlog日志是否开启

MySql主从复制_第4张图片

3 / 14

MySql主从复制_第5张图片

MySql主从复制_第6张图片

MySql主从复制_第7张图片

MySql主从复制_第8张图片

log_bin的值,ON表示开启,OFF表示关闭,如果是OFF则进行下一步

修改配置文件开启binlog

修改mysql配置文件,将以下配置添加到[mysqld]节点下,重启数据库

MySql主从复制_第9张图片

[mysqld] log_bin=mysql-bin binlog_format=ROW

再次回到第1查看binlog日志是否开启,如果看到ON表示开启成功

配置服务器

修改mysql配置文件,将以下配置添加到[mysqld]节点下,重启数据库

MySql主从复制_第10张图片

[mysqld] #mysql 服务ID

server-id=1 #忽略的数据库

#binlog-ignore-db=mysql #只同步下面的数据库

binlog-do-db=test

4 / 14

2.从库配置

数据同步

将主库的数据同步迁移到从库中,首先查询主库data路径:

MySql主从复制_第11张图片

5 / 14

MySql主从复制_第12张图片

[mysqld]服务不能和主库重复 #mysql      ID server-id=2

配置要复制的主库连接信息

MySql主从复制_第13张图片

mysql> CHANGE MASTER TO

MASTER_HOST='192.168.253.129',MASTER_PORT=3001,MASTER_USER='root',MASTER_PASSWO

RD='root', MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=156;

MySql主从复制_第14张图片

MySql主从复制_第15张图片

MySql主从复制_第16张图片

MASTER_HOST:主库ip

MASTER_PORT:主库端口

MASTER_USER:主库用户名

MASTER_PASSWORD:主库密码

MASTER_LOG_FILE:主库binlog文件名

MASTER_LOG_POS:主库binlog定位

其中MASTER_LOG_FILEMASTER_LOG_POS需要查询主库信息得知, 在主库中执行以下语句

MySql主从复制_第17张图片

6 / 14

MySql主从复制_第18张图片

MySql主从复制_第19张图片

MySql主从复制_第20张图片

MySql主从复制_第21张图片

MySql主从复制_第22张图片

MySql主从复制_第23张图片

MySql主从复制_第24张图片

MySql主从复制_第25张图片

MySql主从复制_第26张图片

MySql主从复制_第27张图片

MySql主从复制_第28张图片

MySql主从复制_第29张图片

MySql主从复制_第30张图片

MySql主从复制_第31张图片

查看是否成功

MySql主从复制_第32张图片

7 / 14

MySql主从复制_第33张图片

8 / 14

MySql主从复制_第34张图片

9 / 14

MySql主从复制_第35张图片

MySql主从复制_第36张图片

3.然后导入成功后,刷新列表,用户发现刚导入成功的数据死活查不到,因为查询是在从库执行的

MySql主从复制_第37张图片

可以看到从库中查不到那几条数据

5.排查恢复

通过上一步的模拟,发现主从数据不一致,说明主从复制出现了问题。 这个时候需要查询从库的状态:

MySql主从复制_第38张图片

10 / 14

MySql主从复制_第39张图片

11 / 14

mysql> DELETE from student where id = 6;

MySql主从复制_第40张图片

处理完成后重启主从复制

MySql主从复制_第41张图片

12 / 14

MySql主从复制_第42张图片

13 / 14

MySql主从复制_第43张图片

mysql> select * from student;

MySql主从复制_第44张图片

14 / 14

你可能感兴趣的:(mysql,adb,数据库)