mysql笔记:24. 主从同步环境搭建


MySQL的主从同步(Master-Slave Replication)是一个常用的数据备份和恢复策略,它允许在两个或多个数据库服务器之间实现数据同步。这种方案不仅可以提高数据备份的效率,还可以实现读写分离,从而提高整个系统的性能和可靠性。

主从同步的基本原理

MySQL主从同步是基于二进制日志(binlog)实现的。主数据库将数据变更记录在binlog中,而从数据库则通过读取binlog来获取这些变更,并将它们应用到自己的数据库中。这样,从数据库就可以保持与主数据库的数据一致性。
在这里插入图片描述

主从同步的搭建步骤

1. 环境准备

  • 两台服务器
    一台作为主服务器(Master),一台作为从服务器(Slave)
  • 均安装MySQL8.0
  • 均安装Navicat[可选项]
    使用数据库连接工具Navicat可以便捷的连接数据库,从而方便操作。

2. 配置主服务器(Master)

编辑主服务器的MySQL配置文件,通常位于/etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf,添加下列配置项:

[mysqld]
server-id=1
log-bin=mysql-binlog
binlog-do-db=your-database-name
gtid_mode=ON
enforce_gtid_consistency=ON
  • server-id:MySQL服务器的唯一ID,主从服务器ID不能相同
  • log-bin:启用二进制日志,记录所有数据库的修改信息
  • binlog-do-db:指定需要同步的数据库名(可选配置)
  • gtid_mode:GTID 是一个全局唯一的事务标识符,用于标识数据库集群中的事务。启用 GTID 后,每个事务都会被分配一个唯一的 GTID。
  • enforce_gtid_consistency:当启用 GTID 后,该选项用于强制要求从库只能复制具有与主库一致的 GTID 链的事务,以确保数据一致性。

重启MySQL服务使配置生效。
然后,登录MySQL并执行以下命令:

CREATE USER 'replication_user'@'%' identified by 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
FLUSH PRIVILEGES;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
  • FLUSH PRIVILEGES:刷新权限
  • FLUSH TABLE WITH READ LOCK:锁定所有表,以便获取当前的二进制日志位置
  • SHOW MASTER STATUS:查看主服务器状态

3. 配置从服务器(Slave)

编辑从服务器的MySQL配置文件,添加下列配置项:

[mysqld]  
server-id=2
relay-log=mysql-relay-bin
replicate-do-db=your_database_name
  • relay-log:中继日志,从服务器用于存储接收到的二进制日志事件。
  • replicate-do-db:指定需要同步的数据库名(可选配置)。

重启MySQL服务以使配置生效。然后,登录MySQL并执行以下命令:

CHANGE MASTER TO   
  MASTER_HOST='master_server_ip',
  MASTER_USER='replication_user',
  MASTER_PASSWORD='password',
  MASTER_LOG_FILE='recorded_log_file',
  MASTER_LOG_POS=recorded_log_pos;

START SLAVE; 

SHOW SLAVE STATUS\G;
  • CHANGE MASTER TO:配置从服务器连接到主服务器的信息。
  • START SLAVE:启动从服务器的复制进程。
  • SHOW SLAVE STATUS:查看从服务器的复制状态。确保Slave_IO_RunningSlave_SQL_Running的值都是Yes。

4. 测试配置

在主服务器上创建一个新的表并插入一些数据,然后检查从服务器是否已同步这些更改。

5. 常见故障

5.1. 主从服务器上的MySQL版本不一致导致失败?

解决:卸载并重新安装相同版本的MySQL服务器。

5.2. Slave_IO_Running状态异常?

解决:检查主服务器防火墙配置,放行从服务器相关连接请求或直接关闭主服务器的防火墙(仅限开发环境)。

5.3. 配置正确,但同步失败?

解决:检查bin-log及relay-log文件及其目录的权限,确保配置权限适当。

5.4. 断电重启后同步中断?

解决:检查上述配置及服务状态,修复异常项。

相关推荐

  1. 笔记Mysql 主从

    2024-03-21 13:50:03       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 13:50:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 13:50:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 13:50:03       87 阅读
  4. Python语言-面向对象

    2024-03-21 13:50:03       96 阅读

热门阅读

  1. Codeforces Round 933 (div 3) (6/7)

    2024-03-21 13:50:03       40 阅读
  2. 浅谈前端路由原理hash和history

    2024-03-21 13:50:03       47 阅读
  3. ESP32通过USB/UART/ble/其他协议OTA报错解决

    2024-03-21 13:50:03       41 阅读
  4. git--首次提交本地代码到github

    2024-03-21 13:50:03       47 阅读
  5. 报错:npm WARN ERESOLVE overriding peer dependency

    2024-03-21 13:50:03       29 阅读
  6. bat 实现Windows系统服务看门狗

    2024-03-21 13:50:03       44 阅读
  7. PTA 字符串替换

    2024-03-21 13:50:03       45 阅读
  8. C# 中 判断指定2条线是否相交、重合等功能

    2024-03-21 13:50:03       44 阅读