MySQL|一文解决主库已有数据的主从复制
主从复制配置方案和实际的场景有很多,在之前配置了主从库都是全新的配置方案
在这一篇会配置主库存在数据,然后配置主从复制
开始之前,先分享一套MySQL教程,小白入门或者学习巩固都可以看
MySQL基础入门-mysql教程-数据库实战(MySQL基础+MySQL高级+MySQL优化+MySQL34道作业题)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
主从复制所需要的环境
【Docker】简单介绍与安装
【Docker】安装MySQL8.0
【MySQL】使用docker配置主从复制(主库和从库都是全新的情况)
应用的场景
- 我们的项目已经运行了一段时间
- 发现从库已经不够用
- 需要添加的新的从库
- 但是现在的主库已经存在了很多的数据
- 下来咱们来实现一下这个配置方案
开始配置
可以看到以下三张图
- 第一张是mysql-master主库 存在kaka_test_master_slave
- 第二张是mysql_slave从库 存在kaka_test_master_slave
- 第三张是mysql_slave1从库 没有kaka_test_master_slave
给mysql_master主库添加一条数据测试mysql_slave是否已经开启了主从复制
在这里需要注意一下,我是在2020-4-8号配置的,然后把主机关闭了,就出现了主从复制重启失败
原因是主机的MASTER_LOG_FILE这个文件名发生了变化,修改一下,然后重启主从复制即可
我们先在主机插入了一条数据id为6
然后去查看master-slave的数据情况(主从复制已经正常)
开始给mysql-slave1导入mysql-master的数据库
配置有俩种方案
- 第一种是放弃主库之前的数据,配置主从复制
- 第二种是复制主库数据到mysql-slave1这个从库,然后配置主从复制
在实际案例中,一般第一种情况很少使用,配置主从复制就是为了缓解读写读的压力。没有了以前的数据那就没什么意义了.
所以本案例主要讲第二种
由于为了演示方便所以就只准备了一张表
1. 把mysql-master的数据库直接锁住
1 flush tables with read lock;
2.查看主数据库状态,并查看file 和 position的值
3.备份数据库
1 docker exec da30bacb60fd /usr/bin/mysqldump -u root --password=123456 kaka_test_master_slave > backup.sql
这个时候会报错是因为我们在终端输入的密码
在mysql-master配置文件etc/my.cnf加入下面配置即可
然后在执行一下命令,就可以看到导出的mysql数据库了
1 docker exec da30bacb60fd /usr/bin/mysqldump kaka_test_master_slave > backup.sql
2
3 # 或者
4 docker exec -it mysql-master mysqldump -uroot -p123456 kaka_test_master_slave > kaka.sql
4.给master-slave1从库创建数据库
5.把备份数据库复制到master-slave1容器中
1 # 复制文件到从机容器
2 docker cp backup.sql mysql-slave1:/
3
4 # 进入到mysql中
5 mysql -u root -p
6
7 # 导入MySQL
8 source /home/kaka.sql;
配置主从复制
1. 跟之前的操作一样,先给mysql-slave1的mysql配置文件配置 server_id
这里配置的是3
或者直接set global server_id=3
2.给予从库权限
这里切记MASTER_LOG_POS这个参数,是在主库 show master status 获得的
1 CHANGE MASTER TO
2 -> MASTER_HOST='172.10.0.2',
3 -> MASTER_USER='master',
4 -> MASTER_PASSWORD='123456',
5 -> MASTER_LOG_FILE='mysql-bin.000001',
6 -> MASTER_LOG_POS=472;
3.开启主从复制
1 start slave
4.查看主从复制状态
1 show slave status\G
测试
先把主机数据库解开,然后添加了一条数据 现在的id边为7了
1 unlock tables;
看我们mysql-slave的数据
在来看mysql-slave1的数据
以上就是配置的全部过程
————————————————
MySQL|一文解决主库已有数据的主从复制的更多相关文章
- MySQL主从复制——主库已有数据的解决方案
在上篇文章中我们介绍了基于Docker的Mysql主从搭建,一主多从的搭建过程就是重复了一主一从的从库配置过程,需要注意的是,要保证主从库my.cnf中server-id的唯一性.搭建完成后,可以在主 ...
- MySQL数据库如何解决大数据量存储问题
利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开 ...
- MYSQL的binary解决mysql数据大小写敏感问题 《转载》
BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写如下:mysql> select binary 'ABCD'='abcd ...
- 利用MySQL数据库如何解决大数据量存储问题?
提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如何做,对于一个存储设计,必须考虑业务特点,收集的信息如下:1.数据的容量:1-3年内会大概多少条数据,每条 ...
- centos/windows服务器,Mysql数据库表结构损坏-已解决
[问题原因]服务器突然断电 [故障报告]数据库表结构损坏 [解决思路]进入强制恢复模式,备份库表及数据重建 故障发现 周末公司断电,周一启动数据库就直接报错了 查看日志 上面标记的log,明确表示是非 ...
- mysql已有数据字符集转换
下面模拟把latin1字符集的数据转换为utf8字符集 一.创建测试表和测试数据: 1.修改会话级别的连接字符集 mysql > set names latin1; 查看一下: 2.创建测试表: ...
- mysql更改已有数据表的字符集,保留原有数据内容
mysql更改已有数据表的字符集,保留原有数据内容 原文网址:http://blog.csdn.net/learn_2/article/details/6460370 环境:在应用开始阶段没有 ...
- 已有数据表的Mysql字符编码修改
Mysql字符集修改应该如何实现呢?下面就为您详细介绍已用数据表的Mysql字符集修改方法,希望对您学习Mysql字符集方面能有所启迪. 环境:在应用开始阶段没有正确的设置字符集,在运行一段时间以后才 ...
- Mysql修改已有数据的字符集
Mysql修改已有数据的字符集 问题 在生产环境中跑了很久,发现MysqlClient连接的字符集是默认的latin1,我们一直以为都是utf8,造成这样的误解,是因为在内网环境中,我们是源码编译的M ...
随机推荐
- idea启动项目address localhost:1099 is already in use异常解决
IDEA中启动Tomcat报错,Error running Tomcat7.0.52: Address localhost:1099 is already in use 或者是 java.rmi.se ...
- 归一化(Normalization)和标准化(Standardization)
归一化和标准化是机器学习和深度学习中经常使用两种feature scaling的方式,这里主要讲述以下这两种feature scaling的方式如何计算,以及一般在什么情况下使用. 归一化的计算方式: ...
- arcgis10.2 全套安装教程
一.安装LicenseManager 1.运行在licensemanager目录下的Setup.exe 2.安装完成后点击stop停止服务,然后点击"OK" 3.选择ArcGIS1 ...
- 使用Java+NetBeans设计web服务和页面,用Tomcat部署网页
一 安装NetBeans(自动安装jdk) 二 创建服务器 三 发布服务 一 安装NetBeans(自动安装jdk) 进入oracle的下载界面: http://www.oracle.com/tech ...
- CSS-clear属性的作用
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- 001-Java学习前基础
目录 前言 一.Java语言特性(简单概述) 二.JDK.JRE.JVM三者关系 三.java文件的加载与执行 前言 初次在博客园写博客,想通过这种方式把自己学过的东西梳理一遍,加深自己的记忆,笔记中 ...
- nginx提供网站首页的一个实例
如果既想匹配'/'进行反向代理,同时又想通过nginx提供网站首页,可以在server中进行如下配置: user python; # 运行Nginx的用户 worker_processes auto; ...
- 如何调试 Java 开源项目源码,记一种源码导入开发工具并调试的通用方法
楔子 说起读开源项目源码,很多朋友觉得高大上.大佬牛逼,云云~ 挡在很多人面前的不是源码怎么读,而是不知道如何导入源码到开发工具以及如何调试源码. 本文将以 spring-cloud-gateway ...
- 认识Git并了解Git的基本知识
目录 认识Git 版本控制 版本控制的发展史 安装Git Git的核心概念 Git的使用原理 Git的工作流程 Git的基本流程 Git与SVN的区别 Git的基本使用 初始化Git 创建一个Git仓 ...
- k8s helm 安装etcd
待续 helm install etcd bitnami/etcd \ --set statefulset.replicaCount=3 \ --set persistence.enabled=tru ...