问题标签 [mysqlbinlog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 1548 [警告] 使用语句格式将不安全的语句写入二进制日志,因为 BINLOG_FORMAT = STATEMENT
我在运行简单语句时收到以下警告,我很好奇为什么会得到它:
这是Table1
结构:
日志中的完整错误:
2015-02-17 16:10:08 1548 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly. Statement: UPDATE
表1
SET
City ='Miami',
ExpDate ='201227',
User ='JDoe',
UpdDate ='2015-02-17 16:11:25'
WHERE
id= 61
mysql - 我们可以为特定表启用 mysql 二进制日志记录吗
我想编写一个侦听器来检测表上的 DML 更改并执行一些操作。此侦听器不能嵌入到应用程序中,它单独运行。
我想让应用程序写入黑洞表,我会从二进制日志文件中检测到变化。
但是在文档中,我发现启用二进制日志记录会稍微降低 mysql 的性能。这就是为什么我想知道有没有一种方法可以让 mysql master 记录与特定表相关的更改。
谢谢!
mysql - MySql 二进制日志记录 - 自动增量问题
我的情况有点奇怪。我们目前有两个数据库,我们的 STAGE DB 和我们的 LIVE DB。两个数据库具有相同的架构,但数据略有不同。
所以一切工作的方式是,处理大型数据集并将结果更新到 STAGE DB。这个数据库在一个封闭的网络上,没有外部访问(安全问题,不要问)。此数据库已启用二进制日志记录,因此为了使这些更改在 LIVE DB 上可用,需要获取更改的转储文件,然后在 LIVE DB 上手动运行。
这一切正常,直到在 LIVE DB 上对具有 AUTO_INCREMENT 键列的表进行更改。因此,当我们去应用更改时,列 id 值已经存在。
我的问题是,有没有办法解决这个问题?是否有一些选项允许只插入而不需要相同的键?
mysql - 如何防止mysql创建mysql-bin.00000x文件?
我看到 mysql 创建了很多名为 mysql-bin.000001、mysql-bin.000002、mysql-bin.000003 等的文件。我在这里发现我的 log_bin 设置为“ON”。我想知道如何将其设置为关闭,以及这样做是否明智。我试过这个:set log_bin = "OFF";
但结果是这样的:ERROR 1238 (HY000): Variable 'log_bin' is a read only variable
在多个网站上,我找到了这个解决方案并在“/etc/my.cnf”中进行了更改:
禁用 MySQL binlogging
如果您不进行复制,则可以通过更改 my.ini 或 my.cnf 文件来禁用 binlogging。打开你的 my.ini 或 /etc/my.cnf (/etc/mysql/my.cnf),输入:
# vi /etc/my.cnf
找到一行“log_bin”并删除或注释它,如下所示:
# log_bin = /var/log/mysql/mysql-bin.log
您还需要删除或注释以下行:
# expire_logs_days = 10
# max_binlog_size = 100M
关闭并保存文件。
最后重启mysql服务器:
# service mysql restart
但这似乎根本没有任何影响。据我所知,这些文件主要用于复制,但我没有复制任何东西。
mysql - 在 MySQL 中使用触发器获取用户信息
正如标题所说,我想获取在 MySQL 中执行 SQL 语句的用户的一些信息。例如,如果某个 SQL 语句由一个名为“work”的用户执行,我如何才能在 MySQL 中实际执行之前获取用户名和主机与触发器。
实际上,我只是想监控 MySQL 中的一些操作,例如 DELETE。而且我不确定binlog是否可以记录执行SQL语句的用户名和主机。
mysql - 如何读取 mysql binlog
我想编写一个服务来跟踪 mysql bin 日志以获取有关数据库更改的通知。
是否有一个开源库可以读取和解析 ROW 格式的 mysql bin 日志?
mysql - 如何使 mysql semi-repl 不超时?
从 MySQL 5.5 开始,我们有了semisync ,但是当接收到半同步ACK超时时,semisync 会关闭。那么,有什么办法不超时?
我找到了 mariadb rpl_semi_sync_master_timeout 的变量。也在mysql中
因此,如果我将其设置为 1844674407370955161,我可以使半同步不超时。
mysql - 我可以使用来自主服务器的 mysql binlog 作为从服务器的中继日志吗?
我有以下 Mysql 复制模式:
A(主)->B(从/主)->C(从)
- A 写入 binlog
- B读取A的binlog应用relaylog写入自己的binlog
- C 从 B 中读取并应用。
如果复制由于某种原因(A->B)被破坏,我可以复制A的binlog,找到B最后执行的语句对应的位置并重放它。bin/relay 日志中的事务/语句的顺序在所有复制链中是否相同?(复制使用一个线程,所以它可能是相同的顺序。)
更新:我应该问这样的问题:“binlog 中的语句/事务的顺序在所有复制链中是否相同?我们可以在任何主机上重放任何日志并将任何从属设备(c)重新指向主设备(A)”似乎答案是是的”。但尚未发布官方确认或文档(源代码)链接。
UPDATE2:从官方文档到innodb_support_xa:
为 XA 事务中的两阶段提交启用 InnoDB 支持,从而为事务准备带来额外的磁盘刷新。XA 机制在内部使用,对于任何打开二进制日志并接受来自多个线程的数据更改的服务器来说都是必不可少的。如果禁用 innodb_support_xa,事务可以以与实时数据库提交它们的顺序不同的顺序写入二进制日志,当二进制日志在灾难恢复或复制从属上重放时,这可能会产生不同的数据。
mysql - 当您不知道第一个文件名时如何检索所有远程 mysql 二进制日志文件(由于远程服务器上的轮换)
非常感谢任何指导
我们想使用 mysqlbinlog 从远程服务器下载二进制日志(必须是 mysqlbinlog 而不是 scp,因为这是我们打开的唯一协议)
远程服务器设置为在 2 天后轮换日志,因为每 24 小时进行一次完整备份。
当二进制日志首次启动时,文件名是 mysql-bin.000001 并且 crontab 命令运行良好:
mysqlbinlog mysql-bin.000001 --ssl=0 --read-from-remote-server --host=xxxxxxxxxxxx --user=xxxxxxx --password=xxxxxxxx --raw --to-last-log --result-file =/opt/tb_mysql_backup_binary_logs/生产/
现在,由于日志轮换,日志文件名现在从 ...bin.00008 开始,该命令当然会失败。我知道我们可以手动输入 mysql 并运行 SHOW BINARY LOGS
但是无论如何我们可以“在不知道名字的情况下询问从第一个到最新的所有日志文件”
干杯套件
amazon-web-services - How to make data Sync from AWS RDS to another AWS RDS with different schema
I have Mysql RDS1 and another Mysql RDS2 where the schema is different.
I need the any changes on RDS1 to be synced immediately to Mysql RDS2.
where the data changes due to create, insert, update and delete
Both RDS1 and RDS2 is alive and integrated to diff app.
I referred: https://aws.amazon.com/blogs/aws/fast-easy-free-sync-rds-to-redshift/
but still searching for a proper solution for my problem.
Can anybody help?