Questions tagged «replication»

复制是共享任何级别信息的过程,以确保冗余硬件/软件资源之间的一致性,从而提高可靠性,容错性和可访问性

1
如何(安全地)终止MongoDB中长期运行的操作?
有时,操作会在MongoDB中失控,最终可能会运行数百秒,并影响性能,直到操作被终止或完成。 发生这种情况时,我知道我killOp()有空,但是我如何只杀死目标的长时间运行的操作而又不杀死(例如)复制中涉及的长时间运行的操作(这很危险)?

1
重新启动MySQL复制从站
自设置以来,我第一次需要重新启动只读的MySQL复制从站。 我发现了这篇关于关闭从属服务器进行维护的文章(尽管他只是在描述停止mysql守护程序): 如何安全地重启您的MySQL从服务器 概括而言,该过程是: 在mysql客户中: STOP SLAVE; FLUSH TABLES; 从操作系统: /etc/init.d/mysql stop 我会在这时重启,然后在系统启动后: 在mysql客户端中(mysql守护程序配置为在启动时启动): START SLAVE; 这看起来正确吗?我还有什么需要做的吗?

6
如何在MS SQL Server上修复混乱的复制
我从备份还原了数据库。数据库使用复制发布到其他服务器。假设数据库还原会破坏复制,我尝试删除该复制并重新创建它(我们有一个脚本可以从头开始重新创建它)。我不确定自己所做的确切,但是现在它处于完全混乱的状态,我无法修复。 首先,我尝试摆脱订阅(在发布服务器上): EXEC sp_dropsubscription @publication = 'PublicationName', @article = N'all', @subscriber = 'SubscriberServerName' 这似乎有效。SELECT * FROM syssubscriptions没有显示结果。在订阅服务器上,SSMS> {SubscriberServer}>复制>本地订阅-订阅不存在。 因此,我尝试删除该出版物。SSMS> {服务器}>复制>本地发布> {PublicationName}>删除。这给出以下错误信息: Could not delete publication 'PublicationName'. Could not drop article. A subscription exists on it. Changed database context to 'DatabaseName'. (Microsoft SQL Server, Error: 14046) 好的,所以我尝试删除文章: EXEC sp_droparticle @publication = …


3
寻找有关如何将100多个客户数据库中的数据集成到集中式报告数据库中的建议
我是一家小型SaaS公司(约50名员工)的SQL开发人员(不是DBA或架构师)。我的任务是弄清楚如何: 从我们100多个OLTP数据库中卸载运营报告 允许这些报告针对来自多个客户端数据库的数据运行 定位我们的公司以在将来提供更多基于分析的解决方案 我已经阅读了许多有关各种技术的文章,例如事务复制(特别是多对一/中央订户模型),SQL服务代理,日志传送,变更跟踪(CT)和变更数据捕获(CDC),我的理解是这仅适用于企业),我不确定最好采用哪种方法。 我希望一些具有集成专业知识的人可能会遇到与我们类似的设置,并且能够指出成功的道路或将我引向一些有帮助的资源。 由于成本限制,我们的解决方案必须在SQL Server Standard Edition中运行。另外,解决方案必须合理,才能在我们的小型组织内提供支持/维护。 基本配置: 目前,我们有100多个单独的客户端数据库,大多数部署在我们数据中心的SQL服务器上,但是有些部署在我们数据中心内的客户端服务器上,我们可以远程访问这些数据库。这些都是SQL Server 2008 R2数据库,但是我们计划很快升级到SQL 2016。 我们使用数据库项目和dacpacs来确保所有要集成的客户端数据库中的架构都是相同的。但是,由于我们不强制所有客户端同时升级到新版本,因此升级之间可能会存在一些架构差异。如果客户端A在软件版本1.0上并且客户端B在软件版本1.1上,则解决方案必须足够灵活,以免损坏。 当前,操作报告直接从每个客户端的OLTP数据库运行。如果我们不卸载应用程序,则会担心它会对应用程序性能产生影响。 高级要求: 我们的客户是医院无菌处理部门(SPD),他们需要有关其到目前为止所处理的内容,库存在何处等的最新报告。SPD每天(包括周末和节假日)的过程库存。由于这项工作的主要目的之一是更好地支持运营报告,因此我们希望数据尽可能接近实时,以继续满足客户的需求。 目前,我们在单独的数据库中有一些SPD,这些数据库实际上是同一医院系统的一部分。这些客户希望能够针对其系统中的所有SPD进行报告。 从战略上讲,我们希望能够轻松汇总所有客户的数据以支持我们的内部分析计划。我们的期望是,我们将能够使用收集到的运营数据作为数据集市/仓库的来源。 思念至今: 事务复制似乎将提供最“实时”的解决方案。我发现此响应特别有用,但我担心由于存在架构差异的可能性,因此对我们不起作用:SQL Server多对一复制 鉴于查询活动时日志无法还原,日志传送听起来并不理想。我要么将所有人踢出去,以便可以恢复日志,否则数据将变得过时。我不清楚该方法是否可用于集中多个数据库中的数据,因为每个出厂的日志仅适用于它来自的单个数据库。 使用SQL Service Broker,如果队列无法跟上要处理的消息数量,则延迟可能是不可预测的。 CT仅为每个表行标识一个版本。延迟时间取决于我们对每个数据库处理诸如SSIS包之类的东西以检索数据并将其插入中央存储库的速度。 我们是否需要考虑分别复制每个数据库,然后使用某种数据虚拟化技术来组合来自各种复制源的数据? 您愿意提供的任何建议或指示将不胜感激。

