异步复制相关概念和异步复制配置操作

目录

步骤1 复制概述

步骤2 复制的配置

1、配置主库

2、配置从库

3、创建复制专用用户

4、同步数据

5、将从库指向主库启动复制

6、验证异步复制


步骤1 复制概述

MySQL的复制就是将来自一个MySQL数据库服务器(主库)的数据复制到一个或多个MySQL数据库服务器(从库)。其工作原理是通过binlog(二进制日志)记录事务变更然后传送到从库并重放事务,保持数据一致。

复制的主要步骤如下:

主库事务提交,MySQL将事务变更记录到binlog。

主库上日志转储线程(binlog dump)将日志传递给从库I/O线程。

从库I/O线程将日志中的事件记录到本地的中继日志中(relay log)。

从库SQL线程从中继日志中读取事务,应用变更,保持数据和主库一致。

示意图:

https://img-blog.csdnimg.cn/b748889a1b984497b06c709a1993af12.png

如果binlog dump线程追赶上了主库,它将进入睡眠状态,直到主库发送信号量通知其有新的事件产生时才会被唤醒,备库I/O线程会将接收到的事件记录到中继日志中。

使用复制可以带来如下好处:

复制可以将读操作分布到多个服务器上,对读密集型业务有更好的承载能力。

由于读的压力分离至从库,主库可以分配更多的资源来响应写请求。

提高安全,可以利用延迟复制等特性,快速恢复主库上的误操作。

高可用,复制+故障切换系统,可以让系统宕机时快速恢复,响应请求。

步骤2 复制的配置

MySQL最基本的复制是单路、异步、基于日志位置的复制。其架构是1台主库,1台或多台从库通过指定日志文件及位置连接到主库。

现有2台数据库环境如下,示例基本异步复制的配置步骤:

192.168.30.3(主库 主机名master)

192.168.30.4(从库 主机名slave)

1、配置主库

为主库配置唯一的server_id并打开二进制日志,配置数据库配置文件(Redhat/CentOS默认是/etc/my.cnf)在[mysqld]选项下加入下列参数:

server_id=3

log_bin=bin-log

sync_binlog=1

innodb_flush_log_at_trx_commit=1

其中server_id和log_bin参数是必选,其他参数是可选项,根据自身需要选择:

server_id需要在整个复制拓扑中保持唯一,一种通用的建议是采用IP地址的后8位,只要遵循某种规则保持唯一即可。

log_bin用于打开二进制日志并明确指定日志名称,默认日志采用主机名命名,建议明确指定日志名,否则后期主机更名容易带来问题。

sync_binlog(强烈推荐)保证每次提交事务会将binlog同步到磁盘,保证服务器崩溃时不丢失事务,还可以防止主从不一致。

innodb_flush_log_at_trx_commit 保证每次提交事务Innodb将日志写入redo log,只针对innodb表。

2、配置从库

修改从库的配置参数,必要时重启服务器。在[mysqld]选项下加入下列参数:

server_id=4

relay_log=relay-bin

log_bin=bin-log

log_slave_updates=1

read_only=1

skip_slave_start=1

上面的配置只有server_id=4是必须的,其他都是可选项,自己可以根据需要选择:

relay_log用于指定中继日志名称以避免主机更名带来的问题。

log_bin和log_slave_update用来控制slave在复制时同时也将事件写入自己的二进制日志(级联复制使用)。

read_only=1备库建议开启,用来防止普通用户修改数据,但具有super权限的用户依然是可以修改的。

skip_slave_start阻止备库启动时自动开启复制,如果备库在崩溃后处于不一致的状态下自动启动复制,可能会导致更多的损坏。

3、创建复制专用用户

在主库上创建用户并赋予replication slave权限:

create user 'repuser'@'192.168.30.%' identified  by '123456';

select user,host from mysql.user;

(drop user 'repuser'@'192.168.30.%';不用做)

grant replication slave on *.* to 'repuser'@'192.168.30.%';

4、同步数据

大部分情况下主库都是都不是空的,这就需要在开启复制前获取主库的快照并还原到从库,保证复制开始时数据一致。主要方法有3种:

直接复制数据文件(需要关闭主库暂停业务)

使用mysqldump工具转储(便捷、但数据量大时速度较慢)

使用xtrabackup等第三方工具转储(便捷、速度较快)

第一种方法由于需要关库,意味着业务要生产业务要暂停,通常不会采用。第二种采用mysqldump转储,适合数据量中等的情况。如果不能关库,采用mysqldump转储又太慢,可以试着采用第三方工具xtrabackup,由于是采用物理层面的数据文件备份,所以速度比mysqldump快很多。

