mysql从库重新搭建的流程

背景

生产环境上的主从集群,因为一些异常原因,导致主从同步失败。现记录下通过重做mysql从库的方式来解决,重做过程不影响主库。

步骤

1、在主库上的操作步骤

备份主库所有数据,并将dump.sql文件拷贝到从库/tmp目录

复制代码
 ```sql
 mysqldump -uroot -p --set-gtid-purged=OFF --single-transaction --master-data=1 --all-databases > dump.sql
 ```

 #### **备注:**
  • 如果出现报错`Can't connect to local MySQL server through socket`可以执行netstat -ln | grep mysql命令查看mysql socket的地址需要添加参数 --socket=/u/mysql/tmp/mysql.sock 再次执行即可

    sql 复制代码
    mysqldump -uroot -p --set-gtid-purged=OFF --single-transaction --master-data=1 --all-databases --socket=/u/mysql/tmp/mysql.sock > dump.sql
  • --single-transaction参数是mysqldump在全量数据导入是对锁的一些处理,都应该加上该参数

  • --master-data=1参数是在备份文件中有 CHANGE MATER TO xxxxx命令,对备库有用,默认值为1,如果为2,就是把该条语句注释了。

2、在从库的操作

  • 通过mysql-client使用root用户登录上mysql

  • 停止从库:

    sql 复制代码
    stop slave;
  • 重置从库:

    sql 复制代码
    reset slave all;
  • 导入主库的数据

    sql 复制代码
    source /tmp/dump.sql;
  • 查看dump.sql文件里面主库同步的位点:

  • 然后在从库执行

    sql 复制代码
    CHANGE MASTER TO MASTER_HOST='XXXXX',MASTER_USER='REPL',MASTER_PASSWORD='XXXX',MASTER_LOG_FILE='mysql-bin.002029',MASTER_LOG_POS=486015475;
  1. 假如需要旧用户密码忘记了,可以新建用户和密码作为主从复制的用户

    sql 复制代码
    #登录 MySQL 主库,创建用于复制的账号并授权:
       ```
       mysql -u root -p
       ```
       ```
       CREATE USER 'replication'@'从库IP地址' IDENTIFIED BY 'password';
       GRANT REPLICATION SLAVE ON *.* TO 'replication'@'从库IP地址';
       FLUSH PRIVILEGES;
  2. 在从库上再次执行

    sql 复制代码
     #在从库上登录 MySQL,并执行以下命令:
       ```
       mysql -u root -p
       ```
       ```
       CHANGE MASTER TO MASTER_HOST='主库IP地址',
       MASTER_USER='replication',
       MASTER_PASSWORD='password',
       MASTER_LOG_FILE='主库的binlog文件名',
       MASTER_LOG_POS=主库的binlog位置;
  • 开启同步:

    sql 复制代码
    start slave;
  • 查看同步状态:

    sql 复制代码
    show slave status\G;
  1. 如果发现`Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection`报错

  2. 解决方法:

  • 在从库上执行一下命令即可,出现该报错的原因是因为mysql8.0默认要求连mysql需要安全连接

sql 复制代码
stop slave;
CHANGE MASTER TO GET_MASTER_PUBLIC_KEY=1;
start slave
相关推荐
剩下了什么6 小时前
MySQL JSON_SET() 函数
数据库·mysql·json
山峰哥7 小时前
数据库工程与SQL调优——从索引策略到查询优化的深度实践
数据库·sql·性能优化·编辑器
较劲男子汉7 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
java搬砖工-苤-初心不变7 小时前
MySQL 主从复制配置完全指南:从原理到实践
数据库·mysql
WangYaolove13149 小时前
基于python的在线水果销售系统(源码+文档)
python·mysql·django·毕业设计·源码
山岚的运维笔记9 小时前
SQL Server笔记 -- 第18章:Views
数据库·笔记·sql·microsoft·sqlserver
roman_日积跬步-终至千里10 小时前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
汇智信科10 小时前
打破信息孤岛,重构企业效率:汇智信科企业信息系统一体化运营平台
数据库·重构
野犬寒鸦10 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
霖霖总总10 小时前
[小技巧66]当自增主键耗尽:MySQL 主键溢出问题深度解析与雪花算法替代方案
mysql·算法