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

MySQL实现主从同步

一、首先我们准备3台mysql

分别为:

主服务器:test-mysql-master,端口3306

从服务器:test-mysql-slave1,端口3307

从服务器:test-mysql-slave2,端口3308

注意:如果防火墙是开着的记得把关掉,并且重启docker,否则安装的mysql会无法启动,当然也可以dan'du

#关闭docker

systemctl stop docker

#关闭防火墙

systemctl stop firewalld

#启动docker

systemctl start docker

1.1、准备主服务器

step1:在docker中创建并启动MySQL主服务器:端口3306

docker run -d \
-p 3306:3306 \
-v /test/mysql/master/conf:/etc/mysql/conf.d \
-v /test/mysql/master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name test-mysql-master \
mysql:8.0.35

step2:创建MySQL主服务器配置文件:

默认情况下MySQL的binlog日志是自动开启的,可以通过如下配置定义一些可选配置

vim /test/mysql/master/conf/my.cnf

配置内容如下

[mysqld]

#服务器唯一id,默认值1

server-id=1

#设置日志格式,默认值ROW

binlog_format=STATEMENT

#二进制日志名,默认binlog

# log-bin=binlog

#设置需要复制的数据库,默认复制全部数据库

#binlig-do-db=mytestdb

#设置 不需要复制的数据库

#binlog-ignore-db=mysql

#binlog-ignore-db=infomation_schema

重启MySQL容器

docker restart test-mysql-master

step3:使用命令行登录MySQL主服务器:

#进入容器:env LANG=C.UTF-8 避免容器中显示中文乱码

docker exec -it test-mysql-master env LANG=C.UTF-8 /bin/bash

#进入容器内的mysql命令行

mysql -uroot -p

#修改默认密码校验方式

#ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

step4:主机中创建slave用户:

--创建slave用户

create USER 'test_slave'@'%';

--设置密码

ALTER USER 'test_slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

--授予复制权限

GRANT REPLICATION SLAVE ON *.* TO 'test_slave'@'%';

--刷新权限

FLUSH PRIVILEGES;

step5:主机中查询master状态:

执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

SHOW MASTER STATUS

记下File和Position的值。执行完此步骤后不要再操作主服务器MYSL,防止主服务器状态值变化,

注意如果执行上述命令出现问题很有可能是因为mysql版本问题,可以换一个版本试试(我已经踩过坑了)

1.2、准备从服务器

可以配置堕胎从机slave1、slave2...,这里以配置slave1为例

step1:在docker中创建并启动MySQL从服务器:端口3307

docker run -d \-p 3307:3306 \-v /test/mysql/slave1/conf:/etc/mysql/conf.d \-v /test/mysql/slave2/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 \--name test-mysql-slave1 \mysql:8.0.35

step2:创建MySQL从服务器配置文件:

vim /test/mysql/slave1/conf/my.cnf

配置如下内容:

[mysqld]

#服务器唯一id,每台服务器的id必须不同,如果配置其他从机,注意修改id

server-id=2

#中继日志名,默认xxxxxxxxxxxxx-relay-bin

#relay-log=relay-bin

重启MySQL容器

docker restart test-mysql-slave1

step3:使用命令行登录MySQL从服务器:

#进入容器:

#进入容器:env LANG=C.UTF-8 避免容器中显示中文乱码

docker exec -it test-mysql-slave1 env LANG=C.UTF-8 /bin/bash

#进入容器内的mysql命令行

mysql -uroot -p

#修改默认密码校验方式

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

step4:在从机上配置主从关系:

在从机上执行以下SQL操作

CHANGE MASTER TO MASTER_HOST='192.168.159.131',
MASTER_USER='test_slave',MASTER_PASSWORD='123456',MASTER_PORT=3306,
MASTER_LOG_FILE='binlog.000003',MASTER_LOG_POS=4252;

1.3、启动主从同步

启动从机的复制功能,执行SQL:可以只执行4,5两步

1、停止从服务器的I/O线程
STOP REPLICA IO_THREAD;
注意:mysql8.0+中,SLAVE关键字已经被废弃,应该使用REPLICA关键字。在mysql5.7及之前版本中,可以使用STOP SLAVE IO_THREAD;
2、等待I/O线程停止,可以通过检查从服务器的状态确认
SHOW SLAVE STATUS \G;
3、重新执行change master to语句来更新主服务器信息
change master to master_host='192.168.2.177',master_user='slave',master_password='123456',master_port=3306,master_log_file='binlog.000071',master_log_pos=1672;                        
4、启动从服务器的I/O线程,如果是mysql5.7及更早版本,使用START SLAVE IO_THREAD;
START REPLICA IO_THREAD;
5、检查从服务器的状态以确保复制正常运行
SHOW SLAVE STATUS \G;