下面示例采用mysqldump转储的方式,在主库开启一个会话执行下面语句:

flush tables with read lock;

show master status;

第一句会阻止所有的数据库变更,第二句显示当前的日志名称和位置,记录下来,这个就是复制的起点。

此时,另开一个会话获取数据快照,注意备份时第一个执行flush table with read lock的会话不能退出,否则可能会发生数据变更。

mysqldump –uroot –p --all-databases --master-data > dbdump.sql

导出之后第一个会话就可以退出了,或者执行unlock tables,让主库继续执行业务。

将上述转储文件传输到备库并导入:

scp dbdump.sql root@'192.168.30.4':/root

登录到备库上还原数据,此时主备库的数据已经相同,可以启动复制了:

mysql –uroot –p < dbdump.sql

mysql –uroot –p < dbdump.sql

5、将从库指向主库启动复制

在从库上执行change master to(8.0.23版本以上使用change replication source to),指定主库位置及我们在第三步建立的复制用户:

change master to

master_host = '192.168.116.130',

master_user='root',

master_password='111111',

master_log_file=' bin-log.000002',

master_log_pos=245;

最后两句master_log_file,master_log_pos就是上一步主库show master status显示的日志名和偏移量,由于我们在转储时加了--master-data选项,所以备份文件中自动会带上这个坐标,不加也可以。

启动复制:

start slave;

show slave status \G;

start slave 语句会启动从库上的I/O线程和SQL线程,并且连接到主库(主库上启动binlog dump线程)。

show slave status,我们可以看到备库的I/O和SQL线程都已经起来了,Slave_IO_State显示正在等待主库发送更多的事件。MySQL的基础异步复制就完成了。

6、验证异步复制

主库创建数据库

create database 自己名字

show databases;

从库查看数据库

show databases;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1489159.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Python文献调研(一)环境搭建

一、安装Python版本 1.点击进入Python官网 Download Python | Python.org 2.根据自己的需求选择python的版本&#xff0c;点击【Download】 3.自定义安装路径&#xff0c;记得勾选Add Python xxx to PATH 这步是自动配置环境变量的&#xff0c;如果忘记勾选&#xff0c;建议…

深入解析AI技术:从深度学习到GPT大模型的全面探索

深入解析AI技术&#xff1a;从深度学习到GPT大模型的全面探索 引言 在21世纪的科技浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;无疑是最引人注目的领域之一。从简单的语音助手到复杂的自动驾驶系统&#xff0c;AI正以前所未有的速度改变着我们的世界。而深度学习&a…

DataEase一键部署:轻松搭建数据可视化平台

DataEase是一个开源的数据可视化和分析工具&#xff0c;旨在帮助用户轻松创建和共享数据仪表盘。它支持多种数据源&#xff0c;包括关系型数据库&#xff0c;文件数据源&#xff0c;NoSQL数据库等&#xff0c;提供强大的数据查询、处理和可视化功能。DataEase 不仅是一款数据可…

vscode 调试web后端

1、调试环境配置 一、安装python环境管理器 其中要先在vscode选择对应的python环境&#xff0c;最方便的是按照环境管理器后从中选择。其中在【externsions】里面安装python即可。 如下&#xff1a; 二、编写launch.json文件 其中如下&#xff1a; {// Use IntelliSense …

Web前端知识视频教程分享(五) Bootstrap

资料下载地址&#xff1a; https://545c.com/f/45573183-1336822373-45bb4f?p7526 (访问密码: 7526)

C++ | Leetcode C++题解之第292题Nim游戏

题目&#xff1a; 题解&#xff1a; class Solution { public:bool canWinNim(int n) {return n % 4 ! 0;} };

【C++】——红黑树(手撕红黑树,彻底弄懂红黑树)

目录 前言 一 红黑树简介 二 为什么需要红黑树 三 红黑树的特性 四 红黑树的操作 4.1 变色操作 4.2 旋转操作 4.3 插入操作 4.4 红黑树插入代码实现 4.5 红黑树的删除 五 红黑树迭代器实现 总结 前言 我们之前都学过ALV树&#xff0c;AVL树的本质就是一颗平…

面试 SQL整理 常见的SQL面试题:大厂经典60题(一)

目录 SQL基础知识整理: 数据库基础知识 为什么要使用数据库 数据保存在内存 数据保存在文件 数据保存在数据库 什么是SQL&#xff1f; 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 MySQL的binlog有有几种录入格式&#xff1f;分别有什么区别&…

photoshop学习笔记——选区3 快速选择工具

