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

MySQL——主从复制

1.理解MySQL主从复制原理。

 

2.完成MySQL主从复制。


1.理解MySQL主从复制原理。

1)MySQL支持的复制类型

(1)、基于语句( statement )的复制
        在主服务器上执行SQL 语句,在从服务器上执行同样的语句。 MySQL 默认采用基于语句的复制,效率比 较高。
(2)、基于行( row )的复制
        把改变的内容复制过去,而不是把命令在从服务器上执行一遍。从MySQL 5.0 开始支持。
(3)、混合型( mixed )的复制
        默认采用基于语句的复制,一旦发现基于语句的无法精确复制时,就会采用基于行的复制。
2) 、为什么要做主从复制
        灾备
        数据分布
        负载平衡
        读写分离
        提高并发能力

3)、主从复制原理

        主要基于MySQL 二进制日志
        主要包括三个线程(2 I/O 线程, 1 SQL 线程)
1 MySQL 将数据变化记录到二进制日志中;
2 Slave MySQL 的二进制日志拷贝到 Slave 的中继日志中;
3 Slave 将中继日志中的事件在做一次,将数据变化,反应到自身( Slave )的数据库

 

  • 主数据库有个bin-log二进制文件,记录了所有增删改Sql语句。(binlog线程)
  • 从数据库把主数据库的bin-log文件的sql语句复制过来。(io线程)
  • 从数据库的relay-log重做日志文件中再执行一次这些sql语句。(Sql执行线程)

4)、如何实现主从复制

        在主服务器(master )上
                (1)、启用二进制日志
                (2)、选择一个唯一的server-id
                (3)、创建具有复制权限的用户
        在从服务器(slave )上
                (1)、启用中继日志 (二进制日志可开启,也可不开启)
                (2)、选择一个唯一的server-id
                (3)、连接至主服务器,并开始复制

2.完成MySQL主从复制。

1)、主机环境

主节点 192.168.186.251 master

从节点 192.168.186.100 slave1

2)、环境准备

关闭防火墙

[root@master ~]# systemctl disable firewalld
关闭selinux

[root@master ~]# setenforce 0

时间同步

主、从服务器使用相同版本的mysql数据库

3)、主节点配置

(1)、启用二进制日志 ,并为当前节点设置一个全局唯一的ID号,然后创建目录修改权限

[root@master ~]# vim /etc/my.cnf
[mysqld]
log_bin = /data/logbin/mysql-bin
server_id = 1
[root@master ~]# mkdir /data
[root@master ~]# mkdir /data/logbin
[root@master ~]# chown mysql.mysql /data/logbin/

(2)、重新启动mysql服务

[root@master ~]# systemctl restart mysqld

 (3)、查看/data/logbin/目录是否有数据

[root@master ~]# ls /data/logbin
mysql-bin.000001  mysql-bin.index

 (4)、登录mysql,创建账号,账号授权

[root@master ~]# mysql -uroot -p123456mysql5.7 [(none)]>create user wp@'192.168.186.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)mysql5.7 [(none)]>grant replication slave on *.* to wp@'192.168.186.%';
Query OK, 0 rows affected (0.01 sec)mysql5.7 [(none)]>show grants for 'rep'@'192.168.186.%';
+---------------------------------------------------------+
| Grants for rep@192.168.186.%                            |
+---------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'rep'@'192.168.186.%' |
+---------------------------------------------------------+
1 row in set (0.00 sec)

(5)、锁表设置只读,查看主库状态

mysql5.7 [(none)]>flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)mysql5.7 [(none)]>show variables like '%timeout%';
+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| connect_timeout             | 10       |
| delayed_insert_timeout      | 300      |
| have_statement_timeout      | YES      |
| innodb_flush_log_at_timeout | 1        |
| innodb_lock_wait_timeout    | 50       |
| innodb_rollback_on_timeout  | OFF      |
| interactive_timeout         | 28800    |
| lock_wait_timeout           | 31536000 |
| net_read_timeout            | 30       |
| net_write_timeout           | 60       |
| rpl_stop_slave_timeout      | 31536000 |
| slave_net_timeout           | 60       |
| wait_timeout                | 28800    |
+-----------------------------+----------+
13 rows in set (0.00 sec)mysql5.7 [(none)]>show master status;
+------------------+----------+--------------+------------------+------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                        |
+------------------+----------+--------------+------------------+------------------------------------------+
| mysql-bin.000001 |      607 |              |                  | 388ebd53-291b-11ee-b68c-000c29090543:1-3 |
+------------------+----------+--------------+------------------+------------------------------------------+
1 row in set (0.00 sec)mysql5.7 [(none)]>\q
Bye

 (6)、备份数据库数据

