mariadb的主从复制、主主复制、半同步复制配置详解

Mariadb的主从复制、主主复制、半同步复制配置详解

Mariadb是一款常用的开源数据库,支持不同的复制方式,包括主从复制、主主复制和半同步复制。这篇攻略将帮助你详细了解这些复制方式的基本原理和如何配置。

主从复制

在主从复制中,一个Mariadb服务器是主服务器(Master),而其他的服务器(Slave)是从服务器。主服务器将自己的所有更改操作记录到二进制日志文件(binary log),然后从服务器从主服务器上的二进制日志中读取并执行这些更改操作,以保持数据的同步。

主从复制的配置步骤如下:

  1. 在主服务器上设置二进制日志(binary logging),并在Mariadb配置文件中开启二进制日志选项:

[mysqld]
log-bin=mysql-bin
server-id=1

log-bin选项开启二进制日志功能,而server-id是唯一的主服务器ID。

  1. 在从服务器上,编辑Mariadb配置文件,指定唯一的从服务器ID:

[mysqld]
server-id=2

  1. 在从服务器上运行以下命令,以连接并开始执行主服务器上的二进制日志:

CHANGE MASTER TO MASTER_HOST='master_host_name',
MASTER_USER='replication_user_name',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='recorded_log_file_name',
MASTER_LOG_POS=recorded_log_position;

这些选项中,master_host_name是主服务器的名称,replication_user_namereplication_password是在主服务器上用于复制的用户和密码,而recorded_log_file_namerecorded_log_position是主服务器上记录的二进制日志位置。

示例1:

假设主服务器的IP地址为192.168.1.1,从服务器的IP地址为192.168.1.2。

  • 在主服务器上,编辑Mariadb配置文件:

[mysqld]
log-bin=mysql-bin
server-id=1

  • 在从服务器上,编辑Mariadb配置文件:

[mysqld]
server-id=2

  • 在从服务器上,执行以下命令:

CHANGE MASTER TO MASTER_HOST='192.168.1.1',
MASTER_USER='replica',
MASTER_PASSWORD='replica',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;

主主复制

在主主复制中,每个服务器都可以是主服务器,同时也可以是从服务器。这种配置方式可以实现数据的高可用性,并且允许在每个服务器上进行读写操作。

主主复制的配置步骤如下:

  1. 在每个服务器上都执行主从复制的配置步骤。

  2. 在每个服务器上,指定日志更改处理方式为ROW:

[mysqld]
binlog-format=ROW

这将记录所有更改操作的原始行数据。

  1. 在每个服务器上,创建一个新的复制用户:

CREATE USER 'replication'@'%' IDENTIFIED BY 'replication';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';

这个用户主要用于在服务器之间进行数据同步。

示例2:

假设有两台Mariadb服务器,分别位于IP地址为192.168.1.3和192.168.1.4的两个主机上。

  • 在两台服务器上,都按照主从复制的配置步骤进行配置,并指定日志更改处理方式为ROW:

[mysqld]
log-bin=mysql-bin
server-id=1
binlog-format=ROW

[mysqld]
server-id=2
binlog-format=ROW

  • 在每个服务器上,创建一个新的复制用户,并授予复制权限:

CREATE USER 'replica'@'%' IDENTIFIED BY 'replica';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';

  • 在每个服务器上,执行以下命令以连接并开始执行另一台服务器上的二进制日志:

CHANGE MASTER TO MASTER_HOST='192.168.1.x',
MASTER_USER='replica',
MASTER_PASSWORD='replica',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;

半同步复制

在半同步复制中,每次写操作都必须被至少两个服务器验证才能被提交。同时还支持异步复制模式,以提高容错性和性能。

半同步复制的配置步骤如下:

  1. 在每个服务器上都执行主从复制的配置步骤,并指定日志更改处理方式为ROW。

  2. 在每个服务器上,启用复制协议插件:

[mysqld]
plugin-load=add_slave_channels.so

  1. 在每个服务器上,启用半同步复制:

