MYSQL8主从复制

这篇具有很好参考价值的文章主要介绍了MYSQL8主从复制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

image.png


复制的常见应用场景

image.png


主从复制实现基本原理

image.png


MySQL支持的复制类型

image.png


复制解决的问题

image.png


复制过程

image.png
image.png


主从复制失败的原因

image.png


MYSQL8主从复制实现

关键点:
主库创建一个远程用户授予复制权限
主库从库my.cnf配置服务器唯一id;
开启全局事务ID;


1、MYSQL主节点配置HOST

# 在msyql的主从节点配置host
sudo tee -a /etc/hosts << EOF
192.168.1.100 mysql-master
192.168.1.101 mysql-slave1
EOF

2、修改配置文件中的ServerID

my.cnf 文件中启用二进制日志记录,并为其分配一个唯一的服务器 ID
image.png


关闭主节点从节点的mysql服务。

-- 关闭mysql服务
systemctl stop msyqld

主服务器配置

每个数据库实例的服务器ID唯一值

[mysqld]
# 启用binlog日志记录
log-bin=mysql-bin
# 主服务器唯一服务器ID
server-id=1

从服务器配置

注意:请确保此服务器的服务器 ID 不同于主服务器

[mysqld]
# 从服务器唯一服务器ID
server-id=2

修改主从参数–启用全局事务标识符(GTID)

主库备库都要添加下列参数。
https://blog.csdn.net/kang_01/article/details/124415221


image.png

# 修改my.cnf
[mysqld]
# 启用全局事务标识符(GTID),用于标识复制拓扑结构中多个服务器上的事务
gtid_mode=ON
# 使用基于GTID的复制时强制执行严格一致性检查,防止数据不一致性
enforce_gtid_consistency=ON
# 必须参数
# 设置多级复制拓扑结构(包括双master环境),其中一个从属方作为向下游的其他从属方的主节点,则这很有用
# 控制slave数据库 是否把 从master 接受到的log 合并在 本slave 执行的内容记录到slave的二进制日志中
log_slave_updates=1

重启MySQL服务

保存配置后,启动mysql服务

# 重启mysql服务
systemctl restart msyqld

3、主库创建用户repl@%并授权

主库上执行。

-- 为主库创建repl用户
CREATE USER 'repl'@'%.example.com' IDENTIFIED WITH mysql_native_password BY 'password';

-- 为repl用户授权 在所有库.表上 均有REPLICATION SLAVE权限
-- REPLICATION SLAVE权限允许用户作为从服务器连接到主服务器,并接收主服务器上更改的副本
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';

-- 应用权限配置
FLUSH PRIVILEGES;

image.png

-- 锁定所有表并防止数据写入。这将确保您的备份是一致的,并且不会在正在进行复制时被更改。
FLUSH TABLES WITH READ LOCK;

查看主库的binlog位置和binlog名称

将这些值记录下来,因为它们将在配置从服务器时使用。

-- 查看二进制日志的名称和位置。
SHOW MASTER STATUS;

释放表锁

-- 释放表锁
UNLOCK TABLES;

4、从库开始主从复制

从库上执行。
MASTER_AUTO_POSITION = 1 启用自动复制拓扑,能实现自动切换主库
启用 MASTER_AUTO_POSITION = 1自动拓扑参数后,从库自动记录每个从库当前所处的拓扑位置,当发生主库故障切换时,从库会自动尝试连接新的主库,并根据之前记录的拓扑位置信息重新开始复制数据,从而实现自动切换主库,避免了手动干预的繁琐操作。

-- 配置从库连接到主库,准备执行复制数据
-- MASTER_AUTO_POSITION = 1 启用自动复制拓扑
CHANGE MASTER TO
MASTER_HOST = 'master.example.com',
MASTER_USER = 'repl',
MASTER_PASSWORD = 'password',
MASTER_AUTO_POSITION = 1;

image.png


主从复制其他参数示范

MASTER_LOG_FILE MASTER_LOG_POS 的值应该是您在步骤3中记录的binlog的位置和名称

MASTER_LOG_POS = 107 指定主库binlog文件当前正在写入的位置(偏移量)。这个参数的值是一个整数。
在主从复制中,从库会连到主库获取主库binlog文件,然后从上次读取的位置继续读新的日志数据
因此,MASTER_LOG_POS 参数以及相关的 MASTER_LOG_FILE 参数对于从服务器来说非常重要,它们告诉从服务器应该从哪里开始读取主服务器的日志数据。

-- 配置从库连接到主库,准备执行复制数据
CHANGE MASTER TO
MASTER_HOST = 'master.example.com',
MASTER_USER = 'repl',
MASTER_PASSWORD = 'password',
MASTER_LOG_FILE = 'mysql-bin.000001',
MASTER_AUTO_POSITION = 1,
MASTER_LOG_POS = 107;

启动从库复制进程

-- 启动从库复制进程:
START SLAVE;

-- 检查从库的状态
SHOW SLAVE STATUS\G;

image.png


5、测试主从复制是否生效

-- 在主库上创建数据库
CREATE database scott;

