发现Mysql的主从数据库没有同步,差点凉凉了

发现,mysql,主从,数据库,没有,同步,差点,凉凉 · 浏览次数 : 72

小编点评

**Mysql 主从数据库同步问题** 今天发现 MySQL 主从数据库没有同步,瞬间整个人头皮发麻。以下内容分享华为云社区《糟了,生产环境数据竟然不一致,人麻了!》的分享,以启发性描述问题和解决方案。 **问题描述:** - MySQL 主从数据库没有同步。 - 使用 `show processlist;` 查看进程状态,发现 `mysql` 进程一直在阻塞。 - 使用 `show master status;` 查看主库状态,发现 `Slave_IO_Running` 和 `Slave_SQL_Running` 都是 `Yes`。 **解决方案:** **方法一:忽略错误并继续同步** - 在主从库数据相差不大的情况下,可以忽略错误并继续同步。 - 使用 `stop slave;` 命令跳过一步错误,并将 `global sql_slave_skip_counter` 设置为 `1`。 - 然后再次使用 `start slave;` 启动从同步。 **方法二:重新做主从** - 在主从库数据相差较大或要求数据完全一致的情况下,需要重新做主从。 - 首先进行锁表,防止数据写入。 - 备份数据并将其传到从库机器。 - 然后将数据恢复到 `mysql.bak.sql` 文件中。 - 重新启动从同步。 **注意:** - 两种方法都需要在进行数据恢复之前停止从库状态。 - 在重新做主从之前,请确保从库机器已配置好并连接到主库。 - 确保数据备份和恢复过程的安全性和完整性。

正文

摘要:今天发现Mysql的主从数据库没有同步,瞬间整个人头皮发麻。

本文分享自华为云社区《糟了,生产环境数据竟然不一致,人麻了!》,作者:冰 河 。

今天发现Mysql的主从数据库没有同步

先上Master库:

mysql>show processlist;

查看下进程是否Sleep太多。发现很正常。

show master status;

也正常。

mysql> show master status;
+-------------------+----------+--------------+-------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+-------------------------------+
| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |
+-------------------+----------+--------------+-------------------------------+
1 row in set (0.00 sec)

再到Slave上查看

mysql> show slave status\G                                                
Slave_IO_Running: Yes
Slave_SQL_Running: No

可见是Slave不同步

解决方案

下面介绍两种解决方法

方法一:忽略错误后,继续同步

该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况

解决:

stop slave;
#表示跳过一步错误,后面的数字可变
set global sql_slave_skip_counter =1;
start slave;

之后再用mysql> show slave status\G 查看

mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

ok,现在主从同步状态正常了。。。

方式二:重新做主从,完全同步

该方法适用于主从库数据相差较大,或者要求数据完全统一的情况

解决步骤如下:

1.先进入主库,进行锁表,防止数据写入

使用命令:

mysql> flush tables with read lock;

注意:该处是锁定为只读状态,语句不区分大小写

2.进行数据备份

#把数据备份到mysql.bak.sql文件

mysqldump -uroot -p -hlocalhost > mysql.bak.sql

这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失。

3.查看master 状态

mysql> show master status;
+-------------------+----------+--------------+-------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+-------------------------------+
| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |
+-------------------+----------+--------------+-------------------------------+
1 row in set (0.00 sec)

4.把mysql备份文件传到从库机器,进行数据恢复

scp mysql.bak.sql root@192.168.128.101:/tmp/

5.停止从库的状态

mysql> stop slave;

6.然后到从库执行mysql命令,导入数据备份

mysql> source /tmp/mysql.bak.sql

7.设置从库同步,注意该处的同步点,就是主库show master status信息里的| File| Position两项

change master to master_host = '192.168.128.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;

8.重新开启从同步

mysql> start slave;

9.查看同步状态

mysql> show slave status\G  
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

10.回到主库并执行如下命令解除表锁定。

UNLOCK TABLES;

 

点击关注,第一时间了解华为云新鲜技术~