3
非IT人员的数据库登台环境
我正在向我的IT部门建议一个数据库登台环境。这个想法是,像我这样的非IT人员(公共工程数据分析师)将有一个测试解决方案的地方,然后自己在实际环境中实施解决方案,或者在需要时要求IT部门实施解决方案。有几种原因/场景可以使该环境受益: 在我们的实时数据库环境(,等)中create table,我具有一些基本的数据库特权create view。我大约每周进行一次模式更改,但是在实时环境中测试和实现这些更改似乎很疯狂。数据库上有无数的依赖关系,因此,如果出现问题,可能会造成灾难性的后果。我宁愿提前在单独的环境中进行测试。 我没有一些更高级的特权,如create trigger或create function在现场数据库。很好,但是我确实有一些可以通过触发器和/或函数解决的问题。我计划建议在登台环境中向我授予这些权限,以便我可以开发和测试一些想法,如果它们起作用,则建议IT在实时环境中实施它们。 通常,我的IT部门没有时间或资源为我开发解决方案。真的就是这么简单。因此,如果我可以自己做腿部工作,那么我的问题就更有可能得到解决。 “非IT人员的暂存环境”对我来说似乎是一种足够合理的方法,但是老实说,我只是想出了办法。我不知道在IT /数据库世界中通常是如何完成的。 是否有适合这种情况的已建立的IT /数据库实践?(为非IT人员提议数据库登台环境时,我走的路正确吗?)

1
从备份初始化事务复制
在设置要复制的发布时允许使用“从备份初始化”。我们已经创建复制数据库已有好几年了,并且始终从backkup进行初始化,但是从未设置过该标志(几天前我们才第一次注意到它)。复制当然一直都没有问题。 我发现有很多命中说明需要使用此方法,但没有一个可以解释原因。 有谁知道这实际上是什么?从我的角度来看,这似乎没有必要,但我认为我必须缺少一些东西。

4
如何将MySQL先前的从属服务器更改为主服务器并删除从属状态信息?
我有一个主服务器->从服务器配置,其中主服务器出现故障。我已经能够将旧的从属设备重置为主机,而将旧的从属设备重置为从属设备。精细。 我似乎无法做的是删除旧的从属设备(现在是新的主设备)上的主设备信息。我知道了: mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Master_Host: 10.1.2.101 Master_User: replicationSlave Master_Port: 3306 ... Slave_IO_Running: No Slave_SQL_Running: No 我已经阅读了很多MySQL文档,但仍然没有找到从新主服务器清除从机信息的方法。我试过了: RESET SLAVE这似乎无法清除这些设置。[[实际上,它确实删除了master.info文件,但没有删除内存设置。见下文。]] CHANGE MASTER TO MASTER_HOST='' 由于最近已弃用,因此只会产生错误。 检查my.cnf哪些没有主信息,因为它们是通过编程添加的。 RESET MASTER因为一些mysql文档推荐了它。那只会重置bin日志。 在内部MySQL表中四处查看,是否可以找到要清除的字段。 在MySQL〜5.5.9上执行此操作的正确方法是什么?谢谢你的帮助。 编辑: 因此,事实证明,RESET SLAVE该master.info文件将隐式删除@RolandoMySQLDBA。但是,在删除从属信息之前,您仍然需要重新启动服务器。 有什么方法可以删除此从属信息而不必重新启动mysqld吗?

