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

MySQL主从复制配置:实现高可用性与数据同步的步骤

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

MySQL主从复制配置:实现高可用性与数据同步的步骤

引用
1
来源
1.
https://www.kkidc.com/ask/kfz/1476.html

MySQL主从复制(Master-Slave Replication)是一种常见的解决方案,通过将主数据库(Master)的数据复制到一个或多个从数据库(Slave)来实现数据同步和负载均衡。本文将详细介绍如何配置MySQL主从复制,以实现高可用性和数据同步。

主从复制的基本概念

  • 主数据库(Master)
    主数据库是数据的源头,所有写操作(如INSERT、UPDATE、DELETE)都在主数据库上执行。主数据库将这些操作记录到二进制日志(Binary Log)中。

  • 从数据库(Slave)
    从数据库通过读取主数据库的二进制日志来复制数据。从数据库可以用于读操作(如SELECT),从而分担主数据库的负载。

  • 二进制日志(Binary Log)
    二进制日志是MySQL记录所有更改数据库数据的操作的文件。主从复制依赖于二进制日志来实现数据同步。

配置主从复制的步骤

环境准备

假设我们有两台服务器:

  • 主服务器(Master):192.168.1.1
  • 从服务器(Slave):192.168.1.2

确保两台服务器上都安装了MySQL,并且网络互通。

配置主数据库(Master)

修改主数据库配置文件

在主服务器的MySQL配置文件(通常是my.cnf或my.ini)中添加或修改以下配置:

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW
  • server-id:主服务器的唯一标识,必须为1。
  • log-bin:启用二进制日志,并指定日志文件的前缀。
  • binlog-format:指定二进制日志的格式,推荐使用ROW格式。
重启MySQL服务

保存配置文件后,重启MySQL服务以使配置生效:

sudo systemctl restart mysql
创建复制用户

在主数据库上创建一个用于复制的用户,并授予复制权限:

CREATE USER 'repl'@'192.168.1.2' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.2';
FLUSH PRIVILEGES;
获取主数据库状态

在主数据库上执行以下命令,记录File和Position的值,后续在从数据库配置时会用到:

SHOW MASTER STATUS;

配置从数据库(Slave)

修改从数据库配置文件

在从服务器的MySQL配置文件(通常是my.cnf或my.ini)中添加或修改以下配置:

[mysqld]
server-id=2
relay-log=mysql-relay-bin
read-only=1
  • server-id:从服务器的唯一标识,必须为2。
  • relay-log:指定中继日志文件的前缀。
  • read-only:设置从数据库为只读模式,防止误操作。
重启MySQL服务

保存配置文件后,重启MySQL服务以使配置生效:

sudo systemctl restart mysql
配置从数据库复制

在从数据库上执行以下命令,配置复制:

CHANGE MASTER TO
MASTER_HOST='192.168.1.1',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
  • MASTER_HOST:主数据库的IP地址。
  • MASTER_USERMASTER_PASSWORD:主数据库上创建的复制用户的用户名和密码。
  • MASTER_LOG_FILEMASTER_LOG_POS:主数据库上SHOW MASTER STATUS命令输出的File和Position值。
启动复制

在从数据库上启动复制:

START SLAVE;
检查复制状态

在从数据库上执行以下命令,检查复制状态:

SHOW SLAVE STATUS\G

确保Slave_IO_Running和Slave_SQL_Running的值都为Yes,表示复制已成功启动。

验证主从复制

在主数据库上创建测试数据

在主数据库上创建一个测试数据库和表,并插入一些数据:

CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO test_table (id, name) VALUES (1, 'Alice'), (2, 'Bob');

在从数据库上查询数据

在从数据库上查询测试数据,验证数据是否已同步:

USE test_db;
SELECT * FROM test_table;

如果数据已同步,您应该能够看到与主数据库相同的数据。

MySQL主从复制是实现高可用性和数据同步的有效方案。通过这篇文章整理的步骤,您可以成功配置MySQL主从复制,并验证数据的同步。在实际应用中,您还可以根据需求进一步优化和扩展主从复制架构,以满足更高的性能和可用性要求。

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