当前位置:   article > 正文

Redis学习——高级篇④

Redis学习——高级篇④

在这里插入图片描述

在这里插入图片描述

= = = = = = Redis7高级之Redis与Mysql数据双写一致性工程案例(四)= = = = = =

4.1 MySQL主从复制原理

在这里插入图片描述

MySQL的主从复制
在这里插入图片描述

  1. Master主服务器上的数据发生改变时,将其改变写入二进制事件日志文件中
  2. Slave 从服务器会在一定时间间隔内对master 主服务器上的二进制日志进行探测,探测其是否发生过改变
    • 如果探测到 master 主服务器的二进制时间发生了改变,则开始一个 I/O Thread 请求 master 二进制事件日志
  3. 同时 master 主服务器为每个 I/O Thread 启动一个 dump Thread,用于向其发送二进制事件日志
  4. slave 从服务器将接收到的二进制事件日志保存至自己本地的中继日志文件中
  5. slave 从服务器将启动 SQL Thread 从中继日志中读取二进制日志,在本地重放,使得其数据和主服务器保持一致
  6. 最后 I/O ThreadSQL Thread 将进入睡眠状态,等待下一次被唤醒

4.2 canal 工作原理

在这里插入图片描述

  • canal 模拟 Mysql slave 的交互协议,将自己作为 Mysql slave ,向 Mysql master 发送 dump 协议
  • MySQL master 收到 dump 请求,开始推送 binary log 给 slave(即cancal)
  • canal 解析 binary log 对象(原始为 byte 流)

4.3 mySQL->canal->redis 双写一致性

1.环境

linux的mysql、canal、redis,其中canal和redis在一台机器,mysql单独一个机器
在这里插入图片描述

2.配置Mysql

别忘了 开启start net mysql80

在这里插入图片描述

  • 查看mysql版本

在这里插入图片描述

  • 当前的主机二进制日志——show master status;

在这里插入图片描述

  • 查看SHOW VARIABLES LIKE 'log_bin'; 如果是on跳过下一步!
    在这里插入图片描述
    在这里插入图片描述

  • 开启MySQLbinlog写入功能

在这里插入图片描述
做好备份
在这里插入图片描述
在这里插入图片描述

my.cnf

[client]
default_character_set=utf8

[mysqld]
log-bin=mysql-bin #开启 binlog
binlog-format=ROW #选择 ROW 模式
server_id=1    #配置MySQL replaction需要定义,不要和canal的 slaveId重复
collation_server = utf8_general_ci
character_set_server = utf8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

修改
在这里插入图片描述
在这里插入图片描述

  • 重启mysql

  • 再次查看SHOW VARIABLES LIKE 'log _bin';
    在这里插入图片描述

  • 授权canal连接MySQL账号

    • mysql默认的用户在mysq|库的user表里

在这里插入图片描述
在这里插入图片描述

  • 默认没有canal账户,此处新建+授权
DROP USER IF EXISTS 'canal'@'%';
CREATE USER 'canal'@'%' IDENTIFIED BY 'canal';  
GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' IDENTIFIED BY 'canal';  
FLUSH PRIVILEGES;
 
SELECT * FROM mysql.user;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

上面是教学给的 但是我报错 我这样写的 才过的 看大家自己测试的时候,也希望大家要到原因留言告诉俺一声

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/50076
推荐阅读
相关标签