MySQL 数据库复制过程






4.20/5 (6投票s)
数据库复制过程用于复制来自 MySQL 不同数据库的数据。
引言
这是一个在 MySQL 上使用两个或多个数据库执行数据库复制的过程。
背景
此数据库复制过程用于在 MySQL 的各个数据库之间执行复制。 当用户需要同步数据库(所有数据必须具有相同的信息)时,基本上会执行复制。
执行数据库复制的步骤
要建立具有多个主服务器的数据库复制,我们必须建立循环数据库复制。 在此方法中,所有服务器都将充当主服务器和从服务器。 过程如下
- 首先,在所有服务器中安装 MySQL,版本相同。
- 要创建主从配置,首先我们将在所有服务器上创建主服务器,因为要创建任何服务器的从服务器,我们需要主服务器的主服务器信息(日志文件名和位置)。
- 从 C:/Program Files/MySQL/MySQL Server 5.x/ (此路径将是 MySQL 安装路径) 用记事本打开 my.ini 或 my.cnf。 在这里,x 是您的 MySQL 版本。
- 在之后添加以下行
- 转到控制面板 → 管理工具 → 服务。
- 重新启动 MySQL 服务。
- 转到开始 → 所有程序 → MySQL → MySQL Server 5.x → MySQL 5.x 命令行客户端。
- 使用创建服务器实例时给出的密码登录。
- 创建具有复制权限的用户,该用户将用作来自另一台服务器的从用户。
- 执行以下命令
- 运行以下命令
- 运行
EXIT
以退出 MySQL 客户端。 - 按照所有服务器的步骤 3 – 12。
- 现在要获取服务器的更新,我们将创建每个服务器的从服务器。
- 从给定路径启动 MySQL 命令行客户端。
- 使用创建服务器实例时给出的密码登录。
- 运行以下命令以停止从属服务器
- 现在,我们设置此服务器的 MASTER,以便它将获取在 MASTER 服务器中进行的更新。 要设置 MASTER,请运行以下命令
- 按照所有服务器的步骤 15 – 18。
- 在每台服务器上配置 MASTER 和 SLAVE 后,运行以下命令以启动从属服务器
- 运行以下命令以检查从属服务器的状态
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)
GRANT REPLICATION SLAVE ON *.* TO 'username'@'%' IDENTIFIED BY 'password';
提供一些将由从属服务器使用的用户名和密码。
FLUSH PRIVILEGES;
USE databasename;
FLUSH TABLES WITH READ LOCK;
UNLOCK TABLES;
SHOW MASTER STATUS;
记下输出(文件和位置)。
转到开始 → 所有程序 → MySQL → MySQL Server 5.x → MySQL 5.x 命令行客户端。
STOP SLAVE;
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 命令来获取最后两个参数值。
START SLAVE;
SHOW SLAVE STATUS\G
Slave_IO_State
的状态必须是“等待服务器发送事件”。