65.9K
CodeProject 正在变化。 阅读更多。
Home

MySQL 数据库复制过程

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.20/5 (6投票s)

2012年9月4日

CPOL

2分钟阅读

viewsIcon

34438

数据库复制过程用于复制来自 MySQL 不同数据库的数据。

引言

这是一个在 MySQL 上使用两个或多个数据库执行数据库复制的过程。

背景

此数据库复制过程用于在 MySQL 的各个数据库之间执行复制。 当用户需要同步数据库(所有数据必须具有相同的信息)时,基本上会执行复制。

执行数据库复制的步骤

要建立具有多个主服务器的数据库复制,我们必须建立循环数据库复制。 在此方法中,所有服务器都将充当主服务器和从服务器。 过程如下

  1. 首先,在所有服务器中安装 MySQL,版本相同。
  2. 要创建主从配置,首先我们将在所有服务器上创建主服务器,因为要创建任何服务器的从服务器,我们需要主服务器的主服务器信息(日志文件名和位置)。
  3. C:/Program Files/MySQL/MySQL Server 5.x/ (此路径将是 MySQL 安装路径) 用记事本打开 my.inimy.cnf。 在这里,x 是您的 MySQL 版本。
  4. 在之后添加以下行
  5. datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

    (路径将是 MySQL 安装路径。)

    log-bin = C:/Program Files/MySQL/MySQL Server 5.5/mysql-bin.log
    log-slave-updates
    binlog-do-db=databasename
    replicate-do-db = databasename
    server-id = n
    replicate-same-server-id = 0
    auto-increment-increment = N
    auto-increment-offset = n

    (其中路径必须是您的 MySQL 安装路径)

    n = Consecutive unique integer from 1,2,..n for all servers
    N = total number of servers to replicate)
  6. 转到控制面板 → 管理工具 → 服务。
  7. 重新启动 MySQL 服务。
  8. 转到开始 → 所有程序 → MySQL → MySQL Server 5.x → MySQL 5.x 命令行客户端。
  9. 使用创建服务器实例时给出的密码登录。
  10. 创建具有复制权限的用户,该用户将用作来自另一台服务器的从用户。
  11. GRANT REPLICATION SLAVE ON *.* TO 'username'@'%' IDENTIFIED BY 'password';

    提供一些将由从属服务器使用的用户名和密码。

  12. 执行以下命令
  13. FLUSH PRIVILEGES;
    USE databasename;
    FLUSH TABLES WITH READ LOCK;
    UNLOCK TABLES;
  14. 运行以下命令
  15. SHOW MASTER STATUS;

    记下输出(文件和位置)。

  16. 运行 EXIT 以退出 MySQL 客户端。
  17. 按照所有服务器的步骤 3 – 12。
  18. 现在要获取服务器的更新,我们将创建每个服务器的从服务器。
  19. 从给定路径启动 MySQL 命令行客户端。
  20. 转到开始 → 所有程序 → MySQL → MySQL Server 5.x → MySQL 5.x 命令行客户端。

  21. 使用创建服务器实例时给出的密码登录。
  22. 运行以下命令以停止从属服务器
  23. STOP SLAVE;
  24. 现在,我们设置此服务器的 MASTER,以便它将获取在 MASTER 服务器中进行的更新。 要设置 MASTER,请运行以下命令
  25. CHANGE MASTER TO MASTER_HOST='Master_Server_IP',
    MASTER_USER='Master_Server_username',
    MASTER_PASSWORD='Master_Server_password',
    MASTER_LOG_FILE='Master_Server_master_log_file_name',
    MASTER_LOG_POS=Master_Server_master_log_position;

    其中 MASTER_HOST:要从中获取更新的服务器的 IP 地址,MASTER_USER:使用复制权限创建的主服务器用户的用户名,MASTER_PASSWORD:使用复制权限创建的主服务器用户的密码,MASTER_LOG_FILE:服务器的日志文件名,MASTER_LOG_POS:日志文件的位置。

    您可以通过在主服务器上运行 SHOW MASTER STATUS 命令来获取最后两个参数值。

  26. 按照所有服务器的步骤 15 – 18。
  27. 在每台服务器上配置 MASTER 和 SLAVE 后,运行以下命令以启动从属服务器
  28. START SLAVE;
  29. 运行以下命令以检查从属服务器的状态
  30. SHOW SLAVE STATUS\G

Slave_IO_State 的状态必须是“等待服务器发送事件”。

© . All rights reserved.