当前位置: 首页 > 开发者资讯

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

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

  1. 主从复制的基本概念

  主数据库(Master)

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

  从数据库(Slave)

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

  二进制日志(Binary Log)

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

Python3.png

  2. 配置主从复制的步骤

  环境准备

  假设我们有两台服务器:

  主服务器(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_USER和MASTER_PASSWORD:主数据库上创建的复制用户的用户名和密码。

  MASTER_LOG_FILE和MASTER_LOG_POS:主数据库上SHOW MASTER STATUS命令输出的File和Position值。

  启动复制

  在从数据库上启动复制:

  START SLAVE;

  检查复制状态

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

  SHOW SLAVE STATUS\G

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

  3. 验证主从复制

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

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

  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主从复制,并验证数据的同步。在实际应用中,您还可以根据需求进一步优化和扩展主从复制架构,以满足更高的性能和可用性要求。

 


猜你喜欢