我正在尝试修复一个 MySQL 复制设置。从属侧的数据库表之一被删除,并接收到来自主侧的更新,但由于缺少表,这些更新不会写入数据库。这个设置已经好几个月没有修复了,奴隶有很多事情要赶上。我观察到 Exec_Master_Log_Pos 值大于 Read_Master_Log_Pos ,这不应该是这种情况。这是某种错误吗?估计等slave赶上master就会恢复正常。有人熟悉这种情况吗?
在生产中使用 MySQL 复制之前,我们正在对其进行测试。在我们的案例中,MySQL 是由 Puppet 设置的,我注意到 master 和 slave 之间的 binlog_format 设置不同。
在主人上:
mysql> show variables like 'binlog_format' \G
*************************** 1. row ***************************
Variable_name: binlog_format
Value: ROW
Run Code Online (Sandbox Code Playgroud)
在奴隶上:
mysql> show variables like 'binlog_format' \G
*************************** 1. row ***************************
Variable_name: binlog_format
Value: STATEMENT
Run Code Online (Sandbox Code Playgroud)
有时,复制会中断并显示类似于以下内容的错误:
Last_SQL_Error:无法在表 test.pruning 上执行 Delete_rows 事件;在“修剪”中找不到记录,错误代码:1032;处理程序错误 HA_ERR_KEY_NOT_FOUND; 事件的主日志 mysql-bin.000002, end_log_pos 1448
不知道是不是master和slave的binlog_format设置不同导致的。
上述错误可能是由这种不一致的设置引起的吗?我应该将奴隶更改为基于“行”的格式吗?很难重现该错误,因此我正在寻找我们应该遵循的最佳实践,而且我们对 MySQL 非常陌生。
我想清楚地了解数据从触发查询到进入磁盘的确切方式。(我有一个粗略的想法,它会进入缓冲区,然后重做日志,然后是磁盘文件)但是如何使用 bin_log_cache 。
我已经用谷歌搜索了这个,但没有找到关于这个主题的太多内容。我希望在这个社区的人之间有一些解释。
我最近在 Ubuntu Server 16.04 下安装了两个相同的 MySQL 5.7 默认安装,并将它们配置为执行二进制日志复制。到目前为止,这一直工作正常,但突然复制停止继续,从属查询线程以 100% CPU 运行而没有做任何工作。
经过一番搜索,我发现从站状态表明它远远落后于主站。在Relay_Master_Log_File和位置Exec_Master_Log_Pos指示的binlog文件上使用mysqlbinlog,发现在这个位置执行的语句是:
SET @@SESSION.GTID_NEXT= 'ANONYMOUS';
在尝试执行此语句时,从站以某种方式挂起,将 CPU 负载发送到 100%(这是我首先发现情况的方式)。
除了让奴隶跳过使用SET GLOBAL sql_slave_skip_counter=1它的语句之外,我不清楚这个问题的实际原因是什么,以及我应该如何解决这个问题。
任何帮助将非常感激!
语境
我正在尝试在 MySQL RDS 实例上启用 BINARY LOG。
问题
我使用CALL mysql.rds_set_configuration('binlog retention hours', 24)没有遇到错误。
并使用CALL mysql.rds_show_configuration说“binlog 保留时间”值是 24
但是SHOW BINARY LOGS说“#1381 - 你没有使用二进制日志”
我错过了什么吗?
附加信息 :
SHOW GRANTS结果GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP...有用的文件
我需要在带有复制的实时生产数据库上运行慢查询和未索引查询日志记录一段时间。更改 GLOBAL const 值听起来是一个不错的解决方案。这篇文章也提供了很好的阅读内容。
问题是我需要FLUSH LOGS;在主/从上运行。我不确定这将如何影响复制。FLUSH LOGS;有人可以告诉我运行对实时主机和实时从机的影响吗?
谢谢
我在 Centos 6 上运行 MySQL 5.7。我启用了二进制日志记录,但没有为我的配置文件中的二进制日志的最大大小提供任何自定义值。默认情况下,参数max_binlog_size = 1073741824相当于 1GB。这意味着,一旦二进制日志达到 1GB 的大小,就应该创建一个新文件。
我在我的服务器中观察到所有二进制日志文件的大小都不同,并且有很多对比,例如 200GB、165GB、4GB 等......
为什么当二进制日志文件的最大大小为 1GB 时会发生这种情况?是否有必要在配置文件中明确提及默认的最大大小?
我有一个带有钨复制器的 mysql 主/主设置。我的服务器空间不足,在 6 小时内占用了大约 30G。我不知道如何处理这个。如果有人能帮我解决这个问题,那就太好了。
谢谢,斯瓦鲁普。
我必须手动写
purge binary logs bin to "mysql-bin.somenumbers" ;
Run Code Online (Sandbox Code Playgroud)
有时,我需要减少二进制日志在我的 Web 服务器上占用的空间。是否可以每两周自动清除一次二进制日志箱?可能在 crontab 中调用 bash 脚本?
我在CentOS 6.5上运行MySQL 5.5
有什么意义sync_binlog?
如果我设置,究竟会发生什么sync_binlog=1?
它如何影响master和slave之间的复制?
MySQL binlog 是否类似于 Oracle 的重做日志或 PostgreSQL 的 Write-Ahead Log?
如果是,为什么可以禁用 bin 日志记录?如果在更新数据文件时机器崩溃,RDBMS 如何在没有 binlog 的情况下回滚更改(或以其他方式将数据文件恢复到一致状态)?
该手册说“某些数据恢复操作需要使用二进制日志”,但并不完全清楚是哪一个。如果我没有复制和增量备份,禁用二进制日志是否安全?
我问这些问题的原因是,在 Nextcloud 部署中,我遇到了磁盘性能问题,并且我发现在大量使用期间,MySQL 写入磁盘(写入二进制日志)的速率等于每分钟数据库。因此,我试图了解正在发生的事情以解决问题。
binlog ×11
mysql ×11
replication ×5
innodb ×2
mysql-5.7 ×2
amazon-rds ×1
multi-master ×1
mysql-5 ×1
mysql-5.1 ×1
mysql-5.5 ×1
mysqlbinlog ×1
performance ×1
slow-log ×1