[root@master backup]# mysqldump -uwp -p -A -B | gzip > /server/backup/mysql_bak.$(date +%F).sql.gz
Enter password: 
[root@master backup]# ll
total 4
-rw-r--r--. 1 root root 20 Jul 25 11:17 mysql_bak.2023-07-25.sql.gz

4)、从节点设置

(1)、设置全局唯一的ID号

[root@slave1 ~]# vim /etc/my.cnf[mysqld]
server_id=2

5)、在主节点将备份的数据复制到从节点上,并在从节点查看

master:[root@master ~]# scp /server/backup/mysql_bak.2023-07-25.sql.gz 192.168.186.100:/server/backup
The authenticity of host '192.168.186.100 (192.168.186.100)' can't be established.
ECDSA key fingerprint is SHA256:ZGkVpFFM8KD+H3SRgZmWUpD+IlNK9Dwqcd+TAiGoyzM.
ECDSA key fingerprint is MD5:c2:93:1c:0a:8e:e1:4e:86:cc:90:78:5d:81:42:76:aa.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.186.100' (ECDSA) to the list of known hosts.
root@192.168.186.100's password: 
mysql_bak.2023-07-25.sql.gz                               100%   20    21.8KB/s   00:00    slave1:
[root@slave1 ~]# ll /server/backup/
总用量 4
-rw-r--r-- 1 root root 20 7月  25 23:35 mysql_bak.2023-07-25.sql.gz
[root@slave1 ~]# cd /server/backup/
[root@slave1 backup]# gzip -d mysql_bak.2023-07-25.sql.gz 
[root@slave1 backup]# ll
总用量 0
-rw-r--r-- 1 root root 0 7月  25 23:35 mysql_bak.2023-07-25.sql

6)、设定主从库同步

mysql> change master to
MASTER_HOST='192.168.186.251',
MASTER_PORT=3306,
MASTER_USER='wp',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000025',
MASTER_LOG_POS=194;

7)、启动主从库同步开关

mysql> start slave;
检查状态:
mysql> show slave status\G
*************************** 1. row ***************************Slave_IO_State: Master_Host: 192.168.186.251Master_User: rootMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000025Read_Master_Log_Pos: 194Relay_Log_File: slave1-relay-bin.000001Relay_Log_Pos: 4Relay_Master_Log_File: mysql-bin.000025Slave_IO_Running: YesSlave_SQL_Running: Yes

相关文章:

MySQL——主从复制

1.理解MySQL主从复制原理。 2.完成MySQL主从复制。 1.理解MySQL主从复制原理。 1)、MySQL支持的复制类型 (1)、基于语句( statement )的复制 在主服务器上执行SQL 语句,在从服务器上执行同样的语句。 My…...

报表下载工具

1.需求说明 我有一堆文件的Url地址, 现在需要按照企业,项目和报表类型分类下载到对应的文件夹中 2.相关实体类 企业文件夹定义 package com.vz.utils.report;import lombok.Data; import java.util.ArrayList; import java.util.List; import java.uti…...

树及其遍历

文章目录 树树定义专业术语树分类 二叉树分类存储连续存储(完全二叉树)链式存储一般树的存储森林的存储 线索二叉树哈夫曼树构造步骤 遍历先序遍历中序遍历后续遍历 链式二叉树遍历具体代码已知两种遍历序列求原始二叉树已知先序和中序求后序已知中序和后…...

Qt报错解决办法

anaconda环境安装qt报错解决办法 报错:thresholdGap: 20 pointsShape: 164142 qt.qpa.plugin: Could not find the Qt platform plugin “wayland” in “/home/tianhailong/anaconda3/envs/edge_algorithm/lib/python3.8/site-packages/cv2/qt/plugins” This app…...

Python(四十七)列表对象的创建

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…...

#systemverilog# 说说Systemverilog中《automatic》那些事儿

前面我们学习了有关systemverilog语言中有关《static》的一些知识,同static 关系比较好的哥们,那就是 《automatic》。今天,我们了解认识一下。 在systemveriog中,存在三种并发执行语句,分别是fork..join,fork...join_any和fork..join_none,其中只有fork...join_none不…...

C/C++ 动态内存分配与它的指针变量

