如何在 Debian 10 上配置 MySQL (MariaDB) 主从复制

2023-10-23

MySQL 复制是将数据从一台数据库服务器(主服务器)复制到一台或多台服务器(从服务器)的过程。

MySQL 支持多种复制拓扑,其中主/从拓扑是最著名的拓扑之一,其中一台数据库服务器充当主服务器,而一台或多台服务器充当从服务器。默认情况下,复制是异步的,主服务器将描述数据库修改的事件发送到其二进制日志,从服务器在准备好时请求事件。

在本指南中,我们将向您展示如何在 Debian 10 上设置具有一主一从服务器的 MariaDB 主/从复制。MariaDB 是 Debian 中 MySQL 的默认实现。相同的步骤适用于 Oracle MySQL。

这种类型的复制拓扑最适合部署只读副本以实现读取扩展、实时数据库备份以实现灾难恢复以及分析作业。

先决条件#

我们假设您有两台运行 Debian 10 的服务器,通过专用网络相互通信。如果您的托管提供商不支持私有 IP 地址,您可以使用公共 IP 地址并将防火墙配置为仅允许来自受信任来源的端口 3306 上的流量。

本示例中使用的服务器具有以下 IP 地址:

Master IP: 10.10.8.12
Slave IP:  10.10.8.164

安装 MariaDB#

默认 Debian 10 存储库包括 MariaDB 版本 10.3。最好安装相同的MariaDB版本在两台服务器上以避免任何潜在的问题。

安装 MariaDB在主站和从站上发出以下命令:

sudo apt-get updatesudo apt-get install mariadb-server

配置主服务器#

第一步是设置主服务器。我们将进行以下更改:

  • Set the MariaDB服务器监听私有IP .
  • 设置唯一的服务器 ID。
  • 启用二进制日志记录。

打开 MariaDB 配置文件并取消注释或设置以下行:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
主控:/etc/mysql/mariadb.conf.d/50-server.cnf
bind-address           = 10.10.8.12
server-id              = 1
log_bin                = /var/log/mysql/mysql-bin.log

完成后,保存文件并重新启动 MySQL 服务以使更改生效:

sudo systemctl restart mariadb

下一步是创建新的复制用户。以root用户登录MariaDB服务器:

sudo mysql

运行以下 SQL 查询来创建名为的用户replica并授予REPLICATION SLAVE用户的权限:

CREATE USER 'replica'@'10.10.8.164' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'10.10.8.164';
确保使用从属 IP 地址更改 IP。您可以根据需要命名用户。

仍在 MySQL 提示符下,执行以下命令,该命令将打印二进制文件名和位置。

SHOW MASTER STATUS\G
*************************** 1. row ***************************
            File: mysql-bin.000001
        Position: 328
    Binlog_Do_DB: 
Binlog_Ignore_DB: 
1 row in set (0.001 sec)

记下文件名,‘mysql-bin.000001’和位置‘328’。配置从服务器时这些值是必需的,并且在您的服务器上可能会有所不同。

配置从服务器#

我们将在从服务器上进行与主服务器上相同的更改:

  • 设置MySQL服务器监听私有IP。
  • 设置唯一的服务器 ID。
  • 启用二进制日志记录。

打开 MariaDB 配置文件并编辑以下行:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
从站:/etc/mysql/mariadb.conf.d/50-server.cnf
bind-address           = 10.10.8.164
server-id              = 2
log_bin                = /var/log/mysql/mysql-bin.log

重新启动 MariaDB 服务:

sudo systemctl restart mariadb

下一步是配置从服务器用于连接主服务器的参数。登录 MariaDB shell:

sudo mysql

首先停止从属线程:

STOP SLAVE;

运行以下查询来配置主/从复制:

CHANGE MASTER TOMASTER_HOST='10.10.8.12',MASTER_USER='replica',MASTER_PASSWORD='replica_password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=328;

确保您使用正确的 IP 地址、用户名和密码。日志文件名和位置必须与您从主服务器获取的值相同。

完成后,启动从属线程。

START SLAVE;

测试配置#

此时,您应该有一个有效的主/从复制设置。

要验证一切设置是否正确,请在主服务器上创建一个新数据库:

sudo mysql
CREATE DATABASE replicatest;

登录从MySQL shell:

sudo mysql

运行以下命令列出所有数据库 :

SHOW DATABASES;

您会注意到您在主服务器上创建的数据库已复制到从服务器上:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| replicatest        |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

结论#

在本教程中,我们向您展示了在 Debian 10 上创建 MariaDB 主/从复制。

如果您有任何疑问,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Debian 10 上配置 MySQL (MariaDB) 主从复制 的相关文章

