当前位置: 首页 > news >正文

mysql主从复制(主-从-从)

文章目录

  • 一、前期环境准备
  • 二、主库配置
    • 1.设置server-id值并开启binlog参数
    • 2.建立同步账户并给上权限
    • 3.查看主库状态
    • 4.锁表设置只读
    • 5.备份数据库数据
  • 三、从库配置
    • 1.设置server-id值并开启binlog参数
    • 2.还原从主库备份数据
    • 3.设定从主库同步
    • 4.启动从库同步开关
  • 四.测试
    • 1.在主库上创建数据库
    • 2.在主库上删除数据库
  • 总结


一、前期环境准备

前期需要准备三台主机
在这里插入图片描述

二、主库配置

1.设置server-id值并开启binlog参数

vim /etc/my.cnf 去这个配置文件下,
[mysqld]
log_bin=mysql-bin
server_id = 11

server_id 要与从库不一样
改完配置文件后需要重启数据库

systemctl restart mysqld

2.建立同步账户并给上权限

grant replication slave on *.* to 'rep'@'192.168.45.%' identified by 'redhat';

查看账户的权限

show grants for 'rep'@'192.168.45.%';

3.查看主库状态

show master status;

在这里插入图片描述
可以看见当前日志名和偏移量

4.锁表设置只读

为后面备份准备,注意生产环境要提前申请停机时间;

flush tables with read lock;

如果超过设置时间不操作会自动解锁

 show variables like '%timeout%';

在这里插入图片描述测试锁表后是否可以创建数据库

5.备份数据库数据

我这里使用mydb3数据库
在这里插入图片描述备份该数据库

mysqldump -uroot -predhat  -B mydb3 > my.sql

然后将该数据库传给两个从库

scp my.sql 192.168.45.142:/opt/

去两个从库查看是否有该文件
在这里插入图片描述
最后进行解锁

unlock tables;

三、从库配置

1.设置server-id值并开启binlog参数

在这里插入图片描述
注意server_id不能一样,这里将它设置成12
设置完配置文件之后需要重启mysql

2.还原从主库备份数据

mysql -uroot -p < /opt/my.sql

两个从库都做一样的配置
然后去查看还原的数据库

在这里插入图片描述

3.设定从主库同步

在从库的mysql上

change master to-> master_host='192.168.45.140',-> master_port=3306,-> master_user='rep',-> master_password='redhat',-> master_log_file='mysql-bin-000011',-> master_log_pos=439;show master status;
#去查看日志名

4.启动从库同步开关

mysql> start slave;
#检查状态:
mysql> show slave status\G

这里要注意的时,因为我使用的时克隆机器,因此三台机器的uuid都是一样的,会出现报错,因此需要去修改uuid
如果您的三台主机不是克隆的可一忽略这个问题

#去这个配置文件下进行修改
vim /var/lib/mysql/auto.cnf [auto]
server-uuid=816b68b8-1ad6-11ee-9ffb-000c29f9526b

改完配置文件记得重启数据库

然后去查看从库状态
在这里插入图片描述
当Slave_IO_Running和Slave_SQL_Running参数都为yes时,说明配置成功

四.测试

1.在主库上创建数据库

然后去从库上查看

在这里插入图片描述

2.在主库上删除数据库

在这里插入图片描述
测试成功,主从复制没有问题。

总结

在大家进行主从复制的时候,如果遇到Slave_IO_Running和Slave_SQL_Running参数有no时,大致有一下几种情况
1.server-id可能一样
2.server-uuid可能一样
3.主库的密码不一样
所有大家在进行配置时,一定要细心,防止出错。

http://www.lryc.cn/news/95861.html

相关文章:

  • 如何制定数据采集解决方案?
  • RabbitMQ消息可靠性问题及解决
  • 2023河南萌新联赛第(三)场:郑州大学(两个题目)
  • 学生管理系统-07打包与上线
  • day31贪心算法 用最少数量的箭引爆气球 和无重叠区间
  • AMEYA360报道:手机直连卫星通信发展的三个阶段
  • redis中缓存雪崩,缓存穿透,缓存击穿的原因以及解决方案
  • ChatGPT火热之下的冷思考
  • 查看docker容器启动参数
  • 对Webpack的理解
  • 使用wxPython和pillow开发拼图小游戏(四)
  • XGBoost实例——皮马印第安人糖尿病预测和特征筛选
  • 使用MQ发送对象错误
  • 安装和卸载docker,详细教程
  • RabbitMQ的确认机制
  • java项目之人才公寓管理系统(ssm+mysql+jsp)
  • git使用记录
  • Spring MVC异步上传、跨服务器上传和文件下载
  • 性能测试之并发用户数的估计
  • 【全方位解析】如何获取客户端/服务端真实 IP
  • Ceph简介和特性
  • Python基本语法之符号使用
  • 前端vue部署到nginx并且配置https安全证书全流程
  • 三子棋(超详解+完整码源)
  • 【算法提高:动态规划】1.2 最长上升子序列模型(TODO:最长公共上升子序列)
  • 会不会好奇ai绘画生成器?ai创作的灵感从何而来?
  • 【Ajax】笔记-JQuery发送请求与通用方法
  • 视频的音频提取怎么做?这样提取很简单
  • 几百本常用计算机开发语言电子书链接
  • Docker Compose 解析:定义和管理多容器应用,从多角度探索其优势和应用场景