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

相关文章

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操