要在MySQL中远程复制数据库,您需要遵循以下步骤:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password';
这将创建一个用户名为’repl_user’,密码为’your_password’的用户,并允许该用户从任何IP地址进行远程连接。为了安全起见,建议使用更具体的IP地址范围。
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
CREATE DATABASE your_target_database;
/etc/mysql/my.cnf
或/etc/my.cnf
),在[mysqld]
部分添加以下行:bind-address = 0.0.0.0
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
这将使MySQL监听所有网络接口上的连接,并为复制分配一个服务器ID。确保log-bin
设置正确,以便记录二进制日志。
sudo systemctl restart mysql
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON your_target_database.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
记下File
和Position
的值,稍后将用于配置复制。
source_file
和source_position
替换为上一步中获取的值:CHANGE MASTER TO
MASTER_HOST='source_server_ip',
MASTER_USER='repl_user',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='source_file',
MASTER_LOG_POS=source_position;
START SLAVE;
现在,目标服务器应该开始复制源服务器上的数据库。您可以通过查询SHOW SLAVE STATUS\G
来检查复制状态。如果一切正常,您将在目标服务器上看到与源服务器相同的数据。