主从复制简单概要:

主数据库的DDL和DML操作通过二进制日志传到从数据库上,然后再从数据库上对这些日志进行重新执行,从而使得从数据库和主数据库的数据保持一致。

一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。

或者更加直白的讲就是主数据库做什么,从数据库就跟着做什么。

理论原理:

1.Master数据库只要发生变化,会有记录到Binary log日志里面
2.Slave数据库启动一个I/O thread连接Master数据库,请求Master变化的进制日志
3.Slave I/O获取到的二进制日志,保存到自己的Relaylog日志文件中
4.Slave有一个SQL thread定时检查Realy log是否变化,会保持同步更新变化

mysql主从命令 mysql主从如何实现_主数据

 

 基本环境准备:

我是用的2台CentOS 8.3,

主服务器master为10.0.0.145

从服务器slave为10.0.0.146

两台服务器都已经安装过MySQL,并且启动。

mysql主从命令 mysql主从如何实现_mysql主从命令_02

 

mysql主从命令 mysql主从如何实现_mysql主从命令_03

具体步骤:

1、配置主服务器 master节点上配置, 10.0.0.145 ,修改配置文件/etc/my.cnf

启用binlog ,master节点一般设置为1,每个节点的序号是唯一的

mysql主从命令 mysql主从如何实现_mysql主从命令_04

 然后重启数据库服务, 进入数据库查看主服务器是否配置成功 

create user   'tom'@'10.0.0.%'   identified   by   '123456';                 ##创建用户,可以使用此用户远程登录数据库
 GRANT  REPLICATION  SLAVE  ON *.* TO  'tom'@'10.0.0.%';     ##授权为可以复制master节点数据的slave节点
flush   privileges;  ##刷新权限
show  master  status;  ## 查看master节点的状态

mysql主从命令 mysql主从如何实现_数据库_05

 #若执行结果为Empty set (0.00 sec) ,说明log-bin配置项有问题。查看Position 为383。 主从复制就是基于 position

2、然后从服务器(slave节点)上配置 IP :10.0.0.146

vim     /etc/my.cnf 节点数据库 写入: server-id=2

mysql主从命令 mysql主从如何实现_数据库_06

设置mysql的主从复制:

mysql> change master to master_host='10.0.0.145',    #主库的ip地址
-> master_user='tom',                                                    #主库的用户
-> master_password='123456',                                     #主库的密码
-> master_log_file='mysql-bin.000001',                         #主库的日志文件
    -> master_log_pos=2043;                                             #主库的状态码
start slave; 开启本节点的slave
show slave status\G;查看slave节点的状态

mysql主从命令 mysql主从如何实现_主数据_07

 

mysql主从命令 mysql主从如何实现_服务器_08

 3、最后就可以测试验证效果,在主数据库上操作,从库也可以正常查询到,数据库一主一从配置成功。

mysql主从命令 mysql主从如何实现_主数据_09

 

mysql主从命令 mysql主从如何实现_服务器_10