MySQL主从复制集群搭建—binlog二进制文件方式

老哥絮叨

上篇文章我们大致介绍了什么是MySQL主从复制,主从复制的几种集群架构图大概都有哪几种,今天我们就来讲讲如何实现MySQL集群的搭建。主从复制有两种方式可以实现,binlogGTID,这期我们先通过binlog方式来实现,下篇我们来讲binlog的原理,和注意事项。

大赞点起来,在看刷起来。如果你觉得通过老哥的文章能学到一些知识,请把老哥推荐给你的朋友。分享是一件快乐的事,我们一起来玩Java

一主一从集群搭建

binlog 简介

Mysql中有一个binlog二进制日志,这个日志会记录下主服务器所有修改了的SQL语句,从服务器把主服务器上的binlog二进制日志,在指定的位置开始复制主服务器所有修改的语句,在从服务器上执行一遍。

简而言之就是,主服务器会把create、update、delete语句都记录到一个二进制文件中(binlog),从服务器读取这个文件,执行一遍文件中记录的create、update、delete语句。从而实现主从数据同步。

准备工作

  • 三台服务器:192.168.216.111、192.168.216.222、192.168.216.333

  • 主从和主主我们用 111 和 222 两台机器,111 位主,222 位从。主主时两台机器都为主。双主多从时,333为从

  • 服务器环境:采用 Windows 的,因为大多数小伙伴都是用 Windows 系统,方便大家学习,真实企业中用 Linux。

  • 三台机器分别装好 MySQL 数据库,并能互相 ping 通。

配置主从库 my.ini 或者 my.cnf 文件

my.ini是Windows系统的,my.cnf是Linux系统的,我们这期主要以 Windows 系统为例

  • 在 111 和 222 的 my.ini 中的[mysqld]节点下配置

    • server-id = 唯一ID:主服务器唯一 ID,一般设置为机器 IP 地址后三位

    • log-bin = 二进制日志文件存放路径:这个是启动并记录 binlog 日志

    • log-err = 错误日志路径(可选):启动错误日志

    • read-only = 0:0是读写都行(主库),1是只读(从库)

    • binlog-lgnore-db= 数据库名(可选):设置不要主从复制的数据库

    • binlog-do-db = 数据库名(可选):需要复制的数据库名

111 主库建授权用户给 222 从库

当主库和从库都配置完 my.ini 文件之后,还需要主库建立一个授权用户,让从库能通过这个用户登录到主库上。

  • 语法

111主库执行:GRANT REPLICATION SLAVE ON *.* TO '用户名'@'从机IP' IDENTIFIED BY '密码';(建立授权用户)FLUSH PRIVILEGES;(刷新MySQL的系统权限相关表)复制代码
  • 在从机上试试可否连接上主机

222从库执行:mysql -h 主机IP -usally -pilovesally复制代码
  • 如果连接失败,看看是不是防火墙的原因,配置防火墙的 IP 规则

开始主从复制

  • 查看 master 111 主机状态

show master status;复制代码

这里主要看FilePosition两个参数,File代表从哪个日志文件里同步数据,Position代表从这个文件的什么位置开始同步数据,binlog-do-db 和 binlog-lgnore-db 意思为同步哪几个数据库和不同步哪几个数据库。

  • 从库登录主库设置同步数据文件

如果之前做过同步数据,那么请先停止(stop slave;),否则会报错。

222执行:MASTER_HOST='主机IP',MASTER_USER='主机用户名',MASTER_PASSWORD='主机密码',MASTER_LOG_FILE='File名字',MASTER_LOG_POS=Position数字;复制代码
  • 启动从库复制功能

start slave;复制代码
  • 查看从库同步状态

show slave status\G;复制代码

这两个参数都是 YES,说明同步成功!这时候可以插入一些新数据,试试从库能不能同步这些数据!

主主复制集群搭建

上面介绍了主从复制的实现方法,我们在主从复制的基础上介绍主主复制(只需要把 111 也变成 222 的从机),把上面讲的222从库改成主库,实现111222两个库互为主从,不懂的同学可以看看上篇文章的主主复制架构图。

从库转主库

  • 将上面222从库变成主库,在222上执行如下语句,注意这次的从机 IP 是111的 IP,因为要互为主备

GRANT REPLICATION SLAVE ON *.* TO '用户名'@'从机IP' IDENTIFIED BY '密码';(建立授权用户)FLUSH PRIVILEGES;(刷新MySQL的系统权限相关表)复制代码

配置两个主主数据库 my.ini

  • 在[mysqld]下配置如下参数

auto_increment_increment=2   #步长值auto_imcrement。一般有n台主MySQL就填nauto_increment_offset=1  #起始值。一般填第n台主MySQL复制代码

111 同步 222 数据

  • 查看 master 222 主机状态

show master status;复制代码
  • 111设置同步222数据文件

如果之前做过同步数据,那么请先停止(stop slave;),否则会报错。

MASTER_HOST='主机IP',MASTER_USER='主机用户名',MASTER_PASSWORD='主机密码',MASTER_LOG_FILE='File名字',MASTER_LOG_POS=Position数字;复制代码
  • 查看111库同步状态

show slave status\G;复制代码

这两个参数都是 YES,说明同步成功!这时候可以插入一些新数据,看看111222两个库能不能互相同步数据。

双主多从集群搭建

我们在上面双主集群的基础上,创建双主多从集群,这时候333机器就该上场了。因为111222机器都是主,那么333机器作为从机,随便挂靠在其中一个主机上便可。我们这里选111吧。

步骤和第一个主从复制集群搭建的一样,按照上面的操作即可。

当我们做好所有操作之后,在111主机上新增数据进行测试,发现222333均已同步数据。但是在222新增数据测试时,会发现111同步了,但是333并没有同步。因为333是挂在111下的从库,所有222主机新增数据的时候,333并没有同步222的数据,这显然是不行的。解决方案很简单,在两台主机 111 和 222 的配置文件里都加上如下配置,重启即可。

log-slave-updates=on复制代码

从库作为其他从库的主库时,必须添加这个参数才能生效。111222互为对方的从库,333111的从库,所以111222要加上这个参数,大家好好理解一下这个逻辑。

老哥结语

MySQL主从复制,是实现高性能,高可用MySQL的基石,所以一定要会这个知识,才能进一步往下深入学习MySQL,跟紧老哥的脚步,我们下篇文章讲讲主从复制的原理。

(0)

相关推荐

  • Linux搭建MySQL主从

    实现目标 搭建两台MySQL服务器(一主一从),一台作为主服务器,一台作为从服务器,主服务器进行写操作,从服务器进行读操作. 工作流程概述 主服务器: 开启二进制日志 配置唯一的server-id 获 ...

  • MySQL主从复制的实现过程

    一.什么是主从复制 将主数据库中的DDL和DML操作通过二进制日志传输到从数据库上,然后将这些日志重新执行(重做):从而使得从数据库的数据与主数据库保持一致. 基本原理: MySQL支持单向.异步复制 ...

  • 面试被问MySQL 主从复制,怎么破?

    一.前言 随着应用业务数据不断的增大,应用的响应速度不断下降,在检测过程中我们不难发现大多数的请求都是查询操作. 此时,我们可以将数据库扩展成主从复制模式,将读操作和写操作分离开来,多台数据库分摊请求 ...

  • MySQL主从复制集群—gtid实现详解

    老哥唠叨 上一篇发了MySQL主从复制集群搭建流程,不过好像小伙伴们对这个文章并不感兴趣,但是老哥出于对技术的热爱,和对小伙伴们的负责,我还是要写主从复制另一种实现方式:GTID.这些技术真的蛮重要的 ...

  • mysql主从复制

    一.主从复制简介 2015年5月28日11时,12小时后恢复,损失:平均每小时106.48W$ 1)高可用 2)辅助备份 3)分担负载 复制是 MySQL 的一项功能,允许服务器将更改从一个实例复制到 ...

  • redis集群搭建

    阅读目录 1. 准备ruby环境 2. 目录 & 配置文件 3. 集群操作 redis 集群 ruby redis版本:redis-4.0.11 os:centos 7 ruby版本:2.3. ...

  • KubeEdge集群搭建

    KubeEdge集群搭建 1. 前言 上一篇文章我把整个KubeEdge的宏观架构设计讲了一遍,今天的内容是实操实践,手把手教你搭建KubeEdge集群. 2. 准备工作 需要两台机器,不管是笔记本也 ...

  • Zookeeper的安装与集群搭建

    简介 Zookeeper下载 官网地址:点我直达 百度云盘:点我直达 踩坑录 官网下载一定要下载带bin的 要不然zookeeper起不起来,找不到加载类,原来从版本3.5.5开始,带有bin名称的包 ...

  • Zookeeper简介与集群搭建

    Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少 ...

  • Zookeeper分布式集群搭建

    文中Zookeeper分布式集群搭建在Linux CentOS7系统之上.搭建大数据分布式集群,不建议使用root用户直接操作,故文中使用bigdata用户进行集群的搭建. 一.环境准备 软件 版本 ...

  • 阿里云ECS服务器部署HADOOP集群(二):HBase完全分布式集群搭建(使用外置ZooKeeper)

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...

  • 集群搭建

    集群搭建

  • RabbitMQ:搭建Haproxy+RabbitMQ集群方式(完成)

    RabbitMQ:搭建Haproxy+RabbitMQ集群方式(完成) 你是小KS 2020-05-29 14:36:29 189 收藏 1 原力计划 分类专栏: 消息队列 版权声明:本文为博主原创文 ...