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
相关推荐
weixin_472339468 分钟前
MySQL MCP 使用案例
数据库·mysql
lqlj22331 小时前
Spark SQL 读取 CSV 文件,并将数据写入 MySQL 数据库
数据库·sql·spark
遗憾皆是温柔2 小时前
MyBatis—动态 SQL
java·数据库·ide·sql·mybatis
未来之窗软件服务2 小时前
Cacti 未经身份验证SQL注入漏洞
android·数据库·sql·服务器安全
fengye2071612 小时前
在MYSQL中导入cookbook.sql文件
数据库·mysql·adb
拓端研究室TRL2 小时前
Python与MySQL网站排名数据分析及多层感知机MLP、机器学习优化策略和地理可视化应用|附AI智能体数据代码
人工智能·python·mysql·机器学习·数据分析
Ailovelearning3 小时前
neo4j框架:ubuntu系统中neo4j安装与使用教程
数据库·neo4j
_星辰大海乀4 小时前
表的设计、聚合函数
java·数据结构·数据库·sql·mysql·数据库开发
未来之窗软件服务4 小时前
solidwors插件 开发————仙盟创梦IDE
前端·javascript·数据库·ide·仙盟创梦ide
yc_12244 小时前
SqlHelper 实现类,支持多数据库,提供异步操作、自动重试、事务、存储过程、分页、缓存等功能。
数据库·c#