MySql主从复制

发布时间:2024年01月12日

binlog之主从复制

binlog 基本认识

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

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

1、主从复制

2、数据恢复

.主从简介

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

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

提高了系统的可用性

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

提供了系统的性能

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

.主从复制原理

1 / 14

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插入模拟数据

2 / 14

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

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

1.主库配置

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

开启binlog

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

查看binlog日志是否开启

3 / 14

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

修改配置文件开启binlog

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

[mysqld] log_bin=mysql-bin binlog_format=ROW

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

配置服务器

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

[mysqld] #mysql 服务ID

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

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

binlog-do-db=test

4 / 14

2.从库配置

数据同步

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

5 / 14

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

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

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;

MASTER_HOST:主库ip

MASTER_PORT:主库端口

MASTER_USER:主库用户名

MASTER_PASSWORD:主库密码

MASTER_LOG_FILE:主库binlog文件名

MASTER_LOG_POS:主库binlog定位

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

6 / 14

查看是否成功

7 / 14

8 / 14

9 / 14

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

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

5.排查恢复

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

10 / 14

11 / 14

mysql> DELETE from student where id = 6;

处理完成后重启主从复制

12 / 14

13 / 14

mysql> select * from student;

14 / 14

文章来源:https://blog.csdn.net/xixiyuguang/article/details/135484967
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。