我们有一个位于不同数据中心的vanilla master 和slave MySQL 设置,以及与master 位于同一数据中心的另一个slave。
数据中心之间的带宽相当高(在我们所做的网络基准测试中,我们可以达到 15MB/秒),但存在延迟,约为 28 毫秒。无论如何它都不高,但它比同一数据中心的亚秒延迟要高得多。
有时,我们会在删除从站时遇到严重的滞后(2000 秒甚至更多),而本地从站保持最新。在查看滞后的远程slave时,SQL线程通常会花时间等待IO线程更新中继日志。主人同时显示“等待网络”或类似的东西。
所以这意味着它是网络,但在发生这种情况时我们仍然有免费带宽。
我的问题是:数据中心之间的延迟会影响复制的性能吗?从属 io 线程是否只是流式传输事件直到主节点停止发送它们,还是在事件之间以某种方式池主节点?
我有一个 SQL Server 2008 R2 服务器,其中包含一堆当前在兼容级别 90 (2005) 下运行的已发布数据库。
订阅数据库也是 SQL Server 2008 R2,但是目标数据库设置为兼容性级别 100,并且复制工作正常。
如果我更改已发布数据库的兼容性级别,它会以任何方式影响复制,还是只是重新初始化所有订阅并重新启动复制的情况?
我怀疑更改已发布的数据库兼容性级别可能会稍微改变复制存储过程的功能,但我不是 100% 确定。
是这种情况吗?
有时,MongoDB 中的操作会失控,最终可能会运行数百秒,并影响性能,直到它们被终止或完成。
发生这种情况时,我知道我可以killOp()使用,但是如何仅终止有针对性的长时间运行的操作而不终止(例如)复制中涉及的长时间运行的操作(这可能很危险)?
Slony-I还有用吗,如果有,它是什么?为了澄清起见,从 9.0 Postgresql 开始支持内置流复制。
我想将 MySQL 数据库的内容复制到 MS SQL Server 2008 数据库。
这可能吗?任何人都可以概述实现这一目标所需的步骤吗?
谢谢。
寻找一种策略或工具来处理在繁忙的复制系统中将单个数据库恢复到某个时间点的问题。
我有 12 个数据库在主从复制配置中的 2 个 MySQL 5.0.77 服务器上运行。每天对只读从站进行完整转储,并且有可用的增量 SQL 转储,这些备份是异地备份,复制状态受到监控。
编辑:表是 InnoDB 和 myISAM 的混合体,因此引擎特定的解决方案不可用。
因此,如果主服务器完全故障,我可以中断复制并提升从服务器,我还可以选择重建新服务器并从越位完整备份进行配置,然后应用从从服务器每小时获取的差异。
但是我担心如何处理部分故障或单个数据库的故障。我可以想到 2 个很有可能的场景;
目前我有一堆完整的转储作为 FULL-$DATE-all-databases.sql.gz 文件,以及可以应用于完整转储的差异作为 DIFF-$DATE-all-databases.sql.gz
要将数据库 7 恢复到某个时间点,需要通过 FULL 和 DIFF 文件进行 grep,并手动应用该 sql。
我应该如何继续以便能够恢复到以前的 DIFF 转储之一到主数据库?
我需要备份到单个数据库文件,即
mysqldump --databases "database1" | gzip > database1.sql.gz
mysqldump --databases "database2" | gzip > database2.sql.gz
mysqldump --databases "database3" | gzip > database3.sql.gz
Run Code Online (Sandbox Code Playgroud)
而不是..
mysqldump --master-data --lock--all-databases --all-databases | gzip > all-databases.sql.gz
Run Code Online (Sandbox Code Playgroud)
如果我使用单独的 mysqldump 文件,主数据二进制日志会发生什么,我什至应该为主服务器恢复转储设置 --master-data 吗?
为复制设置发布以允许从备份初始化时有一个选项。我们多年来一直在创建复制数据库,并且总是从备份进行初始化,但从未设置过这个标志(我们几天前才第一次注意到它)。复制一直都没有问题。
我发现很多点击说明需要使用它,但没有说明原因。
有没有人了解这实际上是做什么的?从我的角度来看,这似乎没有必要,但我想我必须错过一些东西。
replication sql-server sql-server-2008-r2 transactional-replication
我正在使用 MySql 5.5。是否可以在expire_logs_days不重新启动服务器的情况下进行更改并使更改生效?
我正在向我的 IT 部门提议一个数据库暂存环境。这个想法是像我这样的非 IT 人员(公共工程数据分析师)可以有一个地方来测试解决方案,然后自己在实际环境中实施它们,或者在需要时要求 IT 实施它们。这种环境有益于以下几个原因/场景:
create table,create view等等)。我大约每周更改一次架构,但在实时环境中测试和实施这些更改对我来说似乎很疯狂。对数据库的依赖数不胜数,因此如果出现问题,可能是灾难性的。我更愿意在单独的环境中提前测试。create trigger或create function在实时数据库中。这很好,但我确实有一些可以通过触发器和/或函数解决的问题。我计划提议在临时环境中授予我这些权限,以便我可以开发和测试一些想法,如果它们有效,则建议 IT 在实时环境中实施它们。“非 IT 人员的临时环境”对我来说似乎是一个足够好的方法,但老实说,我只是提出了这个想法。我不知道这在 IT/数据库世界中通常是如何完成的。
是否有适合这种情况的既定 IT/数据库实践?(在为非 IT 人员提议数据库暂存环境时,我是否走在正确的轨道上?)
replication ×10
mysql ×4
postgresql ×2
sql-server ×2
checksum ×1
innodb ×1
mongodb ×1
myisam ×1
mysql-5.5 ×1
mysqldump ×1
oracle ×1
permissions ×1
testing ×1