主从复制原理
MySQL数据库的主从复制是基于MySQL二进制日志,通过bin log日志复制需要同步的从服务器上。主要包括三个线程(2个I/O线程,1个SQL线程)。它和MySQL的读写分离有着必然的联系,首先要部署主从复制,完成之后才能进行数据的读写分离。一台服务器档当主服务器,接受来自来自用户的内容更新,而一个或多个其他的服务器来当从服务器,接受来自主服务器上binlog文件的日志内容,解析出SQL,重新更新到从服务器。使得主从服务器的数据达到一致。
简单讲就是A与B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,实现数据实时同步
主从复制步骤
1.当Master节点进行insert、update、delete操作时,会按顺序写入到binlog中。
2.salve从库连接master主库。
3.当Master节点的binlog发生变化时,binlog dump 线程会通知所有的salve节点,并将相应的binlog内容推送给slave节点。
4.I/O线程接收到 binlog 内容后,将内容写入到本地的 relay-log。
5.SQL线程读取I/O线程写入的relay-log,并且根据 relay-log 的内容对从数据库做对应的操作
主库配置
1.server_id设置并开启binlog参数
[root@localhost ~]# vim /etc/my.cnf
server_id=1
log_bin=mysql_bin
2.重启mysql服务
[root@localhost ~]# systemctl restart mysqld
3.登录MySQL 授权用户
mysql> grant replication slave on *.* to 'rep1'@'192.168.244.%' ide
Query OK, 0 rows affected, 1 warning (0.00 sec)
查看信息
mysql> mysql> show master status;
从库配置
1.设置server_id值,并重启mysql服务
[root@localhost ~]# vim /etc/my.cnf
server_id=2
[root@localhost ~]# systemctl restart mysqld
2.设置主从库同步
mysql> change master to
MASTER_HOST='192.168.244.146',
MASTER_PORT=3306,
MASTER_USER='rep1',
MASTER_PASSWORD='RedHat@123',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=154;
3.启动从库同步开关
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
检查状态
mysql> show slave status;