标签: mysqlbinlog

为什么清除或刷新后 MySQL bin 日志文件仍然存在?

我使用过 PURGE BINARY LOGS 和 FLUSH LOGS,但 mysql 目录仍然包含这些文件:

mysql-bin.000025
mysql-bin.000024
mysql-bin.000023
mysql-bin.000022
mysql-bin.000021
mysql-bin.000020
mysql-bin.000019
mysql-bin.index
Run Code Online (Sandbox Code Playgroud)

是否有使用命令不起作用的原因?这些文件占用了大量空间。我想安全地摆脱它们。

mysql binlog mysqlbinlog

14
推荐指数
4
解决办法
5万
查看次数

从 .ibd、.frm 和 mysqllogbin 文件恢复 MySQL 表

出于某种原因,当我尝试打开存储在.frm.ibd文件中的表(无论是在 MySQL 还是 phpmyadmin 上)时,它会给我一个语法错误,或者它说它不存在。

我已经从 .frm 和 .ibd 文件中读取了恢复表?有与此类似的问题,但我不知道如何检查是否innodb_file_per_table已启用,而且我总体上真的很困惑。我还将我的mysql-bin.000002文件的副本转换为txt 文件,因此我看到我的数据库中的数据没有完全丢失。

该数据库是去年创建的。我有 6 个mysql-bin.00000文件,但由于某种原因,.000002它是最大的。现在,我拥有所有数据库的.ibd.frm文件,但我不知道如何将其恢复回 MySQL,或者至少恢复到我可以读取的内容。

我在 Windows 2003 Server 上使用 WampServer 2.4 和 MySQL 5.6.12。另外,我应该在 InnoDB 中下载插件吗?

mysql innodb recovery mysql-5.6 mysqlbinlog

10
推荐指数
1
解决办法
6万
查看次数

显示来自 mysql binlog (GTID) 的 sql 语句

我有用于通过 GTID 复制的 mysql 二进制日志。

我正在尝试显示执行的更新/插入语句,如下所示:

mysqlbinlog --base64-output=DECODE-ROWS mysql-bin.000024
Run Code Online (Sandbox Code Playgroud)

但我所看到的只是这样,没有更新或插入 stmt 的痕迹:

SET TIMESTAMP=1431681617/*!*/;
BEGIN
/*!*/;
# at 746987321
# at 746987392
# at 746987484
#150515 11:20:17 server id 1  end_log_pos 746987515 CRC32 0xeb874754    Xid = 997501767
COMMIT/*!*/;
# at 746987515
#150515 11:20:22 server id 1  end_log_pos 746987563 CRC32 0xc5ece64a    GTID [commit=yes]
SET @@SESSION.GTID_NEXT= 'a4ade293-c63a-11e4-94cf-005056944a56:2059057'/*!*/;
# at 746987563
#150515 11:20:22 server id 1  end_log_pos 746987650 CRC32 0x92296355    Query   thread_id=71622 exec_time=0 error_code=0
Run Code Online (Sandbox Code Playgroud)

我不确定 GTID 复制的格式/配置以及在哪里寻找它...

mysql replication mysqlbinlog

6
推荐指数
1
解决办法
1万
查看次数

如何从二进制文件中获取 MySQL 二进制日志坐标?

我正在尝试为大型(120 GB)MySQL 数据库设置复制,但我搞砸了。

我关闭了 master,复制了数据文件,然后重新启动了 master。现在我已经设置了奴隶并启动了它,我意识到我忽略了获取MASTER_LOG_FILEMASTER_LOG_POS设置复制所需值。

我仍然有一份未受影响的数据文件副本。有没有办法从这些文件中确定MASTER_LOG_FILEMASTER_LOG_POS

相关问题:

  • 如果你设置了会发生什么 MASTER_LOG_POS为较早的时间点?
  • 假设将执行重复查询,可能导致重复数据,我是否正确?

编辑

我一直在调查该mysqlbinlog命令,并通过执行以下命令发现了正确的信息:

mysqlbinlog --to-last-log --start-datetime='2015-06-21 20:05:00'
    mysql-bin.000006 | grep end_log_pos
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

... a whole bunch more lines ...

#150621 20:10:21 server id 1  end_log_pos 720159843     Query   thread_id=901489    exec_time=0 error_code=0
#150621 20:10:21 server id 1  end_log_pos 720161877     Query   thread_id=901489    exec_time=0 error_code=0
#150621 20:10:21 server id 1  end_log_pos 720162762     Query   thread_id=901489    exec_time=0 error_code=0
#150621 20:10:22 server id 1  end_log_pos 720164796 …
Run Code Online (Sandbox Code Playgroud)

mysql replication mysqlbinlog

6
推荐指数
1
解决办法
9151
查看次数

执行完整备份时是否可以获得实时mysql数据库的精确位置

我有一个生产数据库,我通常每周运行一次完整备份。我为增量备份打开了 bin 日志。

生产服务器在西海岸,而营业时间在东海岸。

当我执行全备份时,我会查询主服务器的日志和位置。我将这些值放在我将数据库压缩到的 zip 文件名中。

我在使用 mysqlbinlog 从我知道备份已经结束的某个位置创建增量 sql 文件时遇到了困难。

运行Show Master Status然后运行mysqldump --flush-logs --single-transaction...就足以获得准确的信息以进行恢复。

我知道理想的设置是备份从属数据库,因为锁定不会损害生产环境,但目前我还没有进行切换。

因为我没有锁定所有表,所以我没有得到理想的结果吗?

提前致谢

编辑

在 RolandoMySQLDBA 的帮助下,我意识到我没有指向适当的 binlog 文件。我改为指向整个目录binlog/bin-log.[0-9]* > sql.txt。因此,仅使用该位置,我就可以击中比预期更早开始的日志。所以我更改了我的脚本以提取适当的 binlog 文件以及位置,这就像一个魅力。

谢谢

mysql mysqldump backup mysqlbinlog

5
推荐指数
1
解决办法
7690
查看次数

在 MySQL 中禁用二进制日志记录是否安全?

MySQL binlog 是否类似于 Oracle 的重做日志或 PostgreSQL 的 Write-Ahead Log?

如果是,为什么可以禁用 bin 日志记录?如果在更新数据文件时机器崩溃,RDBMS 如何在没有 binlog 的情况下回滚更改(或以其他方式将数据文件恢复到一致状态)?

手册说“某些数据恢复操作需要使用二进制日志”,但并不完全清楚是哪一个。如果我没有复制和增量备份,禁用二进制日志是否安全?

我问这些问题的原因是,在 Nextcloud 部署中,我遇到了磁盘性能问题,并且我发现在大量使用期间,MySQL 写入磁盘(写入二进制日志)的速率等于每分钟数据库。因此,我试图了解正在发生的事情以解决问题。

mysql innodb binlog mysqlbinlog

3
推荐指数
1
解决办法
3171
查看次数

MySQL禁用binlog后如何删除剩余的binlog文件?

在禁用日志之前,我使用此解决方案删除我的日志。binlog禁用后,我测试了以下命令来删除剩余的文件,但没有成功。(删除的目的是节省空间。)

PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';
Run Code Online (Sandbox Code Playgroud)

我的问题是:手动删除它们安全吗?(我发现问题1问题2与我的相似,但答案对我来说不确定)

mysql mysqlbinlog

3
推荐指数
1
解决办法
1830
查看次数