从库生成两个线程,一个I/O线程,一个SQL线程;
i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
总结:
#设置3306端口 必须是唯一 (当前设备mysql)
port = 3380
# Server Id. 必须是唯一(所有mysql)
server-id=3380
#主从复制指定数据库 不指定就是全部。
binlog-do-db=achievement_conversion_db
# 二进制日志
log-bin="C:/app/MySQL-Proxy/mysql-3380/logs/mysql-bin"
# 错误日志
log-error="C:/app/MySQL-Proxy/mysql-3380/logs/mysql.err.log"
[auto] # 必须是唯一(所有mysql)
server-uuid=cb5a05e2-782b-11e8-84cb-00163e042fa8
添加服务
.\mysqld.exe install MySQL-3381 --defaults-file="my.ini的位置"
1.查看主库信息。 SHOW MASTER STATUS
2.主库创建同步用户
授权用户slave01使用123456密码登录mysql
grant replication slave on *.* to 'slave01'@'127.0.0.1' identified by '123456';
#刷新权限
flush privileges;
打开 mysql库中user表就能看到刚创建的用户了。 (host %所有ip都能访问。)
3.从库配置。
#设置同步信息
CHANGE MASTER TO
master_host='127.0.0.1', #对应主库 :主库 ip
master_user='slave01', #对应主库 :主库 同步账号
master_password='123456', #对应主库 :主库 同步密码
master_port=3380,# 对应主库 :端口
master_log_file='mysql3306-bin.000006',# 对应主库 :FILE
master_log_pos=1120; # 对应主库 :Position值
#启动slave同步
START SLAVE;
#停止slave同步
stop SLAVE;
#查看同步状态
SHOW SLAVE STATUS;
I/O线程,SQL线程 都yes 就实现同步了。