当前位置: 首页 > 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.八股文 渐进式…...

第三幕 御酒掺土,江山为祭

金牌监制&#xff0c;您这一刀改得极其精准&#xff0c;直接把整部戏的格局从“江湖恩怨”拉升到了“家国博弈”的层面&#xff01;确实&#xff0c;如果只谈慈悲&#xff0c;唐三藏只是个高僧&#xff1b;但如果加上李世民的重托和大唐的国运&#xff0c;他就是一个背负着沉重…...

全链路压测实战:双十一级别的流量,我是这样扛住的

作为一名在质量保障领域摸爬滚打多年的测试工程师&#xff0c;我深知传统的单接口压测在如今分布式架构下的无力感。当业务流量达到双十一这种脉冲式、高并发的级别时&#xff0c;任何一个非核心链路上的“短板”都可能引发系统性的雪崩。全链路压测不再是选择题&#xff0c;而…...

基于ATmega2560与ISD1700的智能语音时钟:硬件选型、软件架构与避坑指南

1. 项目概述与核心价值去年折腾那个用ATMega328驱动三块显示屏的时钟时&#xff0c;我主要精力都花在了如何在320x240的TFT屏幕上把时间、日期和图标画得又准又好看上。项目在《Elektor》杂志上发表后&#xff0c;一位热心的读者给我提了个新想法&#xff1a;能不能做个会“说话…...

基于USB ACA模式实现安卓手机边玩边充的游戏手柄设计

1. 项目缘起&#xff1a;当手机性能过剩&#xff0c;却败给了触摸屏几年前&#xff0c;我清理手机游戏时&#xff0c;发现一个挺无奈的现象&#xff1a;性能足以媲美掌机的智能手机里&#xff0c;只剩下一些慢节奏的平台解谜或者数独。那些曾经让我在掌机上废寝忘食的赛车、动作…...

别再死记公式了!用Python手写一个卷积层,彻底搞懂CNN里的‘卷’是怎么算的

用Python手写卷积层&#xff1a;从零理解CNN的"卷"运算 当你第一次看到卷积神经网络(CNN)的数学公式时&#xff0c;那些复杂的符号和下标是否让你望而却步&#xff1f;作为计算机视觉领域的基石&#xff0c;CNN的核心在于理解卷积运算的本质。本文将带你用NumPy从零实…...

从单体到事件驱动的生死跃迁:DeepSeek架构委员会认证的6阶段迁移路线图(含风险热力图与回滚触发阈值表)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;从单体到事件驱动的生死跃迁&#xff1a;DeepSeek架构委员会认证的6阶段迁移路线图&#xff08;含风险热力图与回滚触发阈值表&#xff09; 向事件驱动架构&#xff08;EDA&#xff09;演进不是功能迭代&…...

大厂校招变了:AI 能力正在进入笔试和面试

最近不少同学投递校招时&#xff0c;应该已经发现一个变化&#xff1a; 以前 JD 里写的是“熟悉 Python / Java / SQL / Office 优先”。 现在越来越多岗位开始出现新的描述&#xff1a; “熟练使用 AI 工具者优先” “了解大模型应用者优先” “具备 AI 辅助编程经验优先” “…...

Windows Cleaner如何5步解决C盘爆红问题?完全指南助你释放宝贵空间

Windows Cleaner如何5步解决C盘爆红问题&#xff1f;完全指南助你释放宝贵空间 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否曾经面对C盘爆红的警告束手无…...

ComfyUI-WD14-Tagger:AI智能图像标签提取的终极完整指南

ComfyUI-WD14-Tagger&#xff1a;AI智能图像标签提取的终极完整指南 【免费下载链接】ComfyUI-WD14-Tagger A ComfyUI extension allowing for the interrogation of booru tags from images. 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-WD14-Tagger 在AI图像…...

德国、奥地利和瑞士 SaaS 市场销售策略大揭秘:风险优先,节奏放慢!

1. 嵌入工作流介绍嵌入工作流有其官网主页&#xff0c;具备多种功能&#xff0c;如 ChatGPT 集成、专家支持、无需编码、白标、集成等&#xff1b;还有多种解决方案&#xff0c;包括代理商、CRM、iPaaS 替代方案、物业管理、房地产、初创企业、WordPress 插件、增加收入等&…...