1. 准备两台网络可以单向连通的计算机
1.1. master 服务器环境
操作系统:Linux,阿里云 ECS 云服务器;
MySQL 版本:8.0.18;
IP:112.124.1.100;
1.2. slave 服务器环境
操作系统:windows10,本地操作系统
MySQL 版本:8.0.18
IP:192.168.1.107
2. 配置 master 服务器
2.1. 配置启动参数
[mysqld]
# master 机必须开启 log_bin
log_bin=mysql-bin
# 日志过期时间 ( 0 即不过期 )
expire_logs_days = 0
# 单个 log_bin 文件最大值
max_binlog_size = 100M
# 服务器标识符, 确保每台服务器标识符都不一样
server-id = 1000
# mysql 安装路径
basedir=/var/lib/mysql
# mysql 数据路径
datadir=/var/lib/mysql
# mysql socket 文件
socket = /var/lib/mysql/mysql.sock
# master 记录操作的数据库
binlog_do_db=test
# 启用 innodb 引擎分表存储 ( 默认开启 )
innodb_file_per_table=ON
# 禁用 DNS 解析
skip_name_resolve=OFF
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
3.2. 重启服务使参数生效
3.3. 创建用户并授权,刷新权限
create user 'replication'@'%' identified with mysql_native_password by 'replication';
grant replication slave on *.* to 'replication'@'%';
flush privileges;
3. 配置 slave 服务器
3.1. 配置启动参数
[mysqld]
# 服务器标识符, 确保每台服务器标识符都不一样
server-id = 2000
# mysql 安装路径
basedir=D:\mysql
# mysql 数据路径
datadir=D:\mysql\data
# master 复制数据库
replicate_do_db=test
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
3.2. 重启服务使参数生效
4. 配置一主一从
4.1. 登陆 master,查看 master 状态
show master status;
+------------------------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------------------------+----------+--------------+------------------+-------------------+
| iZbp13qubkh4obhv5jxw91Z-bin.000001 | 155 | test | | |
+------------------------------------+----------+--------------+------------------+-------------------+
4.2. 登陆 slave,查看 slave 是否有残余配置
show slave status\G;
4.3. 先停止 slave,再清除残余配置
stop slave;
reset slave all;
4.4. 根据 master 的 file,position 配置 slave
change master to master_host = '112.124.1.100', master_user = 'replication', master_password = 'root', master_log_file = 'iZbp13qubkh4obhv5jxw91Z-bin.000001', master_log_pos = 155;
4.5. 启动 slave,查看 slave 状态
start slave;
show slave status\G;
注意 Slave_IO_Running 和 Slave_Slave_Running 需要均显示为 Yes,才表示成功,否则留意错误提示。
over