当前位置: 首页 > news >正文

MySQl高级篇-主从复制

主从复制

复制的基本原理

slave会从master读取binlog来进行数据同步
在这里插入图片描述
MySQL复制过程分成三步:

  1. master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
  2. slavemasterbinary log events拷贝到它的中继日志(relay log) ;
  3. slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行化的

复制的基本原则:

  1. 每个slave只有一个master
  2. 每个slave只能有一个唯一的服务器ID
  3. 每个master可以有多个salve

复制的最大问题是延迟。

一主一从常见配置

准备工作

一、mysql版本一致且后台以服务运行

二、主从都配置在[mysqld]结点下,都是小写

服务器配置

一、主机修改my.cnf配置文件:

1.、[必须]主服务器唯一ID:

server-id=1

2、[必须]启用二进制日志(指定日志存放位置)

log-bin=/var/lib/mysql/mysql-bin

3、 [可选]启用错误日志

log-err=自己本地的路径/mysqlerr

4、[可选]根目录

basedir="本地路径"

5、[可选]临时目录

tmpdir=“自己本地路径”

6、[可选]数据目录

datadir=“自己本地路径/Data/”

7、主机,读写都可以

read-only=O

8、[可选]设置不要复制的数据库

binlog-ignore-db=mysql

9、[可选]设置只复制某个数据库

binlog-do-db=需要复制的主数据库名字
二、从机修改my.cnf配置文件:

1、[必须]从服务器唯一ID

server-id=2

2、[可选]启用二进制日志

log-bin=/var/lib/mysql/mysql-bin
三、配置文件,请主机+从机都重启后台mysql服务

linux中:

service mysql stop
service mysql start

如果你和我一样是用的docker容器可以这样重启:

docker restart xxxxxx
四、在主机上建立帐户并授权slave

在主服务器上执行此命令,允许从服务器使用指定的用户名和密码连接到主服务器,并读取二进制日志进行数据复制。

创建用户并设置密码:

CREATE USER 'xxxx'@'从机器数据库IP' IDENTIFIED BY '123456';

授予用户复制权限:

GRANT REPLICATION SLAVE ON *.* TO 'xxxx'@'从机器数据库IP';

刷新权限

FLUSH PRIVILEGES;
  • GRANT 是MySQL中的一个命令,用于授予用户特定的权限。
  • REPLICATION SLAVE 是授予的权限类型,允许指定用户读取主服务器的二进制日志,以便进行数据复制。
  • ON *.**.*表示权限适用于所有数据库和所有表。也就是说,这个用户可以访问主服务器上的所有数据库进行复制操作。
  • TO 'xxxx'@'从机器数据库IP'xxxx是要创建或更新的用户名,不要使用root
  • IDENTIFIED BY 用于设置或更新指定用户的密码,123456 是该用户的密码。

查询master的状态

show master status;

记录下FilePosition的值
在这里插入图片描述
执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

五、在Linux从机上配置需要复制的主机

在MySQL命令行中执行以下命令:

CHANGE MASTER TO MASTER_HOST='主机IP',
MASTER_USER='xxxx',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='File文件名',
MASTER_LOG_POS=Position数字;

启动从服务器复制功能:

start slave;

查看主从配置状态:

show slave status\G

下面两个参数都是Yes,则说明主从配置成功!

在这里插入图片描述

如果上面的position输错了,可以重置

reset slave;

然后暂停主从复制

stop slave;

重新配置

CHANGE MASTER TO MASTER_HOST='主机IP',
MASTER_USER='xxxx',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='File文件名',
MASTER_LOG_POS=Position数字;

然后开启

start slave;
六、主机新建库、新建表、insert记录,从机复制

主机输入:

CREATE DATABASE testdb;
USE testdb;
CREATE TABLE testtable (id INT PRIMARY KEY, value VARCHAR(50));
INSERT INTO testtable VALUES (1, 'Hello World');

在这里插入图片描述

从机自动同步

在这里插入图片描述

七、如何停止从服务复制功能
stop slave;

如果有一段数据暂时不要,从机可以停止主从复制后,从主机那里查询新的position刻度,重新开始复制。

http://www.lryc.cn/news/399770.html

相关文章:

  • JMeter案例分享:通过数据验证的错误,说说CSV数据文件设置中的线程共享模式
  • 数学建模·Topsis优劣解距离法
  • 数学建模中常用的数据处理方法
  • C嘎嘎:函数模版和类模版
  • 使用 Apache Pulsar 构建弹性可扩展的事件驱动应用
  • 【国产开源可视化引擎Meta2d.js】视频
  • 零信任网络安全
  • Python酷库之旅-第三方库Pandas(022)
  • 数据建设实践之大数据平台(一)准备环境
  • VUE2用elementUI实现父组件中校验子组件中的表单
  • 人工智能算法工程师(中级)课程9-PyTorch神经网络之全连接神经网络实战与代码详解
  • UDP网络通信(发送端+接收端)实例 —— Python
  • 从零开始实现大语言模型(五):缩放点积注意力机制
  • PTA 7-15 希尔排序
  • 【密码学】分组密码的设计原则
  • 深入解析【C++ list 容器】:高效数据管理的秘密武器
  • NFS服务器、autofs自动挂载综合实验
  • 自动驾驶事故频发,安全痛点在哪里?
  • SpringSecurity框架【认证】
  • python安全脚本开发简单思路
  • WPF学习(4) -- 数据模板
  • GuLi商城-商品服务-API-品牌管理-JSR303分组校验
  • PyTorch DataLoader 学习
  • TCP传输控制协议二
  • 【学习笔记】无人机(UAV)在3GPP系统中的增强支持(五)-同时支持无人机和eMBB用户数据传输的用例
  • 使用F1C200S从零制作掌机之debian文件系统完善NES
  • Vue 3 与 TypeScript:最佳实践详解
  • PyMysql error : Packet Sequence Number Wrong - got 1 expected 0
  • MVC 生成验证码
  • OSPF.综合实验