在 MySQL 数据库中,主从复制是一种常见的数据库备份和扩展读负载的方法。本文将详细介绍如何设置 MySQL 的主从复制。

前提条件

在开始之前,请确保以下条件已经满足:

  • 主数据库服务器(主服务器)和从数据库服务器(从服务器)都安装了 MySQL。
  • 主服务器上有一个可复制的数据库。
  • 主服务器和从服务器之间的网络连接正常。

设置步骤

  1. 配置主服务器

    首先,在主服务器上配置 MySQL。修改 /etc/mysql/my.cnf 文件,添加以下配置:

    [mysqld]
    server-id = 1
    binlog-format = ROW
    log-bin = /var/log/mysql/binlog
    

    其中,server-id 是主服务器的唯一标识符,binlog-format 指定二进制日志的格式,log-bin 指定二进制日志的存储路径。

  2. 创建复制用户

    在主服务器上创建一个用于复制的用户:

    CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
    FLUSH PRIVILEGES;
    

    其中,replication_user 是复制的用户名,password 是对应的密码。

  3. 配置从服务器

    在从服务器上配置 MySQL。修改 /etc/mysql/my.cnf 文件,添加以下配置:

    [mysqld]
    server-id = 2
    log-bin = /var/log/mysql/binlog
    

    其中,server-id 是从服务器的唯一标识符。

  4. 从服务器连接主服务器

    在从服务器上执行以下命令,连接到主服务器:

    CHANGE MASTER TO
    MASTER_HOST='主服务器IP地址',
    MASTER_USER='replication_user',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='主服务器上的二进制日志文件名',
    MASTER_LOG_POS=主服务器上的二进制日志位置;
    

    其中,主服务器IP地址 是主服务器的 IP 地址,replication_user 是复制的用户名,password 是对应的密码,主服务器上的二进制日志文件名主服务器上的二进制日志位置 可以通过以下命令获取:

    SHOW MASTER STATUS;
    
  5. 启动复制

    在从服务器上执行以下命令,启动复制:

    START SLAVE;
    
  6. 验证复制

    在从服务器上执行以下命令,验证复制是否成功:

    SHOW SLAVE STATUS \G
    

    如果复制的 Slave_IO_RunningSlave_SQL_Running 都是 Yes,则表示复制成功。

扩展阅读

如果您想了解更多关于 MySQL 主从复制的知识,可以参考以下链接:

祝您学习愉快!🎉