问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MariaDB 双主从同步配置详解

创作时间:
作者:
@小白创作中心

MariaDB 双主从同步配置详解

引用
1
来源
1.
https://www.cnblogs.com/langhua/p/18499420

项目设计

在该项目中,目标是配置MariaDB主从复制,以实现跨服务器的数据同步。项目涉及两台数据库服务器,分别为主服务器和从服务器,通过复制机制,确保主服务器上的数据变动能够实时反映到从服务器中。

双主从复制(Master-Master Replication)的原理是基于两台服务器互为主服务器和从服务器的关系进行数据同步。每台服务器既可以作为主服务器向另一台服务器发送数据更新,也可以作为从服务器接收并应用来自对方服务器的更新。其工作原理可以分为以下几个步骤:

  1. 双向同步
    双主配置中,两个数据库服务器各自保存对方的数据副本,A服务器的更新会同步到B服务器,反之亦然。每个数据库实例上都会记录并存储本机的二进制日志(Binary Log)。当有数据变化时,该服务器会将更新记录在自己的二进制日志文件中,并通过I/O线程传输到对方服务器。

  2. 二进制日志和中继日志
    每个服务器上的主库在接收到数据修改时,会将更改写入自己的二进制日志(binlog),同时充当从库的服务器读取并执行对方的二进制日志,存入中继日志(relay log)。中继日志由SQL线程读取并在从服务器上执行。此时,服务器会跟踪其已读取和已执行的日志位置,以避免重复执行。

  3. 主从切换
    双主复制的关键在于双方都可以互为主库,这样系统在某一台服务器宕机时,可以无缝切换到另一台服务器进行读写操作。通常还可以配合负载均衡器或自动故障转移系统来实现高可用性。


图1 主从复制原理

项目配置说明

主服务器配置

操作系统:CentOS
数据库版本:MariaDB
主服务器IP:47.98.216.101

配置参数:需在主服务器的MySQL配置文件/etc/my.cnf中添加以下参数:
这将启用二进制日志,并指定要复制的数据库。

从服务器配置

操作系统:CentOS
数据库版本:MariaDB
从服务器IP:39.101.66.154

主从连接配置:在从服务器上通过以下命令建立主从连接

CHANGE MASTER TO
  MASTER_HOST='47.98.216.101',
  MASTER_USER='repl_user',
  MASTER_PASSWORD='repl_password',
  MASTER_LOG_FILE='mariadb-bin.000002',
  MASTER_LOG_POS=677;

数据库结构设计:项目中的数据库GlobalMall_DB包含两个主要表:

  • Categories表:存储商品分类信息。
  • Products表:存储商品信息。

项目实施

1. 分别在两台服务器上安装MariaDB并进行配置,启用二进制日志功能

  1. 配置47.98.216.101作为主服务器,启用二进制日志

编辑/etc/my.cnf.d/mariadb-server.cnf,配置完重启服务

[mysqld]
log-bin
server-id=101  # 使用IP最后一字节作为ID
binlog-format=mixed

创建同步用户:

CREATE USER 'rp_zhouhengxu'@'39.101.66.154' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'rp_zhouhengxu'@'39.101.66.154';

3. 配置39.101.66.154为47.98.216.101的从服务器

编辑配置文件在39.101.66.154上编辑/etc/my.cnf.d/mariadb-server.cnf

配置从库
配置好后,重启服务

运行CHANGE MASTER TO语句:执行以下SQL命令,用于设置主服务器的连接信息:

CHANGE MASTER TO
  MASTER_HOST='47.98.216.101',
  MASTER_USER='rp_zhouhengxu',
  MASTER_PASSWORD='password',
  MASTER_LOG_FILE='mariadb-bin.000001',
  MASTER_LOG_POS=3038;

启动复制并查看状态

START SLAVE;
SHOW SLAVE STATUS\G;

4. 配置39.101.66.154为主服务器

启用二进制日志在/etc/my.cnf.d/mariadb-server.cnf添加:

log-bin
server-id=154

配置好后重启服务

创建授权账户在39.101.66.154上创建一个用户,用于主服务器同步:

CREATE USER 'rp_zhouhengxu'@'47.98.216.101' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'rp_zhouhengxu'@'47.98.216.101';

获取二进制日志信息运行SHOW MASTER STATUS;来获取同步所需的日志文件名和位置

5. 配置47.98.216.101为从服务器

设置连接从服务器在47.98.216.101上执行,启动复制并查看状态启动从服务器复制:

项目测试

测试步骤

在47.98.216.101服务器上加数据:

INSERT INTO `GlobalMall_DB`.`Categories` (`CategoryName`, `Description`, `CreatedAt`) VALUES ('good-4167', 'master', '2024-09-18 10:45:36');

添加数据

在39.101.66.154数据库服务器上查看

查看数据

反向验证,在39.101.66.154从数据,在47.98.216.101服务器上查看是否有同步数据

测试结论

通过上述测试,可以验证MySQL主从复制配置成功实现了跨服务器的数据同步。数据在主服务器和从服务器之间能实时同步,符合预期的设计目标。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号