主服务器my.cnf配置添加:
(window上的mysql配置文件可能为my.ini)
my.cnf 默认位置在 /etc/my.cnf
my.ini 默认位置在 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
[mysqld]
server-id=1
log-bin=mysql-bin
重启主服务器mysql服务
sudo systemctl restart mysqld
检查状态
sudo systemctl status mysqld
为主服务器创建一个复制用户,并授权其从服务器上复制数据
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'%' IDENTIFIED BY '密码';
刷新配置
FLUSH PRIVILEGES;
从服务器MySQL添加配置:
[mysqld]
server-id=2
relay-log=mysql-relay-bin
read-only=1
重启MySQL服务
在主服务器的mysql服务中输入:
SHOW MASTER STATUS;
查看File和Position的值
在从服务器上配置复制,从服务器的mysql服务中输入:
CHANGE MASTER TO
MASTER_HOST='主服务器的IP地址',
MASTER_USER='在主服务器创建的复制用户名',
MASTER_PASSWORD='在主服务器创建的复制用户密码',
MASTER_LOG_FILE='File值(记录的二进制日志文件名)',
MASTER_LOG_POS=Position值(记录的日志位置);
启动从服务器的复制进程:
START SLAVE;
最后检查复制状态
SHOW SLAVE STATUS;
如果Slave_IO_Running和Slave_SQL_Running都是yes,那么通常表示复制是在正常运行的。
验证主从复制
在主服务器MySQL创建一个叫abc的库
create database abc;
再到从服务器查看
show databases;
此时从服务器也同样创建了一个叫abc的库
其他
重置复制元数据:
如果元数据损坏或不一致,可以尝试重置它们。
停止复制进程:
STOP SLAVE;
重置元数据表:
RESET SLAVE;