随机推荐

  • 在 Bash 中检查文件是否为空的 5 种方法

    在 Linux 中 空文件是大小为零字节的文件 这意味着该文件不包含任何数据 并且在文本编辑器中打开时没有任何内容 可以使用 touch 命令创建一个空文件 touch myfile txt 这将在当前目录中创建一个名为 myfile tx
  • 如何在 MySQL 中创建管理员用户

    在 MySQL 中管理数据库通常需要使用特权用户或超级管理员用户 他们拥有读取 写入 更新和管理数据库的所有权限 在 MySQL 中 这通常是 root 用户 但建议创建单独的超级管理员用户以实现更好的安全管理 本文将指导您如何在 MySQ
  • 如何在 Fedora 36/35/34 上安装 TeamViewer

    团队查看器是一款功能强大的远程桌面和文件共享应用程序 适用于大多数操作系统和移动设备 为了将 TeamViewer 的使用商业化 您必须购买许可证 您可以免费使用它 仅供个人使用 Teamviewer 的 RPM 包由官方团队构建 可以安装
  • 如何更改 PHP 会话超时

    作为 Web 开发人员 了解 PHP 会话超时对于构建安全可靠的 Web 应用程序至关重要 PHP 会话是一种跨多个页面存储用户信息的方式 会话超时是指会话在过期之前保持活动状态的持续时间 在本分步指南中 我们将引导您完成更改 PHP 会话
  • 如何在 Ubuntu、Debian 和 LinuxMint 上安装 Python 3.7

    在撰写本文时 Python 3 7 系列的最新稳定版本已可供安装 本文将帮助您在 Ubuntu 和 LinuxMint 操作系统上安装 Python 3 7 9 你可以拜访here阅读有关 Python 版本的更多信息 先决条件 保持软件包
  • 如何在 Ubuntu 16.04、14.04 上安装 Nginx、PHP 7 和 MySQL

    PHP 7 2 的最新主要版本已经发布 在速度和安全性方面进行了大量优化 所以你应该尝试这个版本来进行开发 本教程将帮助您在 Ubuntu 17 10 16 04 和 14 04 LTS 版本上安装 Nginx PHP 7 2 和 MySQ
  • 了解 Terraform 语法和配置文件

    Terraform 由 HashiCorp 开发 是一款因其在基础设施即代码 IaC 方面的强大功能而广为人知的工具 本综合指南旨在让您深入了解 Terraform 语法 特别关注配置文件 了解 Terraform 语法 Terraform
  • Fedora 26 发布,新功能及升级步骤

    Fedora 26 发布 最终的 Fedora 26 已发布于2017 年 7 月 11 日 Fedora 26有各种软件升级 安全补丁 该版本将与 GENOME 3 24 一起发布 您可以从以下位置下载 Fedora 26 预发行版 Be
  • 如何重命名 SQL Server 数据库

    Microsoft SQL Server 为您提供了多种重命名数据库的方法 您可以使用 SQL Server Management Studio 或运行 SQL 查询来重命名数据库 在重命名数据库之前 请记住 它可能会中断使用当前数据库名称
  • 如何使用SCP命令安全传输文件

    SCP 安全复制 是一个命令行实用程序 允许您在两个位置之间安全地复制文件和目录 With scp 您可以复制文件或目录 从本地系统到远程系统 从远程系统到本地系统 在本地系统的两个远程系统之间 当传输数据时scp 文件和密码都经过加密 因
  • 如何在 CentOS 7 上安装 VMware Workstation Player

    VMware是一个成熟稳定的虚拟化解决方案 允许您在一台机器上运行多个独立的操作系统 您可以创建自己的虚拟机并评估许多软件供应商作为虚拟设备分发的软件 这些软件可从VMware 解决方案交流 本教程将指导您完成在 CentOS 7 上安装
  • 如何在 Ubuntu 18.04 上安装 Java

    Java 是世界上最流行的编程语言之一 用于构建不同类型的跨平台应用程序 本教程介绍如何在 Ubuntu 18 04 上安装各种版本的 OpenJDK 以及 Oracle Java 相同的说明适用于 Ubuntu 16 04 和任何基于 U
  • 如何在 Ubuntu 18.04 上安装 Apache Cassandra

    Apache Cassandra 是一个免费的开源 NoSQL 数据库 不存在单点故障 它提供线性可扩展性和高可用性 而不会影响性能 Apache Cassandra 被许多组织使用 包括 Apple NetFlix eBay 和 Easo
  • Linux 中的超时命令

    timeout是一个命令行实用程序 它运行指定的命令 并在给定时间段后终止该命令 如果该命令仍在运行 换句话说 timeout允许您运行有时间限制的命令 这timeout命令是 GNU 核心实用程序包的一部分 几乎所有 Linux 发行版上
  • 如何在 CentOS 7 上添加交换空间

    交换空间是磁盘上的空间 当物理 RAM 内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 在大多数情况下 当在虚拟机上运行 CentOS 时 不存在交换
  • 如何在 Ubuntu 18.04 上设置 Apache 虚拟主机

    在本教程中 我们将提供有关如何在 Ubuntu 18 04 上设置 Apache 虚拟主机的分步说明 Apache 虚拟主机允许您在一台计算机上运行多个网站 使用虚拟主机 您可以指定站点文档根目录 包含网站文件的目录 为每个站点创建单独的安
  • 如何在 Ubuntu 20.04 上安装和配置 VNC

    虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计算机 它是 Microsoft 的开源替代品远程桌面协议 RDP 本文介绍如何在 Ubuntu 20 04 上安装和配置 VNC 服务器 我们还将向您展示如何
  • 如何在 Ubuntu 18.04 上禁用防火墙

    Ubuntu 附带了一个名为 UFW 简单防火墙 的防火墙配置工具 UFW 是一个用户友好的前端 用于管理 iptables 防火墙规则 其主要目标是使管理防火墙规则更容易 或者顾名思义 不复杂 强烈建议保持防火墙启用 但是 在某些情况下
  • 如何在 Debian 9 上安装 Jenkins

    Jenkins是一个开源自动化服务器 提供了一种设置持续集成和持续交付 CI CD 管道的简单方法 持续集成 CI 是一种 DevOps 实践 团队成员定期将代码更改提交到版本控制存储库 然后运行自动化构建和测试 持续交付 CD 是自动构建
  • 如何在 Debian 10 上配置 MySQL (MariaDB) 主从复制

    MySQL 复制是将数据从一台数据库服务器 主服务器 复制到一台或多台服务器 从服务器 的过程 MySQL 支持多种复制拓扑 其中主 从拓扑是最著名的拓扑之一 其中一台数据库服务器充当主服务器 而一台或多台服务器充当从服务器 默认情况下 复