Golang仿云盘项目-3.1MySQL主从数据同步(一)

话说,这个课的视频真是缺斤少两。。。

服务架构变迁

Golang仿云盘项目-3.1MySQL主从数据同步(一)

Golang仿云盘项目-3.1MySQL主从数据同步(一)

本文来自博客园,作者:Jayvee,转载请注明原文链接:https://www.cnblogs.com/cenjw/p/16464465.html

环境

  1. Docker安装
  2. 从dockerhub上拉取Mysql镜像https://hub.docker.com/_/mysql

配置主从节点

1.创建文件夹及文件

mkdir -p ~/mysql/master/conf
cd ~/mysql/master/conf
vim my.cnf
输入:

[mysqld]
#主数据库端ID号(为1时表示为master,其中master_id必须为1到232-1之间的一个正整数值,主从server-id不能一样)
server_id = 1
#开启二进制日志
log-bin = mysql-bin

mkdir -p ~/mysql/slave/conf
vim my.cnf

[mysqld]
server-id=2
relay-log=relaylogs

2. 基于日志binlog方式

Golang仿云盘项目-3.1MySQL主从数据同步(一)

2.1 主从mysql挂载启动

主节点挂载启动
docker run --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /home/cenjw/mysql/master/conf/my.cnf:/etc/mysql/my.cnf -v /home/cenjw/mysql/master/data:/var/lib/mysql -d mysql
从节点挂载启动
docker run --name mysql-slave -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /home/cenjw/mysql/slave/conf/my.cnf:/etc/mysql/my.cnf -v /home/cenjw/mysql/slave/data:/var/lib/mysql -d mysql

Golang仿云盘项目-3.1MySQL主从数据同步(一)

解析:

  • --name 容器名 给容器取名字为mysql-master
  • -p 端口1:端口2 端口1是对外暴露的端口(即宿主机的端口),端口2 是mysql端口
  • -e MYSQL_ROOT_PASSWORD=密码 即root用户的密码
  • -d mysql 代表后台运行我们的mysql
  • -v /home/docker/mysql/master/conf/my.cnf:/etc/mysql/my.cnf 代表将宿主机 /home/docker/mysql/master/conf/my.cnf 配置文件挂载到 mysql容器的 /etc/mysql/my.cnf
  • -v /home/docker/mysql/master/data:/var/lib/mysql代表将宿主机 /home/docker/mysql/master/data 配置文件挂载到 mysql容器的 /var/lib/mysql
  • 指定了容器中指定目录挂载到宿主机上的某个目录,这样做的目的在于 防止容器中配置的数据丢失,因为docker容器在重启之后是不会保留前一次在其内部运行的相关数据的;

本文来自博客园,作者:Jayvee,转载请注明原文链接:https://www.cnblogs.com/cenjw/p/16464465.html

2.2 主从mysql配置
打开两个终端窗口,启动待配置的主从mysql

Golang仿云盘项目-3.1MySQL主从数据同步(一)

2.2.1. 找到将作为主节点的binlog信息

show master status;  # 主mysql里查询

Golang仿云盘项目-3.1MySQL主从数据同步(一)

2.2.2 在主mysql中创建账户
然后我们需要为从服务器创建一个可以用来master服务器的账户,也就是创建一个专门用来复制binlog的账号,并且赋予该账号复制权限,其命令如下:

创建reder用户
CREATE USER 'reader'@'%' IDENTIFIED WITH mysql_native_password BY 'reader';
赋予权限
GRANT REPLICATION SLAVE ON *.* TO 'reader'@'%';
刷新权限
flush privileges;

2.2.3 到从节点,配置master信息

CHANGE MASTER TO MASTER_HOST='172.20.10.9',MASTER_USER='reader',MASTER_PASSWORD='reader',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=0;

MASTER_HOST 通过ifconfig查看你本机地址
MASTER_LOG_POS=0:表示预置从最开始的地方复制binlog

2.2.4 查看是否配置成功

#开启复制
start slave;
#查看复制有无成功
show slave status\G;

Golang仿云盘项目-3.1MySQL主从数据同步(一)
以下两个都是yes,表明已经复制成功

Slave_IO_Running: Yes 连接主库,读取日志文件到本地
Slave_SQL_Running: Yes 从日志文件中读取sql语句执行

本文来自博客园,作者:Jayvee,转载请注明原文链接:https://www.cnblogs.com/cenjw/p/16464465.html

测试是否开启同步

  1. 在主mysql创建test1数据库和test表
create database test1 default character set utf8;
create table tbl_test(user varchar(64) not null, age int(3) not null) default charset utf8;;
  1. 在从mysql查看:
show tables;
show slave status\G;
  1. 在从mysql往测试表插入一条数据
