mysql主从复制及故障修复

news2024/10/20 21:09:14

一、主MySQL数据库的配置

        分别在三台主机(chen2/10.110、chen3/10.120、chen4/10.130)中安装mysql数据,其中chen2/10.110作为主MySQL服务器,其余两台作为从MySQL服务器。

1、在主机上部署mysql数据库

        详细的请看上一篇:mysql数据库的备份与恢复-CSDN博客

其上含,部署mysql数据库脚本,可以一键部署对应版本的MySQL数据库。

2、修改相应的配置

        在主mysql服务器的配置中进行修改,开启主服务器的二进制日志功能,设置其 server_id 为本机IP地址,防止与其他主机冲突,关闭其域名解析的功能。

vim /etc/my.cnf.d/mysql-server.cnf

[mysqld]
server-id=1
skip_name_resolve=1
log-bin
socket=/data/mysql/mysql.sock
datadir=/data/mysql
log-error=/data/mysql/mysql.log
pid-file=/tmp/mysql.sock

3、主mysql数据库中创建账号和密码

        mysql数据库的主从复制,是基于账号和密码来进行的,在主服务器中创建有复制权限的账号

create user 'repluser'@'%';
alter user 'repluser'@'%' identified with mysql_native_password by '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'%';

这里是使用的老式的方法来设置密码,用来兼容不同版本的从服务器

进行检测是否吵架呢成功

select user,host,authentication_string from mysql.user;

查看主服务器的二进制日志是否开启

show master status;

二、从MySQL数据库的配置

1、修改从mysql数据库的配置文件

        开启二进制日志功能,设置其服务器id ,跳过域名解析,权限设置为仅读

vim /etc/my.cnf

[mysqld]
server-id=2
skip_name_resolve=1
log-bin
socket=/data/mysql/mysql.sock
datadir=/data/mysql
log-error=/data/mysql/mysql.log
pid-file=/tmp/mysql.sock
read_only

2、主从相连

在从节点上使用有复制权限的用户连接至主服务器,并启动复制线程

修改完配置文件记得重启服务

service mysqld restart

登录从MySQL控制台,进行修改

change master to
    -> master_host='192.168.10.110',
    -> master_user='repluser',
    -> master_password='123456',
    -> master_port=3306,
    -> master_log_file='chen2-bin.000002',
    -> master_log_pos=157;

在上面设置的,主服务器的IP地址、连接用户、用户的密码、主服务器的端口、二进制日志的位置节点、从哪个位点开始

3、开启从节点线程

先检测一下从节点的线程状态信息

SHOW REPLICA STATUS\G

其状态信息,与上面设置的保持一致

开启从节点的主从同步线程:

START REPLICA;

检测从节点的线程状态信息

SHOW REPLICA STATUS\G

查看主从节点开启的线程

show processlist;

从服务器

主服务器

4、检验数据是否正常同步

先查看之前主服务器中创建用户 repluser的权限,确保其具备相应的权限

select user,host,authentication_string from mysql.user;

在主服务器中创建数据库test

从服务器中进行查看数据是否同步

在主数据库test中吵架呢表tab1

create table tab1 (id int primary key,name char(24));

从服务器中查看

表中添加数据

insert into tab1 values (1,'aaa'),(2,'bbb'),(3,'ccc');

5、新建从MySQL服务器,使其关联主MySQL数据库

先在原主数据库中备份数据,这里直接使用脚本进行数据的备份

数据备份详情请看:mysql数据库的备份与恢复-CSDN博客

#!/bin/bash
# 这是一个实战分库的备份脚本
# 
TIME=`date +%F_%H-%M-%S`
DIR=/backup
PASS='123456'

[ -d $DIR ] || mkdir $DIR

for DB in `mysql -u root -p"$PASS" -e 'show databases' | grep -Ev "^Database|.*schema$|sys"`;do
    mysqldump -F --single-transaction --source-data=2 --default-character-set=utf8mb4 -q -B $DB -p"$PASS" | gzip > ${DIR}/${DB}_${TIME}.sql.gz
done

修改对应的密码,就可以直接对,所需要的数据进行备份

将备份数据在新的从服务器上解压,并在其中添加 change master to

查看主服务器的二进制位点,在新增的从服务器上添加对应的配置

启动I/O线程,并进行验证

START REPLICA;

在主节点上,插入数据验证

insert into tab1 values (4,'ddd');

从节点上查看

新增从节点,可以正常的从主节点中,同步数据。

三、主从配置,故障修复

1、测试阻塞从节点

        从之前的配置可以知道,从节点上,设置的仅读,禁止写入。

        这么配置是为了预防,当从节点中添加数据后,其与主节点之间容易造成冲突,形成阻塞状态

在从节点上添加数据

当主节点上也出现数据更新时

其他从节点上数据同步情况

这时,新添加的节点上就会出现阻塞现象

2、对阻塞的节点进行恢复

先关闭 replica 线程

stop replica;

将错误数据删除,并将正确数据手动添加进去

将从节点忽略一个主节点的复制事件,并再次启动replica线程

set global sql_replica_skip_counter=1;

这时,再次查看从节点的状态,就恢复正常了

在主节点中添加数据进行验证

从节点正常复制同步数据

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

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

相关文章

Linux笔记之文件查找和搜索命令which,find,locate,whereis总结

Linux笔记之文件查找和搜索命令which,find,locate,whereis总结 code review! 文章目录 Linux笔记之文件查找和搜索命令which,find,locate,whereis总结1.对比2.whereis 和 which 命令区别3.locate 和 find 命令区别 1.对比 命令功能说明备注which常用于查找可直接执行的命令。…

