mysql复制–主从复制配置[通俗易懂]

mysql复制–主从复制配置[通俗易懂]当单台MYSQL服务器无法满足当前网站流量时的优化方案。需要搭建mysql集群技术。复制功能:数据分布负载均衡(读)备份高可用和故障切换MySQL升级测试复制方式:主–从复制主–主复制半同步复制复制原理:Mysql中有一种日志叫做bin日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL语句(insert,update,delete,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

当单台 MYSQL 服务器无法满足当前网站流量时的优化方案。需要搭建 mysql 集群技术。

复制功能:

  • 数据分布
  • 负载均衡(读)
  • 备份
  • 高可用和故障切换
  • MySQL升级测试

复制方式:

  1. 主–从复制
  2. 主–主复制
  3. 半同步复制

复制原理:

Mysql 中有一种日志叫做 bin 日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL 语句(insert,update,delete,create/alter/drop table, grant 等等)。
主从复制的原理其实就是把主服务器上的 bin 日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。

复制流程图:

这里写图片描述

复制过程:

  1. 主节点必须启用二进制日志,记录任何修改了数据库数据的事件。
  2. 从节点开启一个线程(I/O Thread)把自己扮演成 mysql 的客户端,通过 mysql 协议,请求主节点的二进制日志文件中的事件
  3. 主节点启动一个线程(dump Thread),检查自己二进制日志中的事件,跟对方请求的位置对比,如果不带请求位置参数,则主节点就会从第一个日志文件中的第一个事件一个一个发送给从节点。
  4. 从节点接收到主节点发送过来的数据把它放置到中继日志(Relay log)文件中。并记录该次请求到主节点的具体哪一个二进制日志文件内部的哪一个位置(主节点中的二进制文件会有多个,在后面详细讲解)。
  5. 从节点启动另外一个线程(sql Thread ),把 Relay log 中的事件读取出来,并在本地再执行一次。

复制中线程的作用:

从节点:

  • I/O Thread: 从 Master 节点请求二进制日志事件,并保存于中继日志中。
  • Sql Thread: 从Relay log 中读取日志事件并在本地完成重放。

主节点:

  • Dump Thread:为每个 Slave 的 I/O Thread 启动一个 dump 线程,用于向从节点发送二进制事件。

**思考:**从节点需要建立二进制日志文件吗?
看情况,如果从节点需要作为其他节点的主节点时,是需要开启二进制日志文件的。这种情况叫做级联复制。如果只是作为从节点,则不需要创建二进制文件。

Mysql复制特点:

  1. 异步复制:主节点中一个用户请求一个写操作时,主节点不需要把写的数据在本地操作完成同时发送给从服务器并等待从服务器反馈写入完成,再响应用户。主节点只需要把写入操作在本地完成,就响应用户。但是,从节点中的数据有可能会落后主节点,可以使用(很多软件来检查是否落后)
  2. 主从数据不一致。

主从复制配置过程:

主节点:

  1. 启用二进制日志。
  2. 为当前节点设置一个全局唯一的server_id。
  3. 创建有复制权限的用户账号 REPLIACTION SLAVE ,REPLIATION CLIENT。

从节点:

  1. 启动中继日志。
  2. 为当前节点设置一个全局唯一的server_id。
  3. 使用有复制权限的用户账号连接至主节点,并启动复制线程。

配置演示:

测试环境:
主节点:192.168.0.196
从节点:192.168.0.198
mysql版本:mysql-5.5.17
linux:centos6.5

1:编辑主节点配置文件
这里写图片描述
2:启用二进制日志文件

  • 添加:log-bin = mysql-bin
  • 添加 :server-id =1
  • 添加:innodb-file-per-table =ON
  • 添加:skip_name_resolve=ON
    这里写图片描述

3:启动mysql服务,并连接mysql
这里写图片描述
4:查看日志信息
1:)查看二进制日志是否开启
这里写图片描述
2:)查看主节点二进制日志列表
这里写图片描述
3:)查看主节点的server id
这里写图片描述
5:在主节点上创建有复制权限的用户。REPLIACTION SLAVE ,REOPLIATION CLIENT
这里写图片描述
6:刷新
这里写图片描述
主服务器配置完成。
注意:确保主服务器的iptables没有阻断3306的访问端口。

7:编辑从节点配置文件
这里写图片描述
8:开启中继日志

  • 添加:relay-log=relay-log
  • 添加:relay-log-index=relay-log.index
  • 添加:server-id=2
  • 添加:innodb_file_per_table=ON
  • 添加:skip_name_resolve=ON
    这里写图片描述
    9:启动从节点mysql服务,并登陆mysql
    这里写图片描述
    10:查看从节点日志信息
    1:)查看中继日志是否开启
    这里写图片描述
    2:)产看server 相关信息
    这里写图片描述
    11:在从节点配置访问主节点的参数信息
    添加 主节点主机,访问主节点的用户名及密码,主节点二进制文件信息。
    注意:主节点的二进制文件一定要是二进制列表中的最后一个二进制文件。
    这里写图片描述