1.4、实现主从同步

create database db_test;
use db_test;
create table t_test(id bigint auto_increment,uname varchar(30),primary key(id)
);insert into t_user(uname) values('lalal');
insert into t_user(uname) values('dwadaw');

1.5、停止和重置

需要的时候,可以使用如下SQL语句

#在从机上执行。功能:停止I/O线程和SQL线程的操作

stop slave;

#在从机上执行。功能:用于删除slave数据库的relaylog日志文件,并查询启动新的relaylog文件

reset slave;

#在主机上执行。功能:删除所有的binglog日志文件,并将日志索引文件清空,重新开始所有新的日志文件。

#用于第一次搭建主从库时,进行主从binlog初始化工作;

reset master;

1.6、常见问题

问题一

启动主从同步后,常见错误是Slave_IO_Running:No或者Connecting的情况,吃屎查看下方的Last_IO_ERROR错误日志,根据日志中显示的错误信息在网上搜索解决方案即可

问题2

启动docker容器后提示WARNING:IPv4  forwarfing。。。。

这个错误虽然不影响主从同步的搭建,但是如果想从远程客户端通过以下方式连接docker中的MySQL则没法连接

解决方案:

#修改配置文件:

vim /usr/lib/sysctl.d/00-system.conf

#追加

net.ipv4.ip_forward=1

#接着重启网络

systemctl restart network

相关文章:

MySQL实现主从同步

一、首先我们准备3台mysql 分别为: 主服务器:test-mysql-master,端口3306 从服务器:test-mysql-slave1,端口3307 从服务器:test-mysql-slave2,端口3308 注意:如果防火墙是开着的记得把关掉,并且重启docker…...

人工智能--数学基础

目录 ​编辑2.1 线性代数基础 2.2 微积分及优化理论 2.3 概率论与统计学 2.4 信息论简介 2.1 线性代数基础 线性代数是处理向量空间(包括有限维或无限维)以及这些空间上的线性映射的一门数学分支。在线性代数中,最核心的概念包括向量、矩…...

2024人工智能技术的普及 如何看待AI技术的应用前景

AI 技术的应用前景十分广阔,但也面临着一些挑战,以下是对其应用前景的一些看法: 积极方面: 多行业深度融合与效率提升5: 医疗领域:AI 在医疗影像分析、辅助诊断、疾病预测等方面具有巨大潜力。例如&#xf…...

日常记录:springboot 2.2.5 + es 6.8.12

前言 最近有用到搜索引擎的功能,这不得把之前的es过程实践一遍,但发现过程坎坷,因为版本太低了。 一、安装es 6.8.12 安装过程跟之前写那章日常记录:elasticsearch 在linux安装_elasticsearch linux安装-CSDN博客一样&#xff0…...

MySQL数据库备份与恢复详解

文章目录 一、为什么需要备份数据库?二、MySQL数据库的备份方式1. 逻辑备份2. 物理备份3. 二进制日志备份 三、恢复数据库1. 使用mysqldump备份文件恢复2. 使用物理备份恢复3. 使用二进制日志恢复 四、备份与恢复的最佳实践五、结语 在日常的数据库运维中&#xff0…...

10.22 MySQL

存储过程 存储函数 存储函数是有返回值的存储过程,存储函数的参数只能是in类型的。具体语法如下: characteristic 特性 练习: 从1到n的累加 ​​​​​​ create function fun1(n int) returns int deterministic begindeclare total i…...

「AIGC」n8n AI Agent开源的工作流自动化工具

n8n AI Agent 是一个利用大型语言模型(LLMs)来设计和构建智能体(agents)的工具,这些智能体能够执行一系列复杂的任务,如理解指令、模仿类人推理,以及从用户命令中理解隐含意图。n8n AI Agent 的核心在于构建一系列提示(prompts),使 LLM 能够模拟自主行为。 传送门→ …...

Android 中获取和读取短信验证码