[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_slave_enabled=1

主服务器需要启用rpl_semi_sync_master_enabled,而从服务器需要启用rpl_semi_sync_slave_enabled

示例3:

假设有两台Mariadb服务器,分别为主服务器和从服务器。

  • 在两台服务器上,都按照主从复制的配置步骤进行配置,并指定日志更改处理方式为ROW。

  • 在每个服务器上,启用复制协议插件:

[mysqld]
plugin-load=add_slave_channels.so

  • 在主服务器和从服务器上,启用半同步复制:

[mysqld]
rpl_semi_sync_master_enabled=1

[mysqld]
rpl_semi_sync_slave_enabled=1

总结

通过本文,你应该已经掌握了Mariadb的主从复制、主主复制和半同步复制的基本原理和配置方法。这些复制方式可以增加数据的可用性和容错性,是大型数据库系统不可或缺的技术。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mariadb的主从复制、主主复制、半同步复制配置详解 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • sql server中千万数量级分页存储过程代码

    分页是 Web 应用中常见的功能.当数据表中拥有千万条记录时,需要进行分页查询时,直接使用基础的分页查询语句可能会导致较高的性能消耗和响应延迟.因此需要使用分页存储过程来提高查询性能. 以下是 sql server 中 千万数量级分页存储过程代码的完整攻略: 分页查询的数据表 该数据表中共有 10000000 条记录,将其命名为test表.其中,主键为id,…

    database 2023年5月21日
    00
  • mysql 5.7以上版本安装配置方法图文教程(mysql 5.7.12\mysql 5.7.13\mysql 5.7.14)

    MySQL 5.7以上版本安装配置方法图文教程 前言 MySQL是一种关系型数据库,广泛用于Web开发等领域。MySQL 5.7以上版本相较于之前的版本,在性能和安全方面都有所提升。本文将详细讲解安装MySQL 5.7.12/5.7.13/5.7.14的步骤与配置。 步骤 1. 下载MySQL安装包 首先需要从MySQL官网下载相应版本的MySQL安装包。下…

    database 2023年5月22日
    00
  • CentOS MySQL 5.7编译安装步骤详细说明

    以下是CentOS MySQL 5.7编译安装的详细步骤: 1. 下载MySQL安装包 去MySQL官方网站,选择下载MySQL 5.7版本的源码压缩包(tar.gz格式),例如:mysql-5.7.33.tar.gz 2. 安装编译工具和依赖库 使用以下命令安装编译器、自动化构建工具和MySQL编译所需的依赖库: yum install -y wget m…

    database 2023年5月22日
    00
  • 怎么添加一个mysql用户并给予权限

    这篇“怎么添加一个mysql用户并给予权限”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么添加一个mysql用户并给予权限”文章吧。 一、新建一个用户 1、创建用户命令: CREATE USER ‘username‘@’host’ IDENT…

    MySQL 2023年4月11日
    00
  • 常见数据库mysql、oracle和DB2中is null 和 =null 的区别

    问题背景:前段时间我在测试过程中上传一个文件,文件内容要求判断为空,结果出现了报错,跟踪原因发现是开发误将oracle中对null的判断方式写成了=null,下面梳理一下不同数据库对该问题的处理方法: 1、mysql MySQL 中 null 不代表任务实际的值,类似于一个未知数。 2.执行对比 2.1 查询条件为 =null    执行之后,发现返回行数为…

    MySQL 2023年4月11日
    00
  • MySql随笔记基础

    XAMPP使用 shell 命令   每个数据库对应 一个子文件夹   mysql 进入mySQL的命令 -uroot userroot 登录用户 -uroot -p password 登录密码 -p123 show databases 显示数据库 use databaseName 使用哪个数据库 show tables 显示数据表   alter –更改…

    2023年4月8日
    00
  • SpringBoot+redis+activemq秒杀场景简单整理

    目前设想的大致的序列图 秒杀开始前,初始化数据库秒杀信息,并同步到redis缓存中,秒杀开始后,用户直接访问redis缓存进行库存扣减,当剩余库存小于0时说明商品抢购完毕,直接返回库存不足抢购失败,抢购成功的用户返回“秒杀成功,订单处理中,请稍后查看”,并且成功的抢购信息进入队列,异步扣减数据库实际库存并下单。用户查询订单,根据用户和商品查询对应的订单信息返…

    Redis 2023年4月13日
    00
  • Mysql两表联合查询的四种情况总结

    下面是详细讲解“Mysql两表联合查询的四种情况总结”的完整攻略。 简介 Mysql联合查询是指在多个表中查询出相关联的数据,并将这些数据组合成一个数据集合。 一般常见的联合查询有两个表之间的连接查询和两个表的全集查询,而这两种查询又可以分成内联接、左联接、右联接、全联接等四种情况。下面我们将分别介绍这四种情况的使用方法。 内联接 内联接是指仅显示两个表中相…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部