运河如何实现mysql的数据同步

  介绍

这篇文章将为大家详细讲解有关运河如何实现mysql的数据同步,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

运河是什么?

运河[k ? & # 39; n ?l],译意为水道/管道/沟渠,主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费

基于日志增量订阅和消费的业务包括

    <李>数据库镜像李 <李>数据库实时备份 <李>索引构建和实时维护(拆分异构索引,倒排索引等) <李>业务缓存刷新 <李>带业务逻辑的增量数据处理李

当前的运河支持源端MySQL版本包括5.1。5.5 x。5.6 x。5.7 x。8.0 x。x

工作原理

运河如何实现mysql的数据同步

基于上面的讲解,我们在实现运河之前,先简单做一个主从复制。一主一从

    <李>首先下载mysql镜像,并启动李
码头工人把mysql:最新   码头工人运行itd -名称mysql-1 - p 23306:3306 - e MYSQL_ROOT_PASSWORD=根mysql   码头工人运行itd -名称mysql-2 - p 23307:3306 - e MYSQL_ROOT_PASSWORD=根mysql复制代码
    <李>相关命令再解释一下:

名称xxx,: xxx为容器名   111年p 111:222,其中是宿主机端口,222是容器端口   MYSQL_ROOT_PASSWORD=根,设置根账户密码为根运河如何实现mysql的数据同步

    <李>进入容器测试一下,一切正常李

运河如何实现mysql的数据同步

    <李>设置mysql-1为主,mysql-2为从库李 <>李修改一下mysql的配置,安装vim编辑器
apt-get更新   apt-get安装vim复制代码
    <李>在主库创建一个mysql账户给从库使用
创建用户& # 39;奴隶# 39;@ # 39;% & # 39;被& # 39;123456 & # 39;;   格兰特复制奴隶,复制客户alt="运河如何实现mysql的数据同步">

    <李>修改一下从服务器
(mysqld)   pid文件=/var/run/mysqld/mysqld.pid   套接字=/var/run/mysqld/mysqld.sock   datadir=/var/lib/mysql   secure-file-priv=零   server_id=100   log-bin=mysql-slave-bin   relay_log=edu-mysql-relay-bin复制代码
    <李>退出重启从服务器码头工人李 <李>进入从服务器执行
mysql>修改主master_host=& # 39; 172.17.0.4& # 39;, master_user=& # 39;奴隶# 39;,master_password=& # 39; 123456 & # 39; master_port=3306, master_log_file=& # 39; edu-mysql-bin.000001& # 39;, master_log_pos=877, master_connect_retry=30;复制代码

相关命令解释   master_port:主人的端口号,指的是容器的端口号   master_user:用于数据同步的用户   master_password:用于同步的用户的密码   master_log_file:指定奴隶从哪个日志文件开始复制数据,即上文中提到的文件字段的值   master_log_pos:从哪个位置开始读,即上文中提到的位置字段的值   master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒   在奴隶中的mysql终端执行显示奴隶状态\ \ \ \ G;用于查看主从同步状态。

    <李>出现一下信息说明配置成功李

运河如何实现mysql的数据同步

    <李>接下来再主库写数据,从库同步成功李

运河如何实现mysql的数据同步

    <李>简单的主从同步完成了,但是我们要想,怎么实现的主从同步,对吧,李

其实就是通过同步二进制日志文件,从服务器会起一个io进程,读取二进制文件同步到从服务器运河如何实现mysql的数据同步

    <李>简单看一下二进制文件的内容,李

运河如何实现mysql的数据同步

运河如何实现mysql的数据同步

为什么再将运河之前要先说主从复制呢,其实运河就是把自己伪装成了从服务器,从而读取日志,拿到数据;

使用码头工人部署运河

运河如何实现mysql的数据同步