insert into tbl_test(user, age) values('james', 40);

Golang仿云盘项目-3.1MySQL主从数据同步(一)
show master status;

Golang仿云盘项目-3.1MySQL主从数据同步(一)

报错

参考https://www.cnblogs.com/Courage129/p/14169251.html

环境配置参考
[1] https://www.cnblogs.com/zmk-c/p/15306600.html

Original: https://www.cnblogs.com/cenjw/p/16464465.html
Author: micromatrix
Title: Golang仿云盘项目-3.1MySQL主从数据同步(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/712530/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • nginx安装配置步骤

    ​ yum install gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel -y [root@n…

    技术杂谈 2023年7月11日
    075
  • H3C 无线交换机和FIT AP的典型连接

    posted @2019-09-23 20:56 樊伟胜 阅读(1010 ) 评论() 编辑 Original: https://www.cnblogs.com/fanweishe…

    技术杂谈 2023年5月30日
    0107
  • Java开发之JavaWeb速成 —- 第二部分

    JavaWeb速成 前言 以最少时间,快速学完各知识点。知识点围绕概念,作用,使用方法来写,适合有javaweb基础的人复习 旨在快速入手/复习,放实例显得冗余,所以实例代码会以截…

    技术杂谈 2023年7月24日
    071
  • 【Golang】理解Golang中的time.Duration

    在传递时间参数的时候,很多函数的参数类型是time.Duration 官方解释: Duration 将两个瞬间之间的经过时间表示为 int64 纳秒计数。 该表示将最大可表示持续时…

    技术杂谈 2023年6月1日
    091
  • Oracle多租户架构之如何快速创建一个PDB

    Oracle自从12c版本开始引入多租户的架构,整个管理理念也发生了很大的变化。比如之前再小的业务只要选择了Oracle,DBA都会选择新建一套独立的数据库,因为传统的架构只能在s…

    技术杂谈 2023年5月31日
    092
  • 什么是 inode ?

    一般来说,面试不会问 inode 。但是 inode 是一个重要概念,是理解 Unix/Linux 文件系统和硬盘储存的基础。 理解inode,要从文件储存说起。 文件储存在硬盘上…

    技术杂谈 2023年5月31日
    0100
  • 利用kubernetes中的leader选举机制来完成自己的HA应用

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年7月25日
    071
  • SSH免密登录

    SSH免密登录实现三步: 客户端生成公钥和私钥 上传公钥到服务端 SSH免密登录 (1) 客户端生成和公钥和私钥 ssh-keygen 一路回车即可,默认会在~/.ssh/目录下创…

    技术杂谈 2023年7月11日
    067
  • SpringBoot-Test测试

    @RunWith(SpringRunner.class) @SpringBootTest(classes = com.aa.Application.class, webEnviro…

    技术杂谈 2023年6月21日
    093
  • 007 Linux 命令三剑客之-awk

    Linux 命令三剑客,sed、grep、awk。 sed:擅长数据修改。 grep:擅长数据查找定位。 awk:擅长数据切片,数据格式化,功能最复杂。 awk 更适合格式化文本,…

    技术杂谈 2023年7月10日
    069
  • 基于谷歌地图的Dijkstra算法水路路径规划

    最终效果图如下: 还是图、邻接表,可以模拟出几个对象=》节点、边、路径。三个类分别如下: Node 节点: using System; using System.Collectio…

    技术杂谈 2023年5月31日
    091
  • Homebrew

    /bin/zsh -c "$(curl -fsSl https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)…

    技术杂谈 2023年5月30日
    099
  • 冒个泡,刷刷存在感

    代码改变世界 Cnblogs Dashboard Login 2021-05-03 21:17 Clingingboy 阅读(90 ) 评论() 编辑 存冒泡 Original: …

    技术杂谈 2023年5月31日
    0100
  • 深入C++05:运算符重载

    📕运算符重载 1.复数类 运算符重载目的:使对象运算表现得和编译器内置类型一样; 复数类例子 #include using namespace std; class CComple…

    技术杂谈 2023年7月25日
    083
  • python3GUI–天气预报小工具By:PyQt5(附源码)

    @ 一.准备工作 二.预览 1.启动 2.添加城市 三.设计流程 1.UI设计(草图) 2.UI设计(QT设计师) 3.解释 四.源代码 五.总结 之前用tk写过一款python3…

    技术杂谈 2023年6月21日
    0105
  • 图文详解YUV420数据格式

    很多人对YUV数据格式不清楚,以至于在做视频的时候出现了一些不可预知的错误(比如说图像带有点、颜色不对等)。今晚是周末放假,我就抽点时间来给大家介绍一下。 提示: 读下面的文字时,…

    技术杂谈 2023年5月31日
    094
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球