MySQL 主从同步异常修复_重建从库(GTID复制)
8373c169ded54a2da593c35aed9a0c85b7c83daac385bfc4ae41f504cad7f5c25585cb8c407504220580d16cec36f1a13202728b7a7959f14d1b9f2ff12a7221ee23173d1adec6b5e075babea40bde0f254b9ca427c2a9e567cf69ad8ca13a0832cae4358787a3c941f987364af17193263d0a5f1cf109da0b5fa53fe1e21c751403105ab046028fa2b10d37e1a7f315154dc01dc179364af37f8a160071fe947bfe36aedf56a61c33a46b9098fe48740d98536fc4056b895886b2efd835fedb4624df9041fe63618bd0f2ba424bf451ff7f34dfe6ccd5915143987dba8c530c412e2a1dbc2dea185c8c7e490f4b7e8b583cc68ed1021dfd9 ...
MySQL 慢查询日志过滤和告警
按时间段过滤截取MySQL慢查询日志内容,上传截取内容到腾讯云COS,并通发送告警到钉钉群。开发和运维人员可以通过告警内容中的COS链接地址查看慢查询详细信息。
慢查询原日志内容# Time: 2022-10-20T03:21:02.257596Z# User@Host: appuser_prod_rw[appuser_prod_rw] @ [172.22.0.111] Id: 7691255# Query_time: 1.159538 Lock_time: 0.000079 Rows_sent: 0 Rows_examined: 1804396SET timestamp=1666236062;SELECT xxxxxxxxxxxxxxxxxxxxxxx FROM xxxxxx WHERE (xxx = 4317404);# Time: 2022-10-20T03:21:03.933240Z# User@Host: appuser_prod_rw[appuser_prod_rw] @ [172.22.0.111] Id: 7691437# Query_time: 2. ...
MySQL 慢日志切割
新建 MySQL 用户创建用于刷新日志的 MySQL 账号,并对账号权限加以限制。
> GRANT RELOAD ON *.* TO 'flushlogs_user'@'localhost' IDENTIFIED BY '123456';> FLUSH PRIVILEGES;
刷新 MySQL 慢日志刷新MySQL慢查询日志,慢查询日志类型为 slow
# 方式一$ mysqladmin -u$DBUser -P$DBPass -S /data/server/mysql/tmp/mysql.sock flush-logs slow# 方式二$ mysqladmin -u$DBUser -P$DBPass -h $DBHost -P $DBPort flush-logs slow
注意:
在刷新 slow log 前,需要先把文件重命名,否则mysql不会生成新的 slow log 文件。
由于在Linux系统中存在“文件描述符”的概念,即使重命名了 slow log 文件,mysql进程依然会把新产生的 ...
MySQL 数据库回档方案
操作场景对于自建数据库 MySQL,在误操作造成数据损坏时,进行数据修复相对来说是比较麻烦的。在公有云上的云数据 MySQL,基本上都会提供数据回档的功能,只需要在控制台简单操作即可。
这里参考了腾讯云数据库的回档方案,结合公司当数据库集群架构以及数据库备份方案制定了较为简单、安全的 MySQL 的回档方案:
此回档方案只支持对数据库或表进行回档操作,回档是基于 数据备份 + 日志备份(binlog),可进行实时数据回档。
自建数据库 MySQL 回档通过定期全量物理热备(这里使用XtraBackup工具进行全备)和 binlog 日志重建,将数据库或表回档到指定时间,期间原有数据库或表的访问不受影响,回档操作会产生新的数据库或表至原实例中。回档完后,在原实例中可以看到原来的数据库或表,以及新建的数据库或表。
XtraBackup 工具使用请参考:《MySQL 备份与恢复》
功能原理回档基于最近一次备份文件 + 对应的 binlog回档到指定时间点。
备份系统每天会从 MySQL 备机导出数据到备份系统。
回档时,首先需要新建一台回档实例,然后从备份系统导出备份数据并导入临时实例( ...
MySQL · 物理备份 · XtraBackup 备份原理
前言Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle)、Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心。我们 RDS MySQL 的物理备份就是基于这个工具做的。
项目的 blueprint 和 bug 讨论放在 Launchpad,代码之前也放在 Launchpad,现在已经迁移到 Github 啦,项目更新发布非常快,感兴趣的可以关注 :-)
本文会介绍下备份工具的工作原理,希望对大家有所帮助。
工具集软件包安装完后一共有4个可执行文件,如下:
usr├── bin│ ├── innobackupex│ ├── xbcrypt│ ├── xbstream│ └── xtrabackup
其中最主要的是 innobackupex 和 xtrabackup,前者是一个 perl 脚本,后者是 C/C++ 编译的二进制。
xtrabackup 是用来备份 InnoDB 表的,不能备份非 InnoDB 表,和 mys ...
MySQL 之 mysqldump 备份权限
1.创建一个用于备份数据库的用户mysql> create user 'backup'@'localhost' identified by '123';
2.添加权限2.1 添加 SELECT 权限根据报错,backup用户缺少select权限
[root@private_server ~]# mysqldump -ubackup -p123 -B wordpress > wordpress.sqlmysqldump: Got error: 1044: "Access denied for user 'backup'@'localhost' to database 'wordpress'" when selecting the database
给backup用户添加select权限
mysql> GRANT SELECT ON *.* TO 'backup'@'localhost& ...
MySQL 半同步复制
一、半同步复制1.原理在半同步复制出现之前,虽然异步复制可以满足主从实例之间的数据同步,同时row 格式的binlog也能够大幅度避免主从实例的数据不一致的情况,但是如果碰到主库崩溃,写业务故障切换到从库,将从库提升为主库时,原来的主库上可能有一部分数据还没来得及被从库接收,而事实上这部分丢失的数据可能在主库上已经正常提交完成了。为解决这个问题,在MySQL 5.5版本中引入了半同步复制,半同步复制的关键改进就是当客户端在 主库上写入一个事务时,需要等待从库接收到主库的binlog,且主库接收到ACK确认之后,客户端才能收到事务成功提交的消息,如图
这里有一个小细节需要注意:早期的半同步复制有一个缺陷,在正常的半同步复制流程中,当客户端对主库发起事务提交之后,主库发送binlog给从库,从库接收到binlog并返回ACK,然后主库返回事务提交成功的消息给发起提交的客户端。这里对于发起事务提交的客户端看起来没有任何问题,但实际上在早期的半同步复制中,主库在等待ACK 的InnoDB存储引擎内部已经提交事务,只是阻塞了返回给发起事务提交的客户端消息而已。此时如果有其他会话对该事务修改的数 ...
MySQL 异步复制
一、异步复制原理
主库有一个线程:binlog dump线程。
从库有两个线程:IO线程、SQL线程。
1.异步复制原理
用户对数据的修改进行提交,然后Master(主库)把所有数据库的变更写进binlog中,主库线程binlog dump把binlog内容推送给Slave(从库)。
注意:
启动复制通道后,第一次是从库告诉主库要从哪个位置点或者gtid位执行,然后主库启动一个dump线程,向从库推数据。
从库I/O线程读取主库上的binlog信息,并把binlog写到本地中继日志 (relay log)中。
从库SQL线程读取并解析ralay log内容,按照主库中的提交顺序进行事务回放,写 入本地数据文件中,这样就实现了数据在主从实例之间的同步。
注意:
主库在写入binlog并落盘之后,通知dump线程有新的 binlog 产生,并发送到从库中。然后主库并不理会从库是否接收到binlog,而是自顾自地照常进行事务的提交,如下图。
2.异步复制过程
从库通过执行change master to 语句连接主库,提供了连接的用户一切条件(user 、pas ...
MySQL 高可用架构之 MHA
一、MHA高可用介绍1.简介 MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automating master failover 功能。MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点成为新的master节点,在此期间,MHA会通过与其它从节点获取额外信息来避免一致性方面的问题。MHA还提供了master节点的在线切换功能,即按需切换master/slave节点。
MHA 是由日本人 yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的 MySQL 高可用方案。MHA 能够在30秒内实现故障切换,并能在故障切换中,最大可能的保证数据一致性。目前淘宝也正在开发相似产品 TMHA, 目前已支持一主一从。
2.MHA工作原理 当Master出现故障时,通过对比slave之间I/O线程读取master binlog的位置,选取最接近的slave做为 latest slave。 其它slave通过与latest slave对比生成差异中继日志 ...
MySQL 备份与恢复
一、数据库备份的类型备份类型分类按照服务器的运行状态,可分为:冷备、热备、温备。
冷备:数据库处于停机状态下进行备份。
热备:数据库处于运行状态下备份,在热备期间,数据库的读写操作均可正常进行。
在mysql中,MyISAM存储引擎不支持热备,InnoDB存储引擎支持热备。
温备:数据库处于运行状态下备份,但是在温备期间数据库只能进行读操作,不能进行写操作
按照备份后的内容量,可分为:全备、增备、差异备份。
全量备份:对所有数据进行一个完全的备份。
增备备份:对上一次”备份”以后变化的数据的备份。
差异备份:对上一次”全量备份”以后变化的数据的备份。
按照备份的方式,可分为:逻辑备份、物理备份。
逻辑备份:将数据从数据库中导出,并将导出的数据进行存档备份。
物理备份:直接备份数据库所对应的数据文件。物理备份相对逻辑备份来说,性能更强。
备份方式优缺点MySQL进行全量数据备份时,可以选择物理备份(如 Xtrabackup)和逻辑备份(如 mysqldump)两种方式。这两种备份方法各有优缺点,适用于不同的场景:
物理备份 ...