mysql主从复制搭建--待实践完善

news2024/9/22 15:38:49

一、什么是mysql主从复制

参考链接:MySQL主从介绍_rain_yunlx的博客-CSDN博客

Linux下搭建Mysql主从复制详细步骤(Mysql版本5.7.35)_linuxmysql主从_Direct_的博客-CSDN博客

Linux环境MySQL数据库主从复制保姆级教程_linux主从复制_小学生波波的博客-CSDN博客(参照这个即可)

也可参考这个:MySQL主从配置详解 - 简书

1.msyql主从又叫做replication,AB复制。A、B两条机器做主从后,在A上写数据,另一台B也会跟着写数据,两者数据实时同步。

2.mysql主从是基于binlog的,主服务器上必须开启binlog才能进行主从。

binlog:是一个二进制文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到binlog里,但是不会记录查询语句。

3.主从复制过程

(1)Slave上的IO_thread连接上Master,并请求从指定日志文件的指定位置或者从最开始的日志之后的日志内容。

(2)Master接收到来自Slave的IO_thread的请求后,通过负责复制的IO进程根据请求信息读取指定日志指定位置之后的日志信息,返回给Slave的IO_thread。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log file以及bin-log  pos.

(3)Slave的IO_thread接收到信息后,将接收到的日志内容依次天机到Slave端的relay-log文件的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master要从哪个binlog的哪个位置开始往后的日志内容发送给Slave。

(4)Slave的sql_thread检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为Master端真实执行时候的那些可执行的内容,并在数据库中执行。

5.mysql支持的肤质类型

(1)基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句;Mysql默认采用基于语句的复制,小吕比较高。

(2)基于行的复制:把改变的内容复制过去,而不是把命令在服务器上执行一遍

(3)混合类型复制:默认采用基于语句的复制,一旦发现语句无法精确复制时,就会采用基于行的复制。

6.应用场景

(1)从服务器作为主服务器的实时数据备份

(2)主从服务器实现读写分析(主写从读),从服务器实现负载均衡

(3)把多个服务器根据业务重要性进行拆分访问(从服务器根据业务进行拆分)

二、搭建步骤

    1.准备工作

    首先准备两台机器,A和B, A主B从,每台机器上都安装了mysql,并将mysql启动;

  第一步:  修改主机名并配置主机映射:

[root@localhost ~]# hostnamectl set-hostname mysql1

[root@localhost ~]# hostnamectl set-hostname mysql2

两个节点配置/etc/hosts文件,修改为如下: #ip地址应改成自己主机对应的ip

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.30.11.12  mysql1

172.30.11.13  mysql2
 

第二步:两台主机都关闭防火墙和SELinux服务

关闭防火墙命令如下:

systemctl stop firewalld        //关闭防火墙

systemctl disable firewalld   //将防火墙设置开机不自启

关闭selinux服务

vi /etc/selinux/config  //进入到此目录下将selinux的状态设置为disabled

    1.1 mysql安装步骤--后续添加

         

 1.2 配置主

     (1)修改A机器的mysql配置

              vim /etc/my.cnf

    (2)添加如下内容

              #配置唯一的服务器ID,一般使用IP最后一位

               server-id=100

               #开启log-bin二进制日志

              log-bin=/var/log/mysql/mysql-bin

               #添加,允许从服务器更新二进制日志

               log-slave-updates=true

                #下面这两个不是必须要配置 #主要是为了使用带事务的InnoDB进行复制设置时尽可能                 提高持久性和一致性

                innodb_flush_log_at_trx_commit = 1

                sync_binlog = 1

   (3)    修改完保存后重新加载配置文件

             /etc/init.d/mysqld restart  或者  systemctl start mysql

                登录mysql:mysql -uroot -p

   (4)重启完成后mysql目录下会生产两个文件   mysql-bin开头的文件是实现主从的根本

   (5)创建mysql用户,用户名为testuser,密码为testpasswd

        以下都在mysql中执行,

        create user 'repl'@'slave_ip' identified by '1234';

        或者:

        在主库上建立用于主从复制的账号

        mysql> CREATE USER 'rep1'@'%';

        mysql> GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'%' identified by 'password';

        查看主库的二进制日志的名称:

        mysql> show master status\G

 

   (6)保持状态

        flush tables with read lock;

    (7)记住 File和Position,执行命令show master status;

1.3配置从

     在从库上面测试之前建立的复制账号是否可以连接主库:

        mysql -urep1 -p'password' -h192.168.169.131

(1)配置server ID,需要和主不一样

             vim /etc/my.cnf

              添加如下的内容:

              server-id=200

        #添加,开启中继日志,从主服务器上同步日志文件记录到本地

        relay-log=relay-log-bin

        #添加,定义中继日志文件的位置和名称

        relay-log-index=slave-relay-bin.index

