mysql主从复制及故障修复

ops/2024/10/21 4:02:35/

一、主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 $DIRfor DB in `mysql -u root -p"$PASS" -e 'show databases' | grep -Ev "^Database|.*schema$|sys"`;domysqldump -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.ppmy.cn/ops/127172.html

相关文章

突发!审查英特尔!

10月17日消息,据环球时报报道,中国网络空间安全协会发文,披露英特尔产品安全漏洞问题频发、可靠性差、监控用户、暗设后门等问题,“建议启动网络安全审查”! 该协会表示,从2023年开始,英特尔CPU…

权限管理系统的详细解析与实现

1. 权限管理的基础概念 1.1 什么是权限管理? 权限管理是指通过对用户身份的验证和权限的分配,控制用户对系统资源的访问范围和操作权限。它主要包括: 认证:确认用户的身份是否合法,通常通过用户名/密码或多因子验证…

《环境感知:开启智能生活新视角》

《环境感知:开启智能生活新视角》 一、环境感知的定义与作用二、环境感知的技术与方法(一)传感器技术(二)数据融合技术(三)机器学习与深度学习技术 三、环境感知在不同领域的应用(一…

学习最新vue20.17.0-事件处理

vue中文官网事件处理 | Vue.js (vuejs.org) 我在官网基础上,添加些代码,方便初学者学习,能够快速理解官网内容,掌握自己所需要的知识,以便节省宝贵的时间。 事件处理 监听事件 我们可以使用 v-on 指令 (简写为 @) 来监听 DOM 事件,并在事件触发时执行对应的 JavaScript…

【MySQL】子查询,合并查询

目录 1.子查询 1.1.单行子查询 1. 2.多行子查询 1.3.多列子查询 1.4.在from子句里面使用子查询 2.合并查询 1.子查询 子查询,也称为嵌套查询或子选择,是SELECT嵌入在另一个SQL查询的 WHERE 或 HAVING子句中的查询。子查询返回的数据由外部语句使用&a…

【Vue】项目部署本地部署和服务器部署

本地部署 在本地部署一个 Vue 项目的 dist 目录,可以通过几种不同的方法来实现。以下是一些常见的方法: 1. 使用简单的 HTTP 服务器 方法 1:使用 http-server http-server 是一个简单的、零配置的命令行 HTTP 服务器。你可以使用它快速地…

git 操作暂存区命令用法大全

以下是 Git 操作暂存区&#xff08;也称为索引区&#xff09;的常用命令及用法大全&#xff1a; 1. git add 将文件添加到暂存区。 git add <file> 示例&#xff1a; git add index.html git add .&#xff1a;添加当前目录下的所有文件到暂存区。git add -p&#…

java基本数据类型

目录 一.基本数据类型 1.整型变量 (1)整型变量 (2)长整型变量 (3)短整型变量 (4)字节型变量 2.浮点型变量 (1)双精度浮点型 (2)单精度浮点型 3.字符型变量 (1)字符型 4.布尔型变量 (1)布尔型 二.类型提升 三.类型转换 java的数据类型大体上和c语言的差不多&#…