Mysql5.7主从复制搭建

注意不适用Mysql8

Docker搭建Mysql主从复制

docker run -p 3307:3306 --name mysql-master \
-v /usr/local/develop/mysql-master/log:/var/log/mysql \
-v /usr/local/develop/mysql-master/data:/var/lib/mysql \
-v /usr/local/develop/mysql-master/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

如果没有mysql5.7会自动下载

进入配置文件目录

cd /usr/local/develop/mysql-master/conf

创建并编辑配置文件

vim my.cnf

[mysqld]

# 设置server_id,同一局域网中需要唯一,对复制架构至关重要
server_id=101

# 指定不需要同步到从库的数据库名称,一般系统数据库mysql不需要同步
binlog-ignore-db=mysql

# 开启二进制日志功能,是MySQL复制的基础
log-bin=mall-mysql-bin

# 设置二进制日志使用的内存大小,用于缓存事务,提高性能
binlog_cache_size=1M

# 设置使用的二进制日志格式,推荐使用"row",因为它是最安全的,能准确复制每一行的变更
# mixed模式下,MySQL会根据操作类型自动选择statement模式还是row模式
binlog_format=mixed

# 二进制日志过期清理时间,设置为7天。0表示不自动清理,不推荐这样做,因为会积累大量日志
expire_logs_days=7

# 跳过主从复制中遇到的指定类型的错误,避免从库复制中断
# 注意:过度使用该设置可能会导致数据不一致,应谨慎使用
slave_skip_errors=1062
 

修改完配置  重启mysql docker容器实例

docker restart mysql-master

进入容器

docker exec -it mysql-master /bin/bash

mysql -uroot -p123456

创建数据同步用户 并赋予权限

CREATE USER 'replica'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replica'@'%';

刷新

FLUSH PRIVILEGES;(不刷也可以)
 

在宿主机上搭建从服务器

docker run -p 3308:3306 --name mysql-slave \
-v /usr/local/develop/mysql-slave/log:/var/log/mysql \
-v /usr/local/develop/mysql-slave/data:/var/lib/mysql \
-v /usr/local/develop/mysql-slave/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

进入

cd /usr/local/develop/mysql-slave/conf

创建并编辑从数据库配置

vim my.cnf

[mysqld]

# 设置server_id,同一局域网中需要唯一,对复制架构至关重要
server_id=102

# 指定不需要同步到从库的数据库名称,一般系统数据库mysql不需要同步
binlog-ignore-db=mysql

# 开启二进制日志功能,以备Slave作为其他数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin

# 设置二进制日志使用的内存大小,用于缓存事务,提高性能
binlog_cache_size=1M

# 设置使用的二进制日志格式,推荐使用"row",因为它是最安全的,能准确复制每一行的变更
# mixed模式下,MySQL会根据操作类型自动选择statement模式还是row模式
binlog_format=mixed

# 二进制日志过期清理时间,设置为7天。0表示不自动清理,不推荐这样做,因为会积累大量日志
expire_logs_days=7

# 跳过主从复制中遇到的指定类型的错误,避免从库复制中断
# 注意:过度使用该设置可能会导致数据不一致,应谨慎使用
slave_skip_errors=1062

# 配置中继日志
relay_log=mall-mysql-relay-bin

# 表示slave将复制事件写进自己的二进制日志
log_slave_updates=1

# 将slave设置为只读(具有SUPER权限的用户除外)
read_only=1
 

修改完配置  重启mysql docker容器实例

docker restart mysql-slave

在主数据库中查看主从同步状态

进入主库

docker exec -it mysql-master /bin/bash

mysql -uroot -p123456

show master status;

返回宿主机

在从数据库配置主从复制  查看主从状态

docker exec -it mysql-slave /bin/bash

mysql -uroot -p

123456

在从数据库配置主从复制

change master to master_host="宿主机IP",master_user='replica',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000001',master_log_pos=714,master_connect_retry=30 因为我这里是同一台ECS服务器  所以用下面这个

CHANGE MASTER TO 
  MASTER_HOST = '172.17.0.2',
  MASTER_USER = 'replica',
  MASTER_PASSWORD = '123456',
  MASTER_PORT = 3306,
  MASTER_LOG_FILE = 'mall-mysql-bin.000001',
  MASTER_LOG_POS = 621,
  MASTER_CONNECT_RETRY = 30;
 