大模型涌现判定

什么是大模型? 大模型:是“规模足够大,训练足够充分,出现了涌现”的深度学习系统; 大模型技术的革命性:延申了人的器官的功能,带来了生产效率量级提升,展现了AGI的可行路径&#x…

C语言 | 第十七章 | 家庭收支软件-2 读写文件

P 161 项目-CRM(3)-主菜单 2023/3/23 一、显示主菜单 功能说明:用户打开软件,可以看到主菜单,输入5退出软件 思路分析:在customerManage.c中,编写一个函数mainMenu,显示菜单, 在main函数中调&#xff0c…

计算机组成原理(笔记7高速缓冲存储器Cache,计算机组成原理的重难点全、直接、组相连)

为什么要设立高速缓冲存储器 (Cache)? Cache是介于CPU和主存之间的小容量存储器,存取速度比主存快。它能高速地向CPU提供指令和数据,加快程序的执行速度。它是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。…

unity静态批处理

unity静态批处理 静态批处理要求和兼容性渲染管线兼容性 使用静态批处理在构建时进行静态批处理在构建时执行静态批处理的步骤: 在运行时进行静态批处理性能影响 静态批处理 静态批处理是一种绘制调用批处理方法,它将不移动的网格组合在一起&#xff0c…

【HarmonyOS NEXT】权限申请及应用设置页跳转

关键词:鸿蒙、程序访问控制、定位、应用详情页、startability、want 在app开发过程中,常进行系统权限的申请以提供设备访问或个性化功能(如扫一扫、城市定位、剪贴板等),从而保障应用功能的完整性,那么本期…

mov 转 mp4

1. 下载 ffmpeg 下载链接 Tags GyanD/codexffmpeg GitHub 下载 windos 精简版 解压 (里面的mov文件和mp4文件是我后面自己加的) 2. 转换 转换命令 ffmpeg -i 5.mov -c:v libx264 -c:a aac 5.mp4 其中 5.mov 是源文件路径 5.mp4是目标路径 使用lib…

计算机毕业设计 零食批发商仓库管理系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

智发展 智飞跃 亚信安全与新华三深化战略合作

10月16日,亚信安全与新华三集团共同宣布,双方正式签署战略合作协议,双方将基于各自在硬件及软件安全领域的能力和优势,在产品、解决方案、市场拓展等多个领域深入合作,赋能千行百业数字化转型与变革。 亚信安全CEO马红…

跨域问题及常用的5种解决方案

1.什么是跨域问题? 跨域问题通常指的是在浏览器中由于同源策略的限制而产生的问题。同源策略(Same-origin policy)是浏览器的一种安全措施,它要求请求的域名、协议和端口必须与提供资源的网站相同。当一个网页尝试访问另一个来源…

【算法】C++中的二分查找

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

wifi、热点密码破解 - python

乐子脚本,有点小慢,试过多线程,系统 wifi 连接太慢了,需要时间确认,多线程的话系统根本反应不过来。 也就可以试试破解别人的热点,一般都是 123456 这样的傻鸟口令 # coding:utf-8 import pywifi from pyw…

初识git · 基本操作

目录 前言: 基本操作 检查是否存在git 初始化仓库 认识三个区域 添加文件 查看.git文件 修改文件 版本回退 撤销操作 删除文件 我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/suppor…

Qt-多线程

1. Qt 多线程概述 Qt 默认只有一个主线程,该线程既要处理窗口移动,又要处理各种运算。 当要处理的运算比较复杂时,窗口就无法移动,所以在处理程序时在很多情况下都需要使用多线程来完成。 示例:移动窗口和复杂循环 …

八股面试2(自用)

mysql存储引擎 存储引擎:定义数据的存储方式,以及数据读取的实现逻辑 在以前数据库5.5默认MyISAM引擎,之后默认InnoDB引擎 MyISAM引擎的数据和索引是分开存储的,InnoDb将索引和文件存储在同一个文件。 MyISAM不支持事务&#…

SPOOLing技术详解,结合实际场景让你了解什么是假脱机技术。

SPOOLing技术 ​ 在手工操作阶段,主机直接从I/O设备获取数据,但是由于设备速度很慢,主机速度很快。人机速度矛盾明显,主机需要浪费很多时间来等待设备。 什么是脱机技术,脱机技术可以解决什么问题? 所谓脱…

大数据测试:Charles修改响应数据

上一篇大数据测试:Fiddler修改响应数据-CSDN博客 ,有同学反馈有没有Charles的方式修改响应数据,本篇就是Charles修改数据操作步骤,相比较fiddler,Charles相对简单,便捷,我很喜欢 1、背景&…

【笔记】【YOLOv10图像识别】自动识别图片、视频、摄像头、电脑桌面中的花朵学习踩坑

(一)启动 创建环境python3.9 打开此环境终端 (后面的语句操作几乎都在这个终端执行) 输入up主提供的语句:pip install -r requirements.txt 1.下载pytorch网络连接超时 pytorch网址: Start Locally | P…

java -jar 命令自动重启 Java 项目

一、java -jar 方式运行项目 重启Java项目通常意味着你需要先停止当前运行的Java进程,然后再次启动它。下面是在CentOS上执行这些步骤的一种常见方法: 停止Java进程 找到Java进程的PID: 使用ps命令配合grep来查找运行中的Java进程的PID&#…

【Java SE 】封装 的特性 和 static 详解

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 目录 1. 封装的概念 1.1 一个例子 2. 访问权限控制符 3. 包的概念 3.1 import 导入 3.2 常见的包 4. static 静态成员 4.1 static 使用情况 4.2 static 修…