一:环境
windows11、window10、mysql8.2
主服务器 ip:192.168.50.97
从服务器 ip:172.28.4.244
同步测试用的数据库scheme:carry-middleware
二:配置
1:主数据库配置
my.ini
重要的配置
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
port=3306
# mysql安装目录
basedir="E:/midthing/mysql8.0-windows/mysql"
# mysql数据库的数据的存放目录(这里是默认的)
datadir=C:/ProgramData/MySQL/MySQL Server 8.2/Data
#开启bin-log,并指定文件目录和文件名前缀
log-bin=E:/midthing/mysql8.0-windows/mysqlbinlog/log-bin.log
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 服务端默认上限是64M
max_allowed_packet=64M
# 在sql_mode中加入兼容模式以提高兼容性
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 唯一id
server-id=1
#需要同步的数据库。 多个用逗号分开
binlog-do-db=carry-middleware
#不同步mysql系统数据库。多个用逗号分开
binlog-ignore-db=mysql
[client]
default-character-set=utf8mb4
port=3306
2:从数据库配置
my.ini
重要的配置,和主服务器差不多
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=C:/mysql
datadir=C:/ProgramData/MySQL/MySQL Server 8.2/Data
log-bin=C:/mysql8.0/binlog/log-bin.log
max_connections=200
character-set-server=utf8
max_allowed_packet=64M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#设置从服务器id,必须于主服务器不同
server-id=2
replicate-do-db=carry-middleware
replicate-ignore-db=mysql
#跳过所有的错误错误,继续执行复制操作
slave-skip-errors=all
// 中继日志
relay-log=C:/mysql8.0/relaylog
// 从库只读
read_only=1
super_read_only=1
innodb_read_only=1
[client]
default-character-set=utf8mb4
port=3306
3:重启mysql
主从全部重启服务,,然后去检查下设置的binlog文件夹下是否产生对应的日志文件
三:创建用户和设置同步权限
1:主数据库
创建用户,设置权限
create user 'slave'@'%' identified by 'Wo982694307';
grant replication slave,replication client on *.* to 'slave'@'%';
flush privileges;
2:从数据库
创建用户,设置外部连接权限,要不然navcat连接不上
CREATE USER 'slave'@'%' IDENTIFIED BY 'Wo982694307';
FLUSH PRIVILEGES;
grant all on *.* to 'slave'@'%';
alter user "slave"@"%" identified with mysql_native_password by 'Wo982694307';
四:配置主从同步指令
stop slave;
change master to master_host='172.28.4.136',master_user='slave',master_password='Wo982694307';
start slave;
查看从数据库状态:show slave status \G;
五:测试
主库插入一条数据
从库同步了一条数据
从数据库无法新增数据