在从数据库查看主从同步状态

show slave status \G;   \G可加可不加  加了看的清楚点

在从数据库开启主从同步

start slave;

查看从数据库状态发现是否同步

show slave status \G;

 如果不成功 用这个命令停掉  检查配置    STOP SLAVE;

测试  退出从库

进入主库

docker exec -it mysql-master /bin/bash

mysql -uroot -p123456

查看从库

docker exec -it mysql-slave /bin/bash

mysql -uroot -p123456

总结:其实没必要配置外部端口  如果是单台服务器的话

注意mysql5.7中文乱码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/491315.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第四一天 | 背包问题

目录 背包问题01背包二维dp数组01背包一维 dp 数组(滚动数组)分割等和子集 LeetCode 背包问题 01背包 有n件物品和一个最多能背重量为 w 的背包,第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次&#x…

【C++】多态概念(入门)

介绍: 多态的概念:通俗来说,多态就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。比如扫红包操作,同样是扫码动作,不同的用户扫 得到的不一样的红包&#xff0…

【卷积神经网络中用1*1 卷积有什么作用或者好处呢?】

🚀 作者 :“码上有前” 🚀 文章简介 :深度学习 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 1*1 卷积有什么作用或者好处呢 作用降维和增加非线性特征组合和交互网络的宽度和深度调整全连接替代增强…

Rust升级慢,使用国内镜像进行加速

背景 rustup 是 Rust 官方的跨平台 Rust 安装工具,国内用户使用rustup update的时候,网速非常慢,可以使用国内的阿里云镜像源来进行加速 0x01 配置方法 1. Linux与Mac OS用户配置环境变量 修改~/.bash_profile文件添加如下内容&#xff1…

Vue26 内置标签 v-text v-html

实例 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>v-text指令</title><!-- 引入Vue --><script type"text/javascript" src"../js/vue.js"></script></head><…

苍穹外卖项目微信支付(没有商户号)的解决方法,超详细!!!

今天在写苍穹外卖项目时&#xff0c;写到微信支付时发现个人无法获取商户号&#xff0c;那么今天我就在这里分享一个方法&#xff0c;可以绕过微信支付实现订单支付的功能。本方法仅仅是绕过微信支付&#xff0c;没有进行真正的微信支付&#xff0c;如果想要体验真正的微信支付…

【并发】CAS原子操作

1. 定义 CAS是Compare And Swap的缩写&#xff0c;直译就是比较并交换。CAS是现代CPU广泛支持的一种对内存中的共享数据进行操作的一种特殊指令&#xff0c;这个指令会对内存中的共享数据做原子的读写操作。其作用是让CPU比较内存中某个值是否和预期的值相同&#xff0c;如果相…

“点击查看显示全文”遇到的超链接默认访问的问题

今天在做一个例子&#xff0c;就是很常见的点击展开全文。 我觉得这是一个很简单的效果&#xff0c;也就几行代码的事&#xff0c;结果点击了以后立刻隐藏不见&#xff0c;控制台代码也不报错&#xff0c;耽误了我很长时间&#xff0c;最后才发现问题出在超链接身上。 “展开全…

Escalate_Linux-环境变量劫持提权(5)

环境变量劫持提权 在Shll输入命令时&#xff0c;Shel会按PAH环境变量中的路径依次搜索命令&#xff0c;若是存在同名的命令&#xff0c;则执行最先找到的&#xff0c;若是PATH中加入了当前目录&#xff0c;也就是“”这个符号&#xff0c;则可能会被黑客利用&#xff0c;例如在…

flink源码分析 - 获取调用位置信息

flink版本: flink-1.11.2 调用位置: org.apache.flink.streaming.api.datastream.DataStream#flatMap(org.apache.flink.api.common.functions.FlatMapFunction<T,R>) 代码核心位置: org.apache.flink.api.java.Utils#getCallLocationName() flink算子flatmap中调用了一…

[力扣 Hot100]Day35 LRU 缓存

题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否…

python_pyecharts绘制漏斗图

python-pyecharts绘制漏斗图 from pyecharts.charts import Funnel from pyecharts import options as opts# 数据 data [("访问", 100), ("咨询", 80), ("订单", 60), ("点击", 40), ("展现", 20)]# 创建漏斗图 funnel …