前言
- 复制(AB)原理
- master将数据变更记录存放到指定binary log(二进制日志),就是配置文件log-bin指定的文件,这些记录叫做binary log events(二进制日志事件)。
- slave通过I/O线程读取master中的binary log events并写入到它的relay log(中继日志)。
- slave 把中继日志中的事件一条一条的在再执行一次,从而完成数据存入。
准备
- 两台Centos7服务器、安装相同版本的Mysql8.0.16(安装参考)
- 创建的库与表也要保持一致
创建库脚本
# 创建库
CREATE DATABASE `captain` CHARACTER SET utf8 COLLATE utf8_general_ci;
# 创建表
CREATE TABLE `visitor` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(50) DEFAULT NULL COMMENT '访客',
`phone` varchar(11) DEFAULT NULL COMMENT '手机号码',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='来访用户表';
配置master的my.cnf
命令:# vim /etc/my.cnf
- 在(master)my.cnf文件中加入如下配置内容
log-bin=mysql-bin
server-id=1
master
*创建用于复制操作的用户
在(master)主节点创建一个用户capmas,用于(slaver)从节点链接主节点时使用。
创建用户&授权命令: # use mysql
# CREATE USER 'capmas'@'45.32.20.84' IDENTIFIED WITH mysql_native_password BY 'Captain@1888';
# GRANT REPLICATION SLAVE ON . TO 'capmas'@'45.32.20.84';
# flush privileges;
- 获取(master)主节点当前binary log文件名和位置(position)
binary log - position命令:SHOW MASTER STATUS;
配置slave的my.cnf
命令:# vim /etc/my.cnf
- 在配置中加入如下内容
server-id=2
- 在(slave)从节点上设置主节点参数
命令:# CHANGE MASTER TO
MASTER_HOST='207.14.99.72',
MASTER_USER='capmas',
MASTER_PASSWORD='Captai33&1888',
MASTER_LOG_FILE='binlog.000001',
MASTER_LOG_POS=5393;
- 查看(slave)从节点同步状态(以下命令带上\G)
命令: # show slave status\G;
- 设置从机的server_id为2
因为在MySQL主从结构中,从机上的server_id和主机上的server_id不能相同 - 查看从库的server_id
命令: # show variables like 'server_id';
- 查看从库的server_id
- 设置从机的server_id为2
命令: # set global server_id=2;
- (在slave)开启主从同步
命令:# start slave;
- 查看状态
命令: # show slave status\G;
验证
- 在(master)主机上执行以下语句
INSERT INTO `visitor` VALUES ('1', '林小小', '18878476666', '2019-12-21 21:44:44', '2019-12-21 21:44:44');
master
- 在(slaver)上查看是否同步
slave
声明:原创,欢迎转载~! 记得点个关注我哦~!
网友评论