mysql主从及遇到的问题解决

2025-01-06 03:50

本文主要是介绍mysql主从及遇到的问题解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《mysql主从及遇到的问题解决》本文详细介绍了如何使用Docker配置MySQL主从复制,首先创建了两个文件夹并分别配置了`my.cnf`文件,通过执行脚本启动容器并配置好主从关系,文中还提到了一些...

mysql主从及遇到问题解决

1.基于mysql 8.0的docker

2.配置mysql的配置

  • 创建master文件夹,并创建my.cnf文件:
[mysqld]
## 设置server_id,注意要在同一局域网内唯一
server-id=1
## 开启binlog
log-bin=mysql-bin
## binlog格式(mixed、statement、row,默认格式是statement)
binlog_format=mixed
  • 创建slaver文件夹,并创建my.cnf文件
[mysqld]
## 设置server_id,注意要唯一
server-id=2
## 可以开启binlog,以备Slave作为其它Slave的Master时使用
#log-bin=mysql-bin
## relay_log配置中继日志
relay_log=relay-bin
## 如果需要同步函数或者存储过程
log_bin_trust_function_creators=true
## binlog格式(mixed、statement、row,默认格式是statewww.chinasem.cnment)
binlog_format=mixed
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062   ## 跳过主从复制中遇到的错误,可配可不配
read-only=1 #1只读,0读写
  • 同级可以创建sh文件
#!/bin/sh
# $0获取执行命令的文件;realpath获取真实的路径;dirname获取该文件的绝对路径
script_dir=$(dirname "$(realpath "$0")")
docker run -itd --name doyen$1 -p ${2}:3306 -e MYSQL_ROOT_PASSWORD=123456 \
-v ${script_dir}/${1}/my.cnf:/etc/my.cnf \
-v ${script_dir}/${1}/data:/var/lib/mysql \
-v ${script_dir}/${1}/log:/var/log --restart always mysql:8.0
  • 分别执行sh:
#启用master容器,master文件名,3306端口
sh mysql.sh master 3306

#启用slaver容器,slaver文件名,3307端口
sh mysql.sh master 3307
  • 登录master容器
#进入容器,如果失败使用 sh
docker exec -it master bash
#登录mysql
mysql -uroot -p123456
use mysql;
#可以移除root的所有地区登录,只保留能本机登录
drop user 'root'@'%';
#创建slaver用户,使用明文密码连接
create user 'slaver'@'%' identified with mysql_native_password by '123456';
grant replication SLAVE ON *.* TO 'slaver'@'%';
flush privileges;

#查看binlog的数据,用于slaver的偏移量迁移
show master status;
  • 登录slaverhttp://www.chinasem.cn服容器
#master_log_file和master_log_pos 为master中show展示的数据
change master to master_host='master-ip',
                     master_port=3306,
					 master_user='slaver',
					 master_password='123456www.chinasem.cn',
					 master_log_file='mysql-bin.000002',
					 master_log_pos=157;
start SLAVE;
show slave status\G;

主从mysql完成,Slave_IO_RunningSlave_SQL_Running 都为 Yes。

遇到的问题说明

一些博客提示mysql的配置位置不对,导致路径映射不对,使用默认的配置,引发serverId都是1,会主从冲突,位置为 /etc/my.cnf,修改配置后需要docker restart。

查询文件:

docker exec -it container find / -name "my.cnf"

如果slave的change连接master写错了,可以执行stop slave;reset slave;再重新绑定。

这是重头开始复制,如果master已经运行了一段时间

#master容器:全量dump,--source-data=2表示生成的备份文件中包含 CHANGE MASTER TO 语句
#--www.chinasem.cnsingle-transaction: 保证备份在一致性点上完成
#--flush-logs: 在备份开始时刷新 MySQL 的二进制日志
#--hex-blob: 处理二进制字段时使用十六进制表示

mysqldump -u root -p --all-databases js--source-data=2 --single-transaction --flush-logs --hex-blob > /var/lib/mysql/full-backup.sql

#将master的该文件mv到slaver的映射路径中,进入slaver容器

mysql -u root -p < full-backup.sql

#执行完后再配置binlog同步点,从sql文件中找出偏移量

CHANGE MASTER TO 。。。

#-------------------------------二。数据太多,只dump表结构-------
mysqldump -u root -p123456 --no-data --databases your_database > schema-only.sql
mysql -u root -p123456 < schema-only.sql

start slave;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持China编程(www.chinasem.cn)。

这篇关于mysql主从及遇到的问题解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1152938

相关文章

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi