我已经彻底搜索了谷歌一个确定的解决方案或一组步骤来解决这个问题,但似乎没有很多高质量的结果,我没有发现堆栈溢出的问题.我们正在尝试使用一个slave来设置MySQL复制.从属似乎正在复制,然后发生以下错误:
无法解析中继日志事件条目.可能的原因是:主服务器的二进制日志已损坏(您可以通过在二进制日志上运行'mysqlbinlog'来检查),从服务器的中继日志已损坏(您可以通过在中继日志上运行'mysqlbinlog'来检查),网络问题,或者主服务器或从服务器的MySQL代码中的错误.如果要检查主站的二进制日志或从站的中继日志,您可以通过在此从站上发出"SHOW SLAVE STATUS"来了解其名称.
为了使大量的人从搜索中不可避免地偶然发现这个问题,如果有人回复提供了可能出错的概述以及采取了哪些步骤来解决这个问题,那将会很有帮助,但我会还提供了与我的特定情况相关的更多详细信息,希望有人可以帮我解决.
我们导入到从服务器以启动它的转储是在主服务器上使用以下命令创建的:
mysqldump --opt --allow-keywords -q -uroot -ppassword dbname > E:\Backups\dbname.sql
Run Code Online (Sandbox Code Playgroud)
执行此备份的脚本还会记录主服务器的当前二进制日志位置.然后,我们采取以下步骤在slave上启动复制:
1. STOP SLAVE;
2. DROP DATABASE dbname;
3. SOURCE dbname.sql;
(... waited a few hours for the 10gb dump to import)
4. RESET SLAVE;
5. CHANGE MASTER TO MASTER_HOST='[masterhostname]', MASTER_USER='[slaveusername]', MASTER_PASSWORD='[slaveuserpassword]', MASTER_PORT=[port], MASTER_LOG_FILE='[masterlogfile]', MASTER_LOG_POS=[masterlogposition];
6. START SLAVE;
Run Code Online (Sandbox Code Playgroud)
经过大约一天的复制工作正常,它在凌晨3:43再次失败.MySQL错误日志中出现的第一件事就是上面的错误.然后使用相同的时间戳出现另一个一般错误:
Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log '[masterlogfile]' position [masterlogpos] …
Run Code Online (Sandbox Code Playgroud) 我有以下Mysql复制模式:
A(主) - > B(主/从) - > C(从)
如果由于某种原因(A-> B)复制被破坏,我可以复制A的binlog,找到哪个位置对应于B最后执行的语句并重放它.所有复制链中bin/relay日志中的事务/语句顺序是否相同?(复制使用一个线程,因此它可能是相同的顺序.)
更新:我应该问:"所有复制链中binlogs中的语句/事务的顺序是否相同?我们可以重放任何主机上的任何日志并将任何从站(c)重新命名为master(A)"似乎答案是是的".但官方确认或文档(源代码)链接尚未发布.
UPDATE2:从官方文档到innodb_support_xa:
在XA事务中启用InnoDB对两阶段提交的支持,从而导致额外的磁盘刷新以进行事务准备.XA机制在内部使用,对于打开其二进制日志并接受来自多个线程的数据更改的任何服务器都是必不可少的.如果禁用innodb_support_xa,则事务可以按照与实时数据库提交的顺序不同的顺序写入二进制日志,这可以在灾难恢复或复制从服务器上重播二进制日志时生成不同的数据.
是否可以在mysql bin日志中查询特定查询?例如,假设我想知道在过去一小时内是否有人做了特定的查询(比如'更新tableX,其中userName ='bob'").我只是想查看最近是否运行了某个特定查询.....
在不讨论主/从复制的情况下,我只想自定义在使用SHOW BINLOG EVENTS
. information_schema
已经尝试在和中找到相同的信息,performance_schema
以便我可以SELECT
在正确的桌子上,但我无法找到它。
文档中的可用过滤器似乎不允许直接这样做。
我想要的是这样的:
-- /!\ invalid syntax /!\ --
SHOW BINLOG EVENTS WHERE Event_type = 'Query' AND Info LIKE 'UPDATE%'
Run Code Online (Sandbox Code Playgroud)
-- /!\ invalid syntax /!\ --
SHOW BINLOG EVENTS IN (SELECT Log_name FROM (SHOW BINARY LOGS))
Run Code Online (Sandbox Code Playgroud)
有办法实现这一点吗?
我当前使用该实用程序的解决方法(在MySQL Containermysqlbinlog
中运行):
cd /var/lib/mysql && while read p; do mysqlbinlog -d example_db -s /var/lib/mysql/$p | grep UPDATE; done <./mysql-bin.index; cd - > /dev/null
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用本教程在本地计算机上设置主从复制.
我接近结束但当我尝试mysqldump
使用时,--master-data=2
我得到一个错误
mysqldump: Error: Binlogging on server not active
Run Code Online (Sandbox Code Playgroud)
我遇到的所有解决方案都表示要添加log_bin = /var/log/mysql/mysql-bin.log
到my.cnf
我已经做了,它似乎并没有解决这个问题.
这是我的my.cnf
档案:
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = multi_admin
password = multipass
[mysqld2]
user = mysql
pid-file = /var/run/mysqld/mysqld_slave.pid
socket = /var/run/mysqld/mysqld_slave.sock
port = 3307
basedir = /usr
datadir = /var/lib/mysql_slave
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql …
Run Code Online (Sandbox Code Playgroud) 有没有办法从 mysql 控制台知道 bin 日志文件路径,因为我们可以通过使用知道它是打开还是关闭
Select * information_schema.GLOBAL_VARIABLES
where variable_name like '%log_bin%'.
Run Code Online (Sandbox Code Playgroud) 尝试重新启动 MySQL 服务器后,我遇到了此错误。
root@private:/# mysqld_safe
140618 03:56:53 mysqld_safe Can't log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect.
140618 03:56:53 mysqld_safe Logging to '/var/log/mysql/error.log'.
140618 03:56:53 mysqld_safe Starting mysqld daemon with databases from /mysql
140618 03:56:53 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Run Code Online (Sandbox Code Playgroud)
我遵循的方法(大多数是在互联网上找到的)将/var/log/mysql 的权限更改为 mysql user。但它不起作用。
drwxr-s--- 2 mysql mysql 4096 Jun 18 03:31 mysql/
Run Code Online (Sandbox Code Playgroud)
里面:
root@private:/var/log# ll mysql
total 12
drwxr-s--- 2 mysql …
Run Code Online (Sandbox Code Playgroud) 我想编写一个服务来跟踪 mysql bin 日志以获取有关数据库更改的通知。
有没有一个开源库可以读取并解析ROW格式的mysql bin日志?
我试图找出从 MySQL 中提取数据的最有效方法,将其转换并以近乎实时的方式加载到 Redshift。目前,我们有持续约 40 分钟的隔夜 ETL 过程(使用 Pentaho),我们希望将其替换为近乎实时的(小批量 1-5 分钟)。
我找到了几个用于从 MySQL 二进制日志(即http://maxwells-daemon.io)中提取数据的工具,带有连接到 AWS Kineses 的连接器,我计划使用 Apache Spark 或 AWS Lambda 转换和连接数据,然后将其写入 S3 并从那里COPY
命令将其写入 Redshift。
有人对此或类似解决方案有任何建议或建议吗?提前致谢!
mysqlbinlog amazon-redshift amazon-kinesis amazon-kinesis-firehose
更新操作上的更改流事件仅返回更改的文档,与 oplog 相同。我可以在更新之前获取文档(或一些更新的值)吗?
MySQL 基于行的 binlog 可以使用完整的binlog_row_image 来完成此操作。
我们正在使用Debezium从数据库中读取二进制日志到消息代理的流数据中的项目。对其进行更深入的研究,并试图更好地理解该工具,出现了两个与配置参数有关的问题:
database.history
什么?MemoryDatabaseHistory
和之间有什么区别FileDatabaseHistory
?谢谢!
在MySQL的官方文档中,对这些变量的描述存在很多混淆.
根据它,max_binlog_cache_size意味着,
如果事务需要超过这么多字节的内存,则服务器生成的Multi语句事务需要超过'max_binlog_cache_size'字节的存储错误.
max_binlog_cache_size仅设置事务高速缓存的大小
和binlog_cache_size意味着,
用于在事务期间保留对二进制日志的更改的缓存大小.
binlog_cache_size仅设置事务高速缓存的大小
在阅读文档时,我发现这两者之间没有区别.在文档中也有一些非常令人困惑的事情,比如
在MySQL 5.7中,max_binlog_cache_size会话的可见性与binlog_cache_size系统变量的会话可见性相匹配; 换句话说,更改其值只会影响在值更改后启动的新会话.
当我查询服务器变量时,它会显示两者.我有MySQL 5.6和MySQL 5.7.我需要知道的是,我应该考虑哪个变量并为哪个服务器配置.
用于MySQL 5.6的binlog_cache_size和用于MySQL 5.7的max_binlog_cache_size ??
还有其他与此相关的混淆变量max_binlog_stmt_cache_size和binlog_stmt_cache_size.
在/var/log/mysql
我发现有很多大文件
-rw-rw---- 1 mysql adm 104875724 Nov 16 2016 mysql-bin.002982
-rw-rw---- 1 mysql adm 104900467 Nov 16 2016 mysql-bin.002983
...............
-rw-rw---- 1 mysql adm 104919093 Nov 23 2016 mysql-bin.003118
-rw-rw---- 1 mysql adm 104857817 Nov 23 2016 mysql-bin.003119
-rw-rw---- 1 mysql adm 104858056 Nov 23 2016 mysql-bin.003120
-rw-rw---- 1 mysql adm 9184221 Nov 23 2016 mysql-bin.003121
-rw-rw---- 1 mysql adm 104907549 Nov 23 2016 mysql-bin.003122
......
-rw-rw---- 1 mysql adm 6272 Nov 25 2016 mysql-bin.index
Run Code Online (Sandbox Code Playgroud)
我可以删除它们吗?
更新
我不使用数据库复制
mysqlbinlog ×13
mysql ×11
binary-log ×1
binlog ×1
changestream ×1
debezium ×1
master-slave ×1
mongodb ×1
recovery ×1
replication ×1