Windows服务器上的mysql复制

Bla*_*ack 6 mysql replication windows

当两台服务器都基于 Windows 时,如何在 MySQL 5.6 中设置复制(主/从)?我喜欢的所有东西都是基于 Linux 的复制。请有人帮助经历过基于 Windows 的服务器的复制。

jyn*_*nus 10

在windows服务器上设置复制相当于在其他系统上做:官方手册为您提供了详细的指南。简而言之:

  1. 在两台服务器上配置不同的 server-id,并在 master 上激活二进制日志。如果还没有完成,最典型的方法是修改 my.ini 文件并重新启动服务(net restart mysql):

    [mysqld]
    log-bin
    server-id = 1
    
    Run Code Online (Sandbox Code Playgroud)

    还要确保主节点可以从从节点访问,并且它没有绑定到 localhost ( bind-address = 127.0.0.1)

  2. 在主服务器上为从服务器创建一个用户以使用 REPLICATION SLAVE 权限连接(为此使用 MySQL 命令行):

    mysql master> CREATE USER 'user_name'@'ip.of.the.slave' IDENTIFIED BY 'password';
    mysql master> GRANT REPLICATION SLAVE ON *.* TO 'user_name'@'ip.of.the.slave';        
    
    Run Code Online (Sandbox Code Playgroud)
  3. 备份主站并将其应用到从站。有几种方法可以做到这一点(停止服务器并复制文件有效),但最简单的方法是 se mysqldump(导航到 sql-server 安装的 bin 目录(fe C:\Program Files\MySQL\MySQL Server 5.7\bin)。此外,您可能需要通过将其附加到两个命令来提供凭据:-uroot -pPassword)

    (on the master windows command line) mysqldump --all-databases --master-data > dump.sql
    (on the slave windows command line ) mysql < dump.sql
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在 dump.sql 的开头你会发现这样一行:

    -- CHANGE MASTER TO MASTER_LOG_FILE = 'file_name', MASTER_LOG_POS = file_pos;
    
    Run Code Online (Sandbox Code Playgroud)

    使用这些参数在从属设备上配置复制:

    mysql slave> CHANGE MASTER TO MASTER_HOST = 'ip.of.the.master',
                     MASTER_USER = 'user_name_you_just_created',
                     MASTER_PASSWORD = 'password_you_just_defined',
                     MASTER_LOG_FILE = 'file_name',
                     MASTER_LOG_POS = file_pos;
    
    Run Code Online (Sandbox Code Playgroud)

    (请注意,整数没有引号,例如MASTER_LOG_POS)。

  5. 如果到目前为止一切正常,只需在从站上开始复制:

    mysql slave> START SLAVE;
    
    Run Code Online (Sandbox Code Playgroud)

    要检查它是否正在运行,请执行:

    mysql slave> SHOW SLAVE STATUS;
    
    Run Code Online (Sandbox Code Playgroud)

    并寻找:

       Slave_IO_Running: Yes
      Slave_SQL_Running: Yes
    
    Run Code Online (Sandbox Code Playgroud)

基于GTID的复制有点不同,我没有提到。