与发现Mysql的主从数据库没有同步,差点凉凉了相似的内容:

发现Mysql的主从数据库没有同步,差点凉凉了

摘要:今天发现Mysql的主从数据库没有同步,瞬间整个人头皮发麻。 本文分享自华为云社区《糟了,生产环境数据竟然不一致,人麻了!》,作者:冰 河 。 今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多。发现很正常

[转帖]MySQL 8.0 Instant Add Column功能解析

https://zhuanlan.zhihu.com/p/408702204 概述 DDL(Data Definition Language)是数据库内部的对象进行创建、删除、修改的操作语言,主要包括:加减列、更改列类型、加减索引等类型。数据库的模式(schema)会随着业务的发展不断变化,如果没有

使用Kettle定时从数据库A刷新数据到数据库B

# 一、需求背景 由于项目场景原因,需要将A库(MySQL)中的表a、表b、表c中的数据``定时T+1`` ``增量``的同步到B库(MySQL)。这里说明一下,不是数据库的主从备份,就是普通的数据同步。经过技术调研,发现Kettle挺合适的,原因如下: 1. Kettle (数据抽取、清洗、转换、

JDBC数据库汇总Attack研究

前言 针对除Mysql的其它数据库的jdbc attack分析 H2 RCE 介绍 H2 是一个用 Java 开发的嵌入式数据库,它本身只是一个类库,即只有一个 jar 文件,可以直接嵌入到应用项目中。H2 主要有如下三个用途: 第一个用途,也是最常使用的用途就在于可以同应用程序打包在一起发布,这样

字节面试:MySQL自增ID用完会怎样?

在一些中小型项目开发中,我们通常会使用自增 ID 来作为主键的生成策略,但随着时间的推移,数据库的信息也会越来越多,尤其是使用自增 ID 作为日志表的主键生成策略时,可能很快就会遇到 ID 被用完的情况,那么如果发生了这种情况,MySQL 又会怎样执行呢? PS:当然,在分库分表的场景中,我们通常会

分布式任务调度内的 MySQL 分页查询优化

本文主要通过图示介绍了用主键进行分片查询的过程,介绍了主键分页查询存在SQL性能问题,如何去创建高效的索引去优化主键分页查询的SQL性能问题。对于数据分布不均如何发现,提供了一些SQL查询案例来进行参考,对MySQL Index Condition Pushdown优化算法做了一些简单介绍。

[转帖]线上大量CLOSE_WAIT的原因深入分析

这一次重启真的无法解决问题了:一次 MySQL 主动关闭,导致服务出现大量 CLOSE_WAIT 的全流程排查过程。 近日遇到一个线上服务 socket 资源被不断打满的情况。通过各种工具分析线上问题,定位到问题代码。这里对该问题发现、修复过程进行一下复盘总结。 先看两张图。一张图是服务正常时监控到

6步带你用Spring Boot开发出商城高并发秒杀系统

摘要:本博客将介绍如何使用 Spring Boot 实现一个简单的商城秒杀系统,并通过使用 Redis 和 MySQL 来增强其性能和可靠性。 本文分享自华为云社区《Spring Boot实现商城高并发秒杀案例》,作者:林欣。 随着经济的发展和人们消费观念的转变,电子商务逐渐成为人们购物的主要方式之

MySQL的index merge(索引合并)导致数据库死锁分析与解决方案

在DBS-集群列表-更多-连接查询-死锁中,看到9月22日有数据库死锁日志,后排查发现是因为mysql的优化-index merge(索引合并)导致数据库死锁。

memcached的大key存储与slab钙化问题踩坑

## 背景 线上启用memcached(以下简称mc)作为热点缓存组件已经多年,其稳定性和性能都经历住了考验,这里记录一下踩过的几个坑。 ## 大key存储 某年某月某日,观察mysql的读库CPU占比有些异常偏高,去check慢查询log,发现部分应有缓存的慢sql居然存在几秒执行一次情况,不符合