CHANGE MASTER TO MASTER_HOST='192.168.0.196',MASTER_USER='repluser',MASTER_PASSWORD='replpass', MASTER_LOG_FILE='mysql-bin.000042',MASTER_LOG_POS=362;

这里写图片描述
12:查看从节点的状态信息
因为没有启动 从节点的复制线程,IO线程 和 SQL 线程都为NO.
这里写图片描述

13:启动复制线程
START SLAVE 可以指定线程类型:IO_THREAD ,SQL_THREAD, 如果不指定,则两个都启动。
这里写图片描述
14:再次查看从节点状态信息
这里写图片描述

至此,mysql的主—-从复制配置完成。
15:测试
1:)在主节点创建数据库,并查看主节点二进制日志信息
这里写图片描述
2:)在从节点查找二进制日志信息,并查看mydb数据库是否复制成功
这里写图片描述
这里写图片描述

主从复制架构中应注意的问题:

从节点要设置某些限定使得它不能进行写操作,才能保证复制当中的数据一致。

1:限制从服务器为只读
在从服务器上设置:
read_only = ON,但是此限制对拥有SUPER权限 的用户均无效。
阻止所有用户:
mysq>FLUSH TABLES WITH READ LOCK;

2:如何保证主从复制时的事物安全?
1:在主节点设置参数
sync_binlog=1: Mysql开启bin-log日志使用bin-log时,默认情况下,并不是每次执行写入就与硬盘同步,这样在服务器崩溃时,就可能导致bin-log最后的语句丢失。可以通过这个参数来调节,sync_binlog=N,使执行N次写入后,与硬盘同步。1是最安全的,但是也是最慢的。
如果用到innode 存储引擎:
innodb_flush_logs_at_trx_commit=ON(刷写日志:在事务提交时,要将内存中跟事务相关的数据立即刷写到事务日志中去。)
innodb_support_xa=ON (分布式事务:基于它来做两段式提交功能)
sync_master_info=1:每次给从节点dump一些事件信息之后,主节点的master info 信息会立即同步到磁盘上。让从服务器中的 master_info 及时更新。
这里写图片描述
2:在每个slave节点
skip_slave_start =ON (跳过自动启动,使用手动启动。)
relay_log也会在内从中先缓存,然后在同步到relay_log中去,可以使用下面参数使其立即同步。
sync_relay_log =1 ,默认为10000,即每10000次sync_relay_log事件会刷新到磁盘。为0则表示不刷新,交由OS的cache控制。
sync_relay_log_info=1每间隔多少事务刷新relay-log.info,如果是table(innodb)设置无效,每个事务都会更新

注: 在从节点中 master.info是记录在主节点复制位置的文件。
这里写图片描述
relylog_info: 本地将来至于主节点的哪一个二进制文件中position并且保存文本地哪一个中继日志中的哪一个postion. 从节点启动时也需要根据relay-log.info定位本地relay-log.
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/170306.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Pytest(1)安装与入门[通俗易懂]

    Pytest(1)安装与入门[通俗易懂]pytest介绍pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它

  • smtp服务器组件,本机搭建虚拟SMTP服务器教程[通俗易懂]

    smtp服务器组件,本机搭建虚拟SMTP服务器教程[通俗易懂]该楼层疑似违规已被系统折叠隐藏此楼查看此楼Windows2000用户安装设置服务端WindowsXP和2000本身就拥有构件SMTP服务器的功能,只是一般还没有安装。选择“控制面板→添加/删除程序→添加/删除Windows组件”,弹出“Windows组件向导”对话框,在其中双击“Internet信息服务(IIS)”项,就会打开详细选择项,选中“SMTPService”,按“确定”,插入…

  • 预训练模型还要训练吗_多模态预训练模型

    预训练模型还要训练吗_多模态预训练模型若使用已保存好的镜像reid_mgn:v1,在本机上可按如下操作训练#1.进入已保存环境的镜像(reid_mgn:v1(8.48G)、pytorch/pytorch:1.0.1-cuda10.0-cudnn7-devel_mgnreid(6.37G))nvidia-dockerrun-it–rm-v/home/lc-deep/sdr:/home/personReID…

  • go 环境搭建(mac 版)

    go 环境搭建(mac 版)1.下载合适你电脑的版本,下载地址是:https://studygolang.com/dl,我是macm1的,我下载的是https://studygolang.com/dl/golang/go1.17.2.darwin-arm64.pkg如下图:2.下载完成后,双击安装,安装成功后如下图:3.打开终端,输入goversion如果出现版本成功,就是安装成功了,如下图:如果输入命令,说找不到commandnotfound:go的情况解决如下:…

    2022年10月12日
  • NGINX 实现端口转发

    NGINX 实现端口转发

    2021年11月23日
  • 阿里druid数据连接池jar包(完整版)[通俗易懂]

    阿里druid数据连接池jar包(完整版)[通俗易懂]Druid(德鲁伊)是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid地址:https://github.com/alibaba/druidDRUID连…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号