Mysql 主从复制配置

一、mysql主从复制的基本原理

我们实现的是 mysql 的异步复制
异步复制:即一条语句开始,主服务器不会等待从服务器执行完,而是主服务器一执行完就开始下一条语句,这是对主服务器并发型的考虑

slave 端会开启两个 thread,Slave I/O thread 和 Slave SQL thread,Slave I/O thread 负责从 master 的二进制日志中读取事件并将这些时间信息存放发到 relay-log 中,Slave SQL thread 负责从 relay-log 日志读取事件,并重放其中的事件而更新 slave 的数据,使其与 master 中的数据一致

主服务器上必须开启二进制日志,而从服务器上只需开启中继日志

二、服务器详情

机器IP
主机192.168.1.1
从机192.168.1.2

三、主从配置

1. 主机配置

修改 my.cnf 配置文件

vim /etc/my.cnf

## 开启二进制日志并指定 server-id
log-bin=mysql-bin
binlog_format=mixed
server-id=1

重启 mysql

service mysql restart

创建具有复制权限的用户 ,此处 Mysql 5.7 和 Mysql 8.0 有些区别

========================================= Mysql 5.7 ============================================
## 使用 root 账户,其他账户会有权限不足的情况
mysql -uroot -p

## 这句话意思是,主机允许 slave 用户,通过密码 123456,在 192.168.1.2 这台服务器上访问当前这台 master
mysql> grant replication slave on *.* to slave@192.168.1.2 identified by '123456';

## 刷新
flush privileges;
===============================================================================================

========================================= Mysql 8.0 ============================================
## 使用 root 账户,其他账户会有权限不足的情况
mysql -uroot -p

## mysql8.0 授权用户需要先创建,创建和授权同一条语句的话会报错
mysql> create user 'slave'@'192.168.1.2' identified by '123456';

## 再授权
mysql> grant replication slave on *.* to 'slave'@'192.168.1.2' with grant option;

## 刷新
flush privileges;
===============================================================================================

查看 master 信息

mysql> show master status;

在这里插入图片描述

2. 从机配置

修改 my.cnf 配置文件

vim /etc/my.cnf

## 开启中继日志并指定 server-id 和 只读
# log-bin=mysql-bin
# binlog_format = mixed
relay-log=mysql-relay-bin
server-id=2
read-only=on

重启 mysql

service mysql restart

让从机成为 Slave

mysql -uroot -p

mysql> stop slave;

## 设置从机监听主机:master_log_file 和 master_log_pos 与主机 master 信息一致
mysql> change master to master_host='192.168.1.1',master_user='slave',master_password='123456',master_log_file='mysql-bin.000008', master_log_pos=106;

mysql> start slave;

查看 Slave 状态

mysql> show slave status\G;

## 等待主机发送事件
Slave_IO_State : Waiting for master to send event
## 若它为 No,检查下主机防火墙是否已关闭
Slave_IO_Running: Yes
## 这俩项都是 yes 则配置成功
Slave_SQL_Running: Yes

3. 测试

在主机增删改操作,从机也会执行同样的操作

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值