Blogger Information
Blog 11
fans 13
comment 1
visits 17505
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
【MySQL】一文解决主库已有数据的主从复制
咔咔
Original
1262 people have browsed it

主从复制配置方案和实际的场景有很多,在之前配置了主从库都是全新的配置方案
在这一篇会配置主库存在数据
然后配置主从复制

@TOC

主从复制所需要的环境

【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. 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. # 进入到mysql中
  4. mysql -u root -p
  5. # 导入MySQL
  6. 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的数据

在这里插入图片描述

以上就是配置的全部过程

博主微信欢迎交流

在这里插入图片描述

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments