MySQL主从复制简单介绍

一.主从复制

1.1概念和原理

简单来说就是在主服务器上执行的语句,从服务器执行同样的语句,在主服务器上的操作在从服务器产生了同样的结果。

Master(主数据库)将用户对数据库更新的操作以二进制格式保存到BinaryLog日志文件中。

Slave(从数据库)上面的I0进程连接上Master, 并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容。

 Master接收到来自Slave的I0进程的请求后,通过负责复制的I0进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的I0进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置。

Slave的I0进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候方便请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容。

Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay- log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。

1.2案例:一主一从

 1.准备工作

 同步时间

# 安装 ntpdate
yum -y install ntpdate
# 同步时间
ntpdate pool.ntp.org

这里如果是克隆的虚拟机,则需要修改mysql 的 uuid,mysql5.6以上版本使用唯一uuid表示符,数据迁移是使用的物理备份,uuid会重复,修改uuid不一致即可。

首先使用查找命令确定文件位置,这里我们的位置如图所示,修改过后,重启 mysql 服务。

 2.master主机

# 编辑 mysql 配置文件
vim /etc/my.cnf

# 写入以下内容
server-id=1
read-only=0
log-bin=mysql-bin
#binlog-do-db=my_test

# 重启服务
systemctl restart mysqld.service

 主库配置

# 登录 mysql
mysql -uroot -p

# 创建用户,并授予主从复制权限
mysql> create user 'my'@'%' identified with mysql_native_password by 'Bdqn_8888';
mysql> grant replication slave on *.* to 'my'@'%';

# 查看主机上的binlog信息,如下图
mysql> show master status;

3.slave从机 

# 编辑 mysql 配置文件
vim /etc/my.cnf

# 写入以下内容
server-id=2
read-only=1
log-bin=mysql-bin

# 重启服务
systemctl restart mysqld.service

这里要注意版本不同命令也有差别

# 登录 mysql
mysql -uroot -p

# 在从机上设置主机相关信息
mysql> CHANGE MASTER TO
master_host='192.168.9.3',
master_user='my',
master_password='Bdqn_8888',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=154;

# 开启从机
mysql> START SLAVE;

# 查看状态,如下图
mysql> SHOW SLAVE STATUS\G;

 看见两个yes说明没有问题,可以进行下一步测试。

4.测试

# 登录mysql主机
mysql -uroot -p

# 建库建表添加数据
mysql> create database testdb;

mysql> use testdb;

mysql> create table test(
  id int(10) primary key not null auto_increment,
  name varchar(50) not null,
  gender char(1) not null
)engine=innodb default charset=utf8mb4;

mysql> insert into test values (null,'tom','m'),(null,'jack','m'),(null,'marry','f');

完成后在从机数据库中查询数据,验证是否同步。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值