一、什么是内存的动态分配 全局变量分配在内存中的静态存储区。局部变量(包括形参)分配在内存中的动态存储区,这个存储区是一个称为栈的区域。除此之外,C语言还允许建立内存动态分配区域,以存放一些临时用的数据&…...

UE5初学者快速入门教程

虚幻引擎是一系列游戏开发工具,能够将 2D 手机游戏制作为 AAA 游戏机游戏。虚幻引擎 5 用于开发下一代游戏,包括Senuas Saga: Hellblade 2、Redfall(来自 Arkane Austin 的合作射击游戏)、Dragon Quest XII: The Flames of Fate、…...

论文笔记--FEDERATED LEARNING: STRATEGIES FOR IMPROVING COMMUNICATION EFFICIENCY

论文笔记--FEDERATED LEARNING: STRATEGIES FOR IMPROVING COMMUNICATION EFFICIENCY 1. 文章简介2. 文章概括3 文章重点技术3.1 联邦学习(federated learning, FL)3.2 Structured updates3.3 Sketched Update 4. 文章亮点5. 原文传送门 1. 文章简介 标题:FEDERATE…...

STM32MP157驱动开发——按键驱动(异步通知)

文章目录 “异步通知 ”机制:信号的宏定义:信号注册 APP执行过程驱动编程做的事应用编程做的事异步通知方式的按键驱动程序(stm32mp157)button_test.cgpio_key_drv.cMakefile修改设备树文件编译测试 “异步通知 ”机制: 信号的宏定义&#x…...

医疗器械维修工程师心得

彩虹医械维修技能班9月将开展本年第三期长期班,目前咨询人员也陆续多了起来,很多刚了解到医疗行业的,自身也没有多少相关的基础,在咨询时会问到没有基础能否学的会? 做了这行业的都知道,无论多么复杂的设备…...

Vue3 Radio单选切换展示不同内容

Vue3 Radio单选框切换展示不同内容 环境&#xff1a;vue3tsviteelement plus 技巧&#xff1a;v-if&#xff0c;v-show的使用 实现功能&#xff1a;点击单选框展示不同的输入框 效果实现前的代码&#xff1a; <template><div class"home"><el-row …...

FreeRTOS之二值信号量

什么是信号量&#xff1f; 信号量&#xff08;Semaphore&#xff09;&#xff0c;是在多任务环境下使用的一种机制&#xff0c;是可以用来保证两个或多个关键代 码段不被并发调用。 信号量这个名字&#xff0c;我们可以把它拆分来看&#xff0c;信号可以起到通知信号的作用&am…...

ChatGPT API进阶调用指南

原文&#xff1a;ChatGPT API进阶调用指南 ChatGPT API 进阶调用指南 ChatGPT API 是基于 OpenAI 的 GPT模型的一个强大工具&#xff0c;可以用于构建各种对话式应用。以下是一些使用 Markdown 语法的进阶调用指南&#xff0c;以帮助您更好地利用 ChatGPT API。 设置用户角色…...

人工智能术语翻译(四)

文章目录 摘要MNOP 摘要 人工智能术语翻译第四部分&#xff0c;包括I、J、K、L开头的词汇&#xff01; M 英文术语中文翻译常用缩写备注Machine Learning Model机器学习模型Machine Learning机器学习ML机器学习Machine Translation机器翻译MTMacro Average宏平均Macro-F1宏…...

kubernetes持久化存储卷

kubernetes持久化存储卷 kubernetes持久化存储卷一、存储卷介绍二、存储卷的分类三、存储卷的选择四、本地存储卷之emptyDir五、本地存储卷之 hostPath六、网络存储卷之nfs七、PV(持久存储卷)与PVC(持久存储卷声明)7.1 认识pv与pvc7.2 pv与pvc之间的关系7.3 实现nfs类型pv与pvc…...

【Rust笔记】意译解构 Object Safety for trait

意译解构Object Safety for trait 借助【虚表vtable】对被调用成员函数【运行时内存寻址】的作法允许系统编程语言Rust模仿出OOP高级计算机语言才具备的【专用多态Ad-hoc Polymorphism】特性。 计算机高级语言中的“多态”术语是一个泛指。它通常可被细化为 基于继承关系的“子…...

Spring Boot单元测试入门指南

Spring Boot单元测试入门指南 JUnit是一个成熟和广泛应用的Java单元测试框架&#xff0c;它提供了丰富的功能和灵活的扩展机制&#xff0c;可以帮助开发人员编写高质量的单元测试。通过JUnit&#xff0c;开发人员可以更加自信地进行重构、维护和改进代码&#xff0c;同时提高代…...

