IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mysql主从复制-Master_Slave一主一从 -> 正文阅读

[大数据]Mysql主从复制-Master_Slave一主一从

Mysql主从复制,Master_Slave一主一从

前言:

? 需要掌握docker的知识,本文章是在云服务器中,创建两个mysql容器(容器间相互隔离的),达到主mysql与从mysql间的数据同步。

一、创建两个mysql容器
  1. 第一个mysql(主),端口3308,容器名称mysql_master,账户密码 root-123456,mysql版本5.5。
docker run -p 3308:3306 --name mysql_master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.5
  1. 第一个mysql(从),端口3309,容器名称 mysql_slave,账户密码 root-123456,mysql版本5.5。
docker run -p 3309:3306 --name mysql_slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.5
二、配置Master节点
  1. 进入Master容器内部。

    docker exec -it mysql_master /bin/bash
    
  2. 进入目录/etc/mysql目录下,找到my.cnf文件,不同版本mysql配置文件路径不同。
    在这里插入图片描述

  3. 使用vim编辑器,编辑my.cnf;会出现bash: vim: command not found,分别执行下面语句,安装vim就可以(比较慢,耐心等待)。

    apt-get update
    
    apt-get install vim
    
  4. 安装完成,编辑my.cnf

    [mysqld]
    ##server-id要唯一
    server-id=100  
    ## 开启二进制日志功能,可以随便取(关键)
    log-bin=master-bin
    binlog-format=ROW     // 二级制日志格式,有三种 row,statement,mixed
    binlog-do-db=数据库名  //同步的数据库名称,如果不配置,表示同步所有的库
    
  5. 配置完成,重启mysql(失败也没有关系)。

    service mysql restart
    
  6. 再重启Master节点mysql容器。

    docker restart mysql_master
    
  7. 再次进入mysql容器

    docker exec -it mysql_master /bin/bash
    
  8. 登录到mysql客户端。

    mysql -uroot -p123456
    
  9. 在Master数据库创建数据同步用户,授予用户 Slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

    mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
    Query OK, 0 rows affected (0.00 sec)
    
  10. Master节点配置完毕


三、配置Slave节点
  1. 进入mysql_slave容器,一样修改my.cnf文件

    [mysqld]
    ## 设置server_id,注意要唯一
    server-id=101  
    ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
    log-bin=mysql-slave-bin   
    ## relay_log配置中继日志
    relay_log=mysql-relay-bin  
    read_only=1  ## 设置为只读,该项如果不设置,表示slave可读可写
    
  2. 重启mysql,重启mysql_slave容器。

四、开启Master-Slave主从复制
  1. 进入Master节点mysql客户端,输入show master status查看Master状态。

? 记录File列和Position列的值,可能会变化,后面如果操作报错,再过来看看它俩的值是否变化。
在这里插入图片描述

  1. 进入Slave节点mysql客户端,配置下面语句。

    change master to master_host='172.18.0.3', master_user='slave', master_password='123456', master_port=3308, master_log_file='master-bin.000001', master_log_pos=617, master_connect_retry=30;
    

    master_host:master节点 ip

    master_user:master节点 账号

    master_password:master节点 密码

    master_port:master节点 端口

    master_log_file:File列的值

    master_log_pos:Position列的值

  2. Slave节点mysql客户端,开启slave。

    start slave;
    
  3. Slave节点mysql客户端,查看主从复制同步的状态。

    show slave status \G;
    

在这里插入图片描述

  1. Slave_IO_Running为yes,Slave_SQL_Running为yes,则成功没有问题了,否则的话,错误信息会在Last_IO_Error显示。

    #可能错误的原因
    1、网络不通:检查ip,端口
    2、密码不对:检查是否创建用于同步的用户和用户密码是否正确
    3、pos不对:检查MasterPosition
    
  2. 测试、master节点数据库创建库表,自动同步到slave节点数据库。


如何停止从服务复制功能

stop slave;

如何重新配置主从

stop slave; reset master;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:30:44  更:2022-05-11 16:33:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:16:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码