方法一:通过 SMS Retriever API SMS Retriever API 是 Google 提供的一种安全的方式,可以从系统中获取不需要权限的短信验证码。这种方式不需要请求 READ_SMS 权限,非常适合处理短信验证码的情况。 1. 在 build.gradle 中添加依赖 dependen…...

SQL语句高级查询(适用于新手)

SQL查询语句的下载脚本链接!!! 【免费】SQL练习资源-具体练习操作可以查看我发布的文章资源-CSDN文库https://download.csdn.net/download/Z0412_J0103/89908378 本文旨在为那些编程基础相对薄弱的朋友们提供一份详尽的指南,特别聚…...

main.ts中引入App.vue报错,提示“Cannot find module ‘./App.vue’ or its corresponding type

原因 代码编辑器:vscode ,使用vue3,所以安装了 Volar 插件,可以使 vue 代码高亮显示,不同颜色区分代码块,以及语法错误提示等 提示:如果使用的是vue2,则使用 Vetur 插件&#xff1…...

Android15音频进阶之组音量调试(九十)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+…...

【Java】常用方法合集

以 DemoVo 为实体 import lombok.Data; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;Data ExcelIgnoreUnannotated public class ExportPromoteUnitResult {private String id;ExcelProperty(value &qu…...

深入了解Vue Router:基本用法、重定向、动态路由与路由守卫的性能优化

文章目录 1. 引言2. Vue Router的基本用法2.1 基本配置 3. 重定向和命名路由的使用3.1 重定向3.2 命名路由 4. 在Vue Router中如何处理动态路由4.1 动态路由的概念4.2 如何处理动态路由4.3 动态路由的懒加载 5. 路由守卫的实现与性能影响5.1 什么是路由守卫?5.2 路由…...

深入理解InnoDB底层原理:从数据结构到逻辑架构

💡 无论你是刚刚踏入编程世界的新人,还是希望进一步提升自己的资深开发者,在这里都能找到适合你的内容。我们共同探讨技术难题,一起进步,携手度过互联网行业的每一个挑战。 📣 如果你觉得我的文章对你有帮助,请不要吝啬你的点赞👍分享💕和评论哦! 让我们一起打造…...

Linux介绍及操作命令

Linux 是一种开源的操作系统,具有以下特点和优势: 一、稳定性和可靠性 内核稳定 Linux 内核经过多年的发展和优化,具有高度的稳定性。它能够长时间运行而不出现崩溃或故障,适用于服务器和关键任务应用。内核的稳定性得益于其严格的开发流程和质量控制,以及全球开发者社区…...

JS | 详解图片懒加载的6种实现方案

一、什么是懒加载? 懒加载是一种对网页性能优化的方式,比如,当访问一个网页的时候,优先显示可视区域的图片而不是一次加载全部的图片,当需要显示时,再发送请求加载图片。 懒加载 :延迟加载&…...

Java | Leetcode Java题解之第502题IPO

题目&#xff1a; 题解&#xff1a; class Solution {public int findMaximizedCapital(int k, int w, int[] profits, int[] capital) {int n profits.length;int curr 0;int[][] arr new int[n][2];for (int i 0; i < n; i) {arr[i][0] capital[i];arr[i][1] profi…...

JavaWeb学习(3)

目录 一、9大内置对象 二、JavaBean 三、MVC三层架构 Model View Controller&#xff08;Servlet&#xff09; 四、Filter&#xff08;过滤器&#xff09; 应用一&#xff1a;处理中文乱码 应用二&#xff1a;登录验证 五、监听器 六、JDBC 一、9大内置对象 PageCont…...

【含开题报告+文档+PPT+源码】基于SpringBoot的百货商城管理系统的设计与实现

开题报告 随着互联网技术的快速发展和电子商务的兴起&#xff0c;网上购物已成为人们日常生活中不可或缺的一部分。传统的实体店面由于时间和空间的限制&#xff0c;无法满足消费者对于便捷、快速、个性化购物体验的需求。在此背景下&#xff0c;基于 Java 的网上商城系统应运…...

Elasticsearch 实战应用与优化策略研究

一、引言 1.1 研究背景 在当今大数据时代&#xff0c;数据量呈爆炸式增长&#xff0c;对数据的存储、检索和分析提出了更高的要求。Elasticsearch 作为一款强大的分布式搜索和分析引擎&#xff0c;在这个时代背景下显得尤为重要。 随着数据密集型应用场景的不断增加&#xf…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...