1
在繁忙的主从复制系统上恢复单个mysql数据库
在繁忙的复制系统中寻找一种策略或工具来将单个数据库恢复到某个时间点。 我有12个数据库以主从复制配置在2个MySQL 5.0.77服务器上运行。每天对只读从属服务器进行一次完全转储,并且有可用的增量SQL转储,这些备份不在现场并监视复制状态。 编辑:表是InnoDB和myISAM的混合,因此引擎特定的解决方案不可用。 因此,考虑到主服务器完全故障,我可以中断复制并升级从服务器,也可以选择重建新服务器并从越过FULL备份进行配置,然后应用每小时从从服务器获取的差异。 但是,我担心如何处理部分故障或单个数据库的故障。我可以想到两种可能的情况; 例如,数据库7损坏,继续处理一些请求,直到有人注意到它已损坏,或者来自日志文件的警报... 某些查询,例如放置数据库,放置表,“更新位置...”类型的查询,将使单个数据库或其中的某些子集失效。 目前,我有一堆完整的转储文件,例如FULL- $ DATE-all-databases.sql.gz文件,以及可以应用于DIFF- $ DATE-all-databases.sql.gz的差异文件 要将数据库7恢复到某个时间点,将需要通过FULL和DIFF文件进行grep,并手动应用该sql。 为了使能够恢复到以前的DIFF转储到master数据库之一的状态,我应该如何进行? 我是否需要备份到单个数据库文件,即 mysqldump --databases "database1" | gzip > database1.sql.gz mysqldump --databases "database2" | gzip > database2.sql.gz mysqldump --databases "database3" | gzip > database3.sql.gz 而不是.. mysqldump --master-data --lock--all-databases --all-databases | gzip > all-databases.sql.gz 如果我要查找单独的mysqldump文件,那么主数据二进制日志会如何处理,我甚至应该为主服务器恢复转储设置--master-data吗?



4
错误1236-“在二进制日志索引文件中找不到第一个日志文件名”
我们的设置: 大师:MariaDB 10.0.21 从站:MariaDB 10.0.17 复制工作一直很好,直到最近,此时必须从转储中还原从数据库。我执行了所有必要的步骤:转储主数据库,将转储转移到从数据库,删除旧数据库,执行转储以还原数据库,执行适当的CHANGE MASTER命令,最后执行START SLAVE。 我收到错误: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file' 从属服务器需要主服务器提供的第一个日志文件是mysql-bin.000289。我可以看到这存在于主服务器上: 我还可以看到,主数据库上的二进制日志索引似乎包含此日志文件的条目: 复制仍然无法正常进行-我一直收到相同的错误。我没有主意-接下来应该检查什么? 更新:SHOW SLAVE STATUS\G根据要求输出: MariaDB [(none)]> SHOW SLAVE STATUS\G -------------- SHOW SLAVE STATUS -------------- *************************** …

2
将某些表从一个postgres数据库复制到另一个数据库
我遇到以下情况:我有三台运行postgresql数据库的机器。一台计算机保存客户帐户信息(称为此计算机C),其他两台计算机保存客户日志记录信息(称为这些L1和L2)。拆分的原因是将负载分散到多台计算机上(因此某些客户端将日志记录信息发送到L1,一些客户端将日志信息发送到L2 ...,也许还有一些时间将L3,L4等)。 检索日志记录信息时,原则上,我希望能够在Ln上的日志记录表和C上的客户帐户表之间进行JOIN。实际上,我无法像这样进行JOIN(即使我可以,以避免加载C)。 我的想法是将C上的表复制到L1,L2,...中的每个表上,以便进行连接。就C中的表而言,C是主机,而L1,L2,...是从机。但是对于L1,L2上的其他表,...这些机器是主计算机。它不完全是主-主复制,也不完全是主-从。 可以说服postgres(我正在运行9.1)复制做到这一点,或者如果没有,那么是否有其他软件包可以完成这项工作。在万不得已的情况下,我可以编写一些代码来定期同步表(我可以忍受一些延迟),但是最好不要这样做! 提前致谢。

2
MySQL复制:“ PRIMARY键的重复条目”
您能否帮助我了解为什么在完全重新同步后,在从属服务器上收到“ PRIMARY键的重复项”。 基本上,“ mysqldump”几乎整个晚上都在运行,然后还原过程花费了几个小时,所以当我启动从站时,它比主站晚了约63874秒。 从属服务器是只读的(read_only),并且在重新同步过程中没有任何写操作,因此我不明白为什么会有重复的键。 二进制日志格式在主数据库上设置为MIXED。 用于备份数据库的命令: mysqldump --opt --single-transaction -Q --master-data=2 db | bzip2 -cz > db.sql.bz2 从属服务器仅使用以下选项从主控服务器(db-> db_backup)复制一个数据库: replicate-wild-do-table = db_backup.% replicate-rewrite-db = db->db_backup


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.