MySQL 5.6 主从复制详细步骤

介绍

MySQL 主从复制是一种常见的数据库复制技术,它可以将一个数据库服务器(主服务器)上的数据复制到另一个或多个数据库服务器(从服务器)。这种技术可以提高数据库的可用性和性能,并且可以用于数据备份、负载均衡以及在多个数据中心同步数据等场景。

本文将详细介绍如何在 MySQL 5.6 版本上配置和使用主从复制。我们将通过以下步骤来完成配置:

  1. 创建主服务器和从服务器
  2. 配置主服务器
  3. 配置从服务器
  4. 启动主从复制

创建主服务器和从服务器

我们首先需要在两台不同的服务器上创建 MySQL 实例,其中一台将作为主服务器,另一台将作为从服务器。你可以使用任何方式来创建这些服务器,比如在不同的物理机上安装 MySQL,或者使用虚拟机或者容器来创建虚拟服务器。

配置主服务器

在主服务器上进行下列配置:

  1. 打开主服务器的配置文件 my.cnf(通常位于 /etc/mysql/my.cnf 或者 /etc/my.cnf),添加以下配置项:
# 设置服务器唯一标识
server-id = 1

# 开启二进制日志,用于记录所有的数据库更改
log-bin = /var/log/mysql/mysql-bin.log

# 设置需要复制的数据库名称
binlog-do-db = your_database_name

# 设置可以复制到从服务器的 IP 地址
# 如果有多个从服务器,可以使用逗号分隔多个 IP 地址
replicate-do-db = your_database_name

# 设置复制账户和密码,用于从服务器连接主服务器
# 请根据实际情况设置账户和密码
master-user = your_username
master-password = your_password
  1. 重启主服务器以使配置生效。

配置从服务器

在从服务器上进行下列配置:

  1. 打开从服务器的配置文件 my.cnf(通常位于 /etc/mysql/my.cnf 或者 /etc/my.cnf),添加以下配置项:
# 设置服务器唯一标识,必须和主服务器不同
server-id = 2

# 设置从服务器需要复制的数据库名称
replicate-do-db = your_database_name

# 设置主服务器的 IP 地址和端口
master-host = your_master_server_ip
master-port = your_master_server_port

# 设置复制账户和密码,用于从服务器连接主服务器
# 请根据实际情况设置账户和密码
master-user = your_username
master-password = your_password
  1. 重启从服务器以使配置生效。

启动主从复制

在主服务器上进行下列操作:

  1. 登录主服务器的 MySQL 控制台,创建一个用于复制的账户,并为其授予复制权限:
CREATE USER 'your_username'@'your_slave_ip' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'your_username'@'your_slave_ip';
FLUSH PRIVILEGES;
  1. 执行以下命令查看主服务器的状态:
SHOW MASTER STATUS;

记下输出中的 FilePosition 值,它们将用于从服务器的配置。

在从服务器上进行下列操作:

  1. 登录从服务器的 MySQL 控制台,执行以下命令配置从服务器复制主服务器的信息:
CHANGE MASTER TO MASTER_HOST='your_master_server_ip', MASTER_PORT=your_master_server_port, MASTER_USER='your_username', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='your_master_log_file', MASTER_LOG_POS=your_master_log_position;

your_master_log_file 替换为主服务器 SHOW MASTER STATUS 命令输出中的 File 值,将 your_master_log_position 替换为 Position 值。

  1. 开启从服务器的复制功能:
START SLAVE;
  1. 执行以下命令查看从服务器的状态:
SHOW SLAVE STATUS;

检查输出中的 Slave_IO_RunningSlave_SQL_Running 值是否为 Yes,如果是,则主从复制配置成功。

流程图

下面是 MySQL 5.6