首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据库磁盘分区真的丢失了?

    1周前的周四,中途被业务方拉过去解决一次DB故障。由于不太了解当时的业务场景,只是听DBA说数据库服务器数据分区的磁盘丢失(笔者从来没有经历过磁盘突然丢失的场景),拿着同事的账号登录到发生故障的数据库服务器上,根据进程找到对应的磁盘目录,执行touch /data/mysql/abc, 可以正常执行,说明挂载的/data分区所在的文件系统是可以写的,MySQL命令行进入test库中,执行create table id_a(id int); 卡主, 在另外的一个mysql会话终端中,show processlist是可以正常执行的, show table|show databases都是可以正常执行。现象上看只要是DDL的语句执行均被阻塞,正当准备跟踪MySQL 的所有线程的时候,数据库进程已经被DBA 命令kill掉了。DBA重新挂载了一次/data分区后,启动数据库后,问题得到解决(这种做法大概率存在数据丢失,看后续分析)。

    02

    mysql 主从同步详解分析

    Mysql为了解决这个风险并提高复制的性能,将Slave端的复制改为两个进程来完成。提出这个改进方案的人是Yahoo!的一位工程师“Jeremy Zawodny”。这样既解决了性能问题,又缩短了异步的延时时间,同时也减少了可能存在的数据丢失量。当然,即使是换成了现在这样两个线程处理以后,同样也还是存在slave数据延时以及数据丢失的可能性的,毕竟这个复制是异步的。只要数据的更改不是在一个事物中,这些问题都是会存在的。如果要完全避免这些问题,就只能用mysql的cluster来解决了。不过mysql的cluster是内存数据库的解决方案,需要将所有数据都load到内存中,这样就对内存的要求就非常大了,对于一般的应用来说可实施性不是太大。

    01
    领券