《面试1v1》如何能从Kafka得到准确的信息

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…...

2023秋招面试题持续更新中。。。

目录 1.八股文渐进式MVVM三次握手&#xff0c;四次挥手viteajax组件化和模块化虚拟dom原理流程浏览器内核浏览器渲染过程回流和重绘nextTick 2.项目相关1.声明式导航和编程式导航重写push和replace方法&#xff1a;性能优化图片懒加载路由懒加载 http请求方式 1.八股文 渐进式…...

Java | 数组排序算法

一、冒泡排序 冒泡排序的基本思想是对比相邻的元素值&#xff0c;如果满足条件就交换元素值&#xff0c;把较小的元素移到数组前面&#xff0c;把较大的元素移到数组后面&#xff08;也就是交换两个元素的位置&#xff09;&#xff0c;这样较小的元素就像气泡一样从底部升到顶…...

android studio 连接SQLite数据库并实现增删改查功能

功能代码及调试代码 package com.example.bankappdemo;import android.annotation.SuppressLint; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.util.Log; import android.view.View; im…...

跑步适合戴什么样的耳机、最好的跑步耳机推荐

每个人对于运动的方式都不尽相同&#xff0c;但大多数热爱运动的朋友都离不开音乐的陪伴。运动和带有节奏感的音乐能够激发我们更多的热情和动力。特别是在夏日的时候&#xff0c;我非常喜欢跑步。在酷热的天气里&#xff0c;如果没有音乐的伴随&#xff0c;跑步会变得单调乏味…...

物联网的通信协议

物联网的通信协议 目录 物联网的通信协议一、UART串口通信1.1 串口通信1.2 异步收发1.3 波特率1.4 串口通信协议的数据帧1.5 优缺点1.5.1 优点1.5.2 缺点 二、I^2^C2.1 I^2^C2.2 I^2^C2.3 数据有效性2.4 起始条件S和停止条件P2.5 数据格式2.6 协议数据单元PDU2.7 优缺点2.7.1 优…...

【业务功能篇56】SpringBoot 日志SLF4J Logback

3.5.1 日志框架分类与选择 3.5.1.1 日志框架的分类 日志门面 (日志抽象)日志实现JCL(Jakarta Commons Logging) SLF4J(Simple Logging Facade for Java)Jul(Java Util Logging) , Log4j , Log4j2 , Logback 记录型日志框架 Jul (Java Util Logging)&#xff1a;JDK中的日志…...

leetcode 53. 最大子数组和

2023.7.28 要求找最大和的 连续子数组&#xff0c; 我的思路是用一个temp记录局部最优值&#xff0c;用ans记录全局最优值。 然后在每次for循环进行一个判断&#xff1a;当前遍历元素temp值 是否大于当前遍历元素的值&#xff0c;如果大于&#xff0c;说明temp值是帮了正忙的&a…...

js 下载url返回的excel数据,并解析为json

XLSX GitHub地址&#xff1a;https://github.com/SheetJS/sheetjs/blob/github/dist/xlsx.full.min.js 需要先引入&#xff1a;XLSX.full.min.js // 下载文件的请求 fetch(downloadFileUrl).then(response > {return rsp.blob() }).then(data > {let reader new FileR…...

图文教程:使用 Photoshop、3ds Max 和 After Effects 创建被风暴摧毁的小屋

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 在 Photoshop 中设置图像 步骤 1 打开 Photoshop。 打开 Photoshop 步骤 2 我已经将小屋的图像导入到Photoshop中以演示 影响。如果您愿意&#xff0c;可以使用其他图像。 图片导入 步骤 3 由于小…...

学习Maven Web 应用

Maven Web 应用 本章节我们将学习如何使用版本控制系统 Maven 来管理一个基于 web 的项目&#xff0c;如何创建、构建、部署已经运行一个 web 应用。 创建 Web 应用 我们可以使用 maven-archetype-webapp 插件来创建一个简单的 Java web 应用。 打开命令控制台&#xff0c;…...

page allocation stalls for 问题调研

一.现象分析和内存管理基本概念介绍 最近有一台linux出现卡死的状态,系统不反应,无法ssh登录,只能通过电源关机重启操作恢复,重启后登录系统后台,拉取kernel日志,如下 Jul 12 18:48:06 kernel: [141294.374983] send process: page allocation stalls for 10108ms, orde…...