(2)修改完配置文件后,重启mysqld服务

               /etc/init.d/mysqld restart 或者  systemctl start mysql

(3)将A机器上的备份数据库都拷贝到B机器上,我的备份都存放在/tmp目录下,且都是sql结尾的文件

                scp 192.168.177.100:/tmp/*.sql /tmp/

 (4)拷贝完A的数据库后在B上创建相对应的数据库

         create database zrlog;

        create database wordpress;

  (5)在B机器上恢复数据库

        mysql zrlog < /tmp/zrlog.sql

        mysql wordpress < /tmp/wordpress.sql

    (6)B机器登陆mysql,执行命令       

                stop slave;

    (7)change master:

        # 配置同步,注意 master_log_file 和 master_log_pos 的值要与Master的一致

             mysql> CHANGE MASTER TO MASTER_HOST='192.168.169.131',MASTER_USER='rep1',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=682;

# 启动同步,如有报错执行 reset slave;
mysql> start slave;
 

      (8)开始服务

                start slave;

         (9)如何判断主从是否配置成功

                   使用命令mysql> show slave status\G

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

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

相关文章

山东大学2023操作系统实验2

目录 (1)操作系统实验2内容: (2)完成方式: (3)使用函数和功能: 1.pipe函数与有关的功能 2.pipe的返回值 3.pipe的参数 4.使用事项: (4)实现代码 (5)实现效果 (1)操作系统实验2内容: 创建三个并行的进程,分别完成计算F(x),F(y),F(x,y)三个函数的计算 (2)完成方式: 实验…

再也不去字节跳动面试了,6年测开经验的真实面试经历.....

前几天我朋友跟我吐苦水&#xff0c;这波面试又把他打击到了&#xff0c;做了快6年软件测试员。。。为了进大厂&#xff0c;也花了很多时间和精力在面试准备上&#xff0c;也刷了很多题。但题刷多了之后有点怀疑人生&#xff0c;不知道刷的这些题在之后的工作中能不能用到&…

18.Java异常

Java异常 Java 中的异常&#xff08;Exception&#xff09;又称为例外&#xff0c;是一个在程序执行期间发生的事件&#xff0c;它中断正在执行程序的正常指令流。为了能够及时有效地处理程序中的运行错误&#xff0c;Java中引入了异常类的概念。异常类的引入即明确了程序在执…

QT stackUnder 用法小结

stackUnder是什么意思&#xff1f;根据官方的解析&#xff0c;简而言之一句话&#xff1a;把窗口的小部件放置于父窗口的堆栈窗口中。本文将通过一则简单的示例&#xff0c;来具体解析stackUnder该如何使用。 官方解析 void QWidget::stackUnder(QWidget *w) Places the widg…

ThinkPHP6之数据库操作上

ThinkPHP6之数据库操作上 前言1. 数据库配置2. 数据库操作1. 查询操作2. 插入操作3. 修改4. 删除5. 其他 3.数据集总结 前言 注意&#xff0c;tp6在进行语法学习的时候都是在app/index.php中写代码的&#xff0c;代码写在index函数下面&#xff0c;而且tp6自带的文件都是由自动…

经常打电话的人用什么耳机好?通话质量好的蓝牙耳机推荐

用蓝牙耳机听歌、刷视频、玩游戏已经成为趋势&#xff0c;作为人手必备的一件单品&#xff0c;在款式层出不穷&#xff0c;功能各异的蓝牙耳机市场&#xff0c;许多人都不知道究竟什么蓝牙耳机好&#xff1f;下面整理了几款通话质量好的蓝牙耳机。 一、南卡小音舱Lite2蓝牙耳机…

【服务器数据恢复】Raid磁盘阵列常见故障类型原因分析

由于raid的特点和优势&#xff0c;磁盘阵列技术被广泛应用于服务器和存储等商用领域。由于用户基数大&#xff0c;出现故障的情况也不少。通过这篇文章介绍一下常见的raid磁盘阵列数故障类型和原因。 故障类型一、磁盘阵列处于降级状态时未及时rebuild。 RAID磁盘阵列的数据安全…

Linux+云服务器

目录 前言 一、Linux介绍 二、Linux 环境搭建 2.1 云服务器 2.2 XShell 终端 三、Linux 常用命令 3.1操作目录的命令 3.1.1 ls 【list的缩写】 双击某个目录 3.1.2 pwd 【print working directory的缩写】打印当前所处地址 3.1.3 cd 【change directory的缩写】切…

DAY02_运算符和选择语句

1&#xff1a;运算符 对数据进行运算。而对数据运算就要用到运算符。 和表达式做一个简单的描述&#xff1a; 运算符&#xff1a;对字面量或者变量进行操作的符号 表达式&#xff1a;用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的…

JUC多并发编程 volatile

特点&#xff1a; 可见性有序性(有时需要禁用重排) 内存语义&#xff1a; 当写一个 volatile 变量时&#xff0c; JMM 会把该线程对应的本地内存中的共享变量值立即刷新回主存中当读一个 volatile 变量时&#xff0c; JMM 会把该线程对应的本地内存设置无效&#xff0c;重新…

m4a怎么转换成mp3,4招搞定

m4a怎么转换成mp3&#xff1f;相信很多朋友都知道&#xff0c;无论是音频、视频、图片等很多电子文件&#xff0c;都会有多种格式。由于格式不统一&#xff0c;很容易导致文件和软件之间出现不兼容的情况&#xff0c;最直接的结果就是在播放器中无法打开&#xff0c;或者使用的…

一篇文章带你了解Spring/SpringBoot常用注解(建议收藏!!! )

这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解我都说了具体用法&#xff0c;掌握搞懂&#xff0c;使用 SpringBoot 来开发项目基本没啥大问题了&#xff01; 1. SpringBootApplication 这里先单独拎出SpringBootAppl…

NUXT规范及常见问题

props中不要使用Web环境才有的对象&#xff0c;服务端渲染的时候会失败 使用<Nuxt/>组件代替<router-view/>&#xff0c;使用<NuxtLink/>代替<router-link/>static目录下的资源是静态资源&#xff0c;不应该通过import或../static/img/logo.png等方式…

【AI绘画】我以Midjourney为主学习AI绘画效果咋样?

上一篇博客链接&#xff1a;【ChatGPT】ChatGPT掀起AIGC与AI浪潮_山楂山楂丸的博客-CSDN博客 这周&#xff0c;我加入了新星计划&#xff0c; 涉及的领域是我感兴趣以及对未来规划有帮助的——AI绘画&#xff01;​​​​​​​ 文章目录 前言 一、AI绘画是什么 二、AI绘画进…

MYSQL命令小总结

一、创建查看 1.输入cmd&#xff0c;打开控制器&#xff0c;输入如下&#xff0c;打开MYSQL C:\Users\ASUS> mysql -u root -p 2.查看已有数据库 mysql> show databases; 3.建立数据库 4.使用数据库 use englishword;5.建立表单 CREATE TABLE user ( id INT primar…

AI Stable Diffusion Prompt参数【一】

AI Stable Diffusion Prompt参数【一】 配置场景1:草丛里的女性promptNegative Prompt结果 场景2: 雨中披头散发的女孩promptNegative Prompt结果 场景3: 一个女孩和她的朋友在逛街promptNegative Prompt结果 场景4: 学生在教室promptNegative Prompt结果 场景5: 穿着白色丝袜和…

自动化工具 基于 Antd+DRF 开发了一款适配 JMeter 的接口自动化测试报告

JMeter Report 基于 AntdDRF 开发的一款 JMeter 测试报告服务&#xff0c;用于在 JMeter 接口测试中使用。 &#x1f334; 背景 JMeter 是测试工作中常用的一款工具&#xff0c;除了压测还可以用来做接口自动化的测试。 从事测试多年&#xff0c;接口自动化也做过很多的尝试…

从零搭建开发脚手架 自定义打包构建研发输出产物

文章目录 背景目录源码目录结果目录 实现项目打包方式一 使用IDEA工具打包,选择对应的profiles,然后clean package方式二 使用maven命令打包 部署 背景 在打包项目时&#xff0c;通常只需要生成一个可执行的jar文件。然而&#xff0c;有时候需要将启动脚本或外部配置文件附加到…

Java版电子招投标系统源码之了解电子招标投标全流程

随着各级政府部门的大力推进&#xff0c;以及国内互联网的建设&#xff0c;电子招投标已经逐渐成为国内主流的招标投标方式&#xff0c;但是依然有很多人对电子招投标的流程不够了解&#xff0c;在具体操作上存在困难。虽然各个交易平台的招标投标在线操作会略有不同&#xff0…

感应开关盖垃圾桶项目实现.md

1.项目接线 接线示意图和实物图 示意图和接线说明&#xff1a; 舵机控制口P1.1&#xff08;定时器0中断&#xff09;&#xff1b;超声波Trig接P1.5 ,Echo接P1.4 &#xff1b;蜂鸣器接P2.0 口;震动传感器接P3.2 口&#xff08;外部中断0&#xff09;。 实物图&#xff08;未封装…