快速选择工具 W shift W 在3种快速选择工具之间切换 对象选择工具 photoshop CC中没有这个工具&#xff0c;利用AI&#xff0c;将款选中的对象快速的提取选区&#xff0c;测试了一下&#xff0c;选区制作的非常nice快速选择工具 跟磁性套索类似&#xff0c;自动识别颜色相似…

24年第三届钉钉杯大学生大数据挑战赛浅析

需要完整资料&#xff0c;请关注WX&#xff1a;“小何数模”&#xff01; 本次钉钉杯大数据挑战赛的赛题已正式出炉&#xff0c;无论是赛题难度还是认可度&#xff0c;该比赛都是仅次于数模国赛的独一档&#xff0c;可以用于国赛前的练手训练。考虑到大家解题实属不易&#xf…

Laravel:揭秘PHP世界中最优雅的艺术品

1. 引言 在PHP的世界里&#xff0c;框架如繁星般璀璨&#xff0c;但Laravel以其独特的魅力和优雅&#xff0c;成为了众多开发者心中的艺术品。本文将深入探讨Laravel为何能在众多PHP框架中脱颖而出&#xff0c;成为最优雅的选择。 1.1 Laravel的诞生背景 Laravel的诞生可以…

React Native在移动端落地实践

在移动互联网产品迅猛发展的今天&#xff0c;技术的不断创新使得企业越来越注重降低成本、提升效率。为了在有限的开发资源下迅速推出高质量、用户体验好的产品&#xff0c;以实现公司发展&#xff0c;业界催生了许多移动端跨平台解决方案。这些方案不仅简化了开发流程&#xf…

代码随想录算法训练营day21 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

碎碎念&#xff1a;加油 参考&#xff1a;代码随想录 669. 修剪二叉搜索树 题目链接 669. 修剪二叉搜索树 思想 递归三部曲&#xff1a; 参数和返回值&#xff1a;返回值返回的是处理好的二叉搜索树。终止条件&#xff1a;rootNULL 返回NULL&#xff1b;如果root的值小于…

【计算机网络】TCP三次握手和四次挥手

客户端–发送带有 SYN 标志的数据包–一次握手–服务端 服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端 客户端–发送带有带有 ACK 标志的数据包–三次握手–服务端 为什么是三次握手而不是两次握手&#xff1f; 在不可靠的网络中&#xff0c;可能会出现包传输…

算法刷题day18|二叉树:669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树

669. 修剪二叉搜索树 如果结点的值小于 low&#xff0c;那么说明该结点及它的左子树都不符合要求&#xff0c;我们返回对它的右结点进行修剪后的结果&#xff1b;如果结点的值大于 high&#xff0c;那么说明该结点及它的右子树都不符合要求&#xff0c;我们返回对它的左子树进…

2023IMO预选题几何第6题

锐角 △ A B C \triangle ABC △ABC 的外接圆为 ω \omega ω, 圆 I I I 与 ω \omega ω 内切于 A A A, 且与 B C BC BC 切于点 D D D. 设直线 A B AB AB, A C AC AC 分别与 I I I 交于点 P P P, Q Q Q, 点 M M M, N N N 在直线 B C BC BC 上, 满足 B B B 是 …

Python+selenium web自动化测试知识点合集2

选择元素 对于百度搜索页面&#xff0c;如果我们想自动化输入“selenium”&#xff0c;怎么做呢&#xff1f; 这就是在网页中&#xff0c;操控界面元素。 web界面自动化&#xff0c;要操控元素&#xff0c;首先需要 选择 界面元素 &#xff0c;或者说 定位 界面元素 就是 先…

基于豆瓣音乐、豆瓣图书、豆瓣电影详情获取、长短评获取【豆瓣全家桶系列】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 豆瓣电影系列基于Python的海量豆瓣电影、数据获取、数据预处理、数据分析、可视化、大屏设计项目&#xff08;含数据库&#xff09;基于多种机器学习的豆瓣电影评分预测与多维度可视化【可…

设计模式-结构型-09-外观模式

文章目录 1、影院管理项目2、外观模式基本介绍4、MyBatis 框架源码分析5、外观模式总结 1、影院管理项目 组建一个家庭影院&#xff1a; DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机&#xff0c;要求完成使用家庭影院的功能&#xff0c;其过程为&#xff1a; 直接用…

Docker安装oracle19c

文章目录 Docker安装oracle19c1. 拉取镜像2. 创建目录并赋权3. 构建容器并启动4. 查看日志5. 登录docker容器里面6. 登录sqlplus 创建PDB用户7. 查看show pdbs7. 切换数据库8. 创建用户9. 授权10. 使用navicat连接11. 参考和感谢 Docker安装oracle19c 1. 拉取镜像 docker pul…