-- 在主库上创建表
CREATE TABLE scott.emp(
    empno FLOAT(4),
    ename VARCHAR(10),
    job VARCHAR(9),
    hiredate DATE,
    sal FLOAT(7, 2),
    comm FLOAT(7.2),
    deptno FLOAT(2)
);

从库查看:

--  进入scott库
use scott;

-- 查看有哪些表
show tabtles;

image.png文章来源地址https://www.toymoban.com/news/detail-428039.html

到了这里,关于MYSQL8主从复制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CentOS7安装Mysql8并进行主从复制配置

    CentOS7中安装Mysql8并配置远程连接和修改密码等: CentOS7中安装Mysql8并配置远程连接和修改密码等_霸道流氓气质的博客-CSDN博客 在上面实现安装Mysql8的基础上,克隆出两台机器,修改ip后进行mysql的主从复制搭建。 在主库上把数据更改记录到二进制日志中(Binary Log)中,这些记

    2024年02月16日
    浏览(18)
  • MySQL主从复制原理剖析与应用实践

    vivo 互联网服务器团队- Shang Yongxing MySQL Replication(主从复制)是指数据变化可以从一个MySQL Server被复制到另一个或多个MySQL Server上,通过复制的功能,可以在单点服务的基础上扩充数据库的高可用性、可扩展性等。 MySQL在生产环境中被广泛地应用,大量的应用和服务都对MyS

    2023年04月11日
    浏览(59)
  • MySql运维篇---008:日志:错误日志、二进制日志、查询日志、慢查询日志,主从复制:概述 虚拟机更改ip注意事项、原理、搭建步骤

    错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中 发生任何严重错误时的相关信息 。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的,默认存放目录 /var/log/,默认的日志文件名为 mysq

    2024年02月04日
    浏览(39)
  • Redis(主从复制、哨兵模式、集群)概述及部署

    目录 一、Redis高可用 二、redis持久化 2.1 持久化的功能 2.2 Redis 提供两种方式进行持久化 2.3 RDB 持久化 2.3.1 触发条件  2.3.2 执行流程 2.3.3 启动时加载 2.4 AOF持久化 2.5 执行流程 2.5.1 命令追加(append)  2.5.2 文件写入(write)和文件同步(sync) 2.5.3 文件重写(rewrite) 2.5.3.1 文件重写的

    2024年02月15日
    浏览(14)
  • docker 安装mysql8 实现互为主从

    先按照这个目录结构创建。 mysql.conf 配置,mysql的基础可以在此添加 mysql-master下conf配置 mysql-slave下conf配置  注意我指定了数据库为test_db  注意:我使用的mysql用户为默认root,可以自行创建其他用户访问数据库。 在mysql文件夹下执行   如上图所示表示mysql创建成功。 获取主服

    2024年02月22日
    浏览(26)
  • MySQL8.0主从部署配置详细步骤

    环境:CentOS7+MySQL8 hostname ip 角色 c7-lab1 10.10.104.51 主 c7-lab2 10.10.104.52 从 一、安装MySQL数据库 1.1、下载mysql8,下载rpm bundle包上传到centos系统上。官网 https://dev.mysql.com/downloads/mysql 或者使用wget命令+链接直接下载 1.2、解压bundle包 1.3、卸载mariadb 1.4、安装MySQL 安按照下面图片的顺序

    2024年01月16日
    浏览(20)
  • Ubuntu20.04安装Mysql8主从

    1.下载安装包并初始化数据库 2.修改配置文件 3.创建并启动Mysql服务 安装步骤和主数据库的安装步骤基本一样,但配置文件内容不同,以及不必开启远程连接。 1.检查防火墙 关闭主从数据库服务器防火墙或开放3306端口 这里以firewall为例 2.数据库测试是否已经可以访问 3.主数据

    2024年02月08日
    浏览(23)
  • Docker部署mysql8.x版本互为主从

    两台服务器拉取mysql8.x镜像 192.168.197.136 192.168.197.137 docker pull mysql:8.0.28 两台服务器配置免密登录 生成秘钥   ssh-keygen   (一路回车默认即可) ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.197.137    将公钥发送到另一个节点 ssh root@192.168.197.137    测试是否是免密登录 然后来构建m

    2023年04月11日
    浏览(18)
  • prometheus监控mysql8.x以及主从监控告警

    mysql8.x主从部署请看下面文档 docker和yum安装的都有 Docker部署mysql8.x版本互为主从_争取不加班!的博客-CSDN博客 Mysql8.x版本主从加读写分离(一) mysql8.x主从_myswl8双主一从读写分离_争取不加班!的博客-CSDN博客 安装部署mysqld_exporter wget https://github.com/prometheus/mysqld_exporter/releas

    2024年02月16日
    浏览(26)
  • MySQL8.0+数据库GTID主从模式搭建

    参见: MySQL数据库8.0+版本部署安装-CSDN博客 部署环境[例]: 主库:192.168.179.153:3306 从库:192.168.179.154:3306 主从库开启GTID模式 // 主从库均修改,修改从库配置文件,在[mysqld]下添加如下配置 $ vim /etc/my.cnf gtid_mode = on enforce_gtid_consistency = on 需检查server-id配置,为主从架构中的所有

    2024年02月04日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包