我一直在使用mysql进行开发。我不使用复制,但我想我在我以前的一台计算机上启用了二进制日志一段时间,并且我在不知不觉中积累了数百个二进制日志文件。
我现在正在使用 Linux,实际上我需要开始使用二进制日志记录。当我尝试在 my.cnf 中启用二进制日志时 - mysql 服务器没有启动,这是我在错误日志中发现的内容:
1 110314 14:39:40 [Note] Plugin 'FEDERATED' is disabled.
2 110314 14:39:40 InnoDB: Started; log sequence number 0 36669358
3 ^G/usr/sbin/mysqld: File '.\mysql-bin.000179' not found (Errcode: 2)
4 110314 14:39:40 [ERROR] Failed to open log (file '.\mysql-bin.000179', errno 2)
5 110314 14:39:40 [ERROR] Could not open log file
6 110314 14:39:40 [ERROR] Can't init tc log
7 110314 14:39:40 [ERROR] Aborting
8
9 110314 14:39:40 InnoDB: Starting shutdown.
Run Code Online (Sandbox Code Playgroud)
所以 - 我假设 - 我只需要删除旧的二进制日志 …
我在两台服务器之间进行了一个非常简单的 mysql master->slave 设置。问题是,复制是异步的,这可能会导致问题(即使在低延迟链接上),如果主服务器在 COMMIT 之后崩溃,然后从属服务器的复制线程能够获取最后一个 bin 日志。
无论如何要强制 mysql 进行同步提交,以便在 mysql->slave 关系中保证数据一致性?
MySQL - 如果从站离线几个小时并重新上线,它会自动从主站捕获数据吗?
我已经对此进行了大量阅读,但我仍然不确定自己的立场。
我是否会在两个 Master 都接收写入时发生数据库冲突(然后损坏)?
既然 MySQL(我在 Debian 和 Ubuntu 上使用 5.1)有自动增量运行,这是否可以避免,它是否适合生产?
我看过 MMM 只允许一个 Master 进行写入,但它有它自己的问题,我的拓扑结构真的适合让两个 Master 都接收写入。
我不确定我是否相信这一点:http : //www.neocodesoftware.com/replication/
任何 MySQL 专家都可以帮忙吗?非常感谢。
- 编辑 -
我读过的东西或我问过的人中有一半说即使使用自动增量你仍然会受到损坏......而另一半说你不会!运行繁忙网站的人可以澄清一下吗?
我有一个需要大量写入的应用程序。该应用程序最适合与调查相比 - 客户创建自定义问题并将其保存到数据库中。大多数请求来自提交这些表单的用户。稍后,我们的客户会对这些提交进行复杂的报告和图表。
确保我们的应用程序服务器 (PHP) 和 Web 服务器 (Nginx) 扩展非常容易,麻烦的是将数据库服务器扩展到多个服务器上。
许多应用程序的读取量更大,因此通常您会有一个主从复制设置,其中所有写入都发送到单个主服务器,但读取分配给从服务器。对我们来说这是行不通的,因为我们大部分时间都在写。
我已经看到提到主-主设置,但这通常会遇到自动递增主键的障碍。解决方案通常是让一台服务器处理奇数,而另一台处理偶数。我想避免这种情况。
在一些类似的问题上,我看到提到 Tungsten Replicator 以及它如何为您提供更多的复制灵活性。这对我有帮助吗?这会给我带来什么 MySQL 的内置复制无法提供的好处?
还有 MySQL Cluster,但这通常会遇到非常大的数据库和复杂查询(连接)的问题。我需要能够运行复杂的报告,所以这可能对我不起作用。
我正在寻找冗余、自动故障转移、分发请求和数据完整性。
是否有其他 RDMS 提供适用于 Web 的更好解决方案?
我有三台服务器,Server X、Y 和 Z。
我在 X 上有主要的 mysql 数据库(innodb DB)。
现在我已经创建了从 X 到 Y 的主从。这里一切正常。
现在我将 Y 设置为 Z 的主站。
当我在 Z(第三台服务器)上显示从站状态时
显示从属状态\G Slave_IO_State:等待主机发送事件 ... Slave_IO_Running: 是 Slave_SQL_Running: 是 ... Seconds_Behind_Master: 0
但是数据没有同步,Y 和 Z 之间没有任何移动。知道是什么原因造成的吗?
在服务器 Y 上的 my.cnf 中
编辑
,我有以下配置:
日志从站更新=ON 日志-bin=mysql-bin
但在像“%slave%”这样的显示变量中,我有
显示像“%slave%”这样的变量; +---------------------------+--------+ | 变量名 | 价值 | +---------------------------+--------+ | init_slave | | | log_slave_updates | 关闭 | | slave_compressed_protocol | 关闭 | | slave_exec_mode | 严格 | | slave_load_tmpdir | /tmp | | slave_net_timeout …
mysql 数据库有大约 2TB 的数据。
我有一个主从复制运行。使用数据库的应用程序仅对 2 个从站之一执行读取 (SELECT) 查询,并在主站上写入 (DELETE/INSERT/UPDATE) 查询。应用程序的读取方式多于写入。
如果读取(SELECT)查询有问题,我们可以添加另一个从数据库并告诉应用程序,还有另一个salve。所以它可以很好地扩展......
目前,由于写入,master 正在运行大约 40% 的磁盘 io。
所以我在考虑如何在未来扩展数据库。因为总有一天主人会超负荷。
那里有什么解决办法?
也许是mysql集群?如果是这样,将数据库切换到 ndb 是否有任何陷阱或限制?
非常感谢提前... :)
我有一个奴隶,大约几个月前出现错误并且远远落后于主人。我修复了错误,现在正在追赶大师,但进展非常缓慢。它以 1.3 倍的实时速度运行。当这些写入第一次发生时,我使用的数据库资源不到 10%,因此服务器的速度应该不是问题。
有什么设置可以切换来帮助slave赶上master吗?
我正在运行一个 4 服务器的 MySql 主-主集群。(2 个服务器版本 5.1 和 2 个服务器版本 5.5)
在检查从站状态时,我看到 secondary_behind_master 为 0,半秒后我看到它跳到 2000,等等。
它可能是什么?我该如何调试它?
复制拓扑:1 -> 2 -> 3 -> 4 -> 1
更新
看来服务器 3 的 SBM 为 0,而其他服务器则上下跳跃。这有帮助吗?
UPDATE 2 看来问题出在服务器1上。在服务器4中创建测试表时,检查服务器1中的中继日志显示创建语句已立即复制到服务器1中的中继日志中,但未创建表。看起来服务器正忙于做某事,并且服务器获取语句和执行语句之间存在巨大的延迟。
更新 3 服务器 4 上也发生同样的情况。
更新 4 好吧,我发现了这个问题。服务器 1、2 和 4 的复制线程中卡住了“无效的查询缓存条目(表)”。禁用缓存后,服务器 4 正常,但 1 和 2 仍然存在此问题。
它看起来像一个常见的错误: http://bugs.mysql.com/bug.php? id=60696
如果有人知道如何解决它,我会很高兴听到
配置单主多从服务器时出现此错误。
Last_IO_Error : 从二进制日志读取数据时,主服务器出现致命错误 1236 : ' 与该从服务器具有相同 server_uuid/server_id 的从服务器已连接到主服务器;第一个事件“mysql-bin.xxxx”在 xx 处从 /var/lib/mysql/mysql-bin.xxx' 处读取,最后一个字节从“/var/lib/mysql/mysql-bin.xxx”处读取xxx。' 一名奴隶的截图