准备两台服务器,都安装 mysql 服务器。主服务器称为 master
, 从服务器称为 slave
。前提要设置好防火墙,保证网络通畅。
master 配置
配置 my.cnf
:
[mysqld]
#bind-address = 127.0.0.1 注释掉
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
relay_log = /var/log/mysql/mysql-relay-bin.log
重启 mysql 。
登录到 mysql 并执行以下:
create user 'slave_user'@'salve_ip' identified by 'slave_pass';
grant replication slave on *.* to 'slave_user'@'salve_ip';
flush privileges
show master status;
取得并记下 File
和 Position
。
slave 配置
配置 my.cnf
[mysqld]
#bind-address = 127.0.0.1 注释掉
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
relay_log = /var/log/mysql/mysql-relay-bin.log
重启 mysql 。
登录到 mysql 并执行以下:
create database sync_database charset utf8mb4; -- 根据自己的设定修改
stop slave;
change master to master_host='master_ip', master_user='slave_user', master_password='slave_pass', master_log_file='mysql-bin.000002', master_log_pos=789; -- 这里的 master_log_file 和 master_log_pos 是 master 执行 show master status 的结果
start slave;
slave
只会同步start slave;
之后的数据。之前的数据还是要通过导入的方法同步。