Articles of 复制

远程mysql复制 – 很多tcp / ip重新连接

我们正在远程执行非现场mysql复制和有限的带宽 – 大约200ms和大约70KB / s(最大)的延迟。 复制工作是零星的,转移几十千字节,然后重新连接。 我已经将问题追溯到客户机上的mysqld守护进程的错误tcp / ip行为 – 当单个tcp / ip数据包丢失时,整个ACK /重传序列无法恢复连接,并在某个时刻服务器发出FIN。 值得注意的是,来自同一台服务器的scp可以正常工作(即使偶尔会丢失数据包)。 从客户端机器到服务器的Mysql客户端也能够正常工作,偶尔丢包不会中断连接。 服务器和客户端都有相同版本的mysql服务器: mysql> SHOW VARIABLES LIKE '%version%'; +————————-+———————+ | Variable_name | Value | +————————-+———————+ | protocol_version | 10 | | version | 5.0.67-0ubuntu6-log | | version_comment | (Ubuntu) | | version_compile_machine | x86_64 | | version_compile_os | debian-linux-gnu | +————————-+———————+ […]

每秒处理数百次请求的大量写入应用程序的系统需求

注意:我是一名自学成才的PHP开发人员,他几乎没有任何pipe理Web和数据库服务器的经验。 我即将为一个非常大的用户群编写一个基于Web的考勤系统。 我希望大约有1000到1500个用户同时login,每10秒钟至less发一个请求,每天3次,每次30分钟。 因此,每秒100个请求或者最差的1000个请求(每个请求的平均时间为16个并发请求),但是由于用户发出这些请求的时间很短,所以它可能会更高。 )。 我期望两种types的交易, local (不是指localnetworking)和foreign交易。 local交易基本上在本地下载用户数据并caching1到2周。 出席equests可能只有两个数字string: userid和eventid 。 foreign交易是为了不属于当地的人出席。 这将传递以下数据:( (numeric) locality_id , (string) full_name 。 这两个请求都是在Ajax中完成的,所以没有包含HTML数据,只有JSON。 这两种请求都至less需要来自服务器的单个数字响应。 我认为local和foreign交易的频率会有50-50倍的差距,但是这些交易的规模只有几个字节的差异。 截至此刻, userid只能达到6位数, eventid位也是4至5位整数。 我期望我的users表至less有400k行, event表有多达10k行,一个locality表至less有1500行,而我的主要出勤表增加了400k行(根据用户数量在users表中)每周3天一天(每周120万行)。 对我来说,这听起来很大。 但是这真的很大吗? 或者这可以由一个单一的服务器处理(不知道服务器的规格,因为我可能会利用VPS从ServInt或其他人)? 我试图读取多个服务器上的设置Heatbeat , DRBD ,主从设置。 但是我想知道他们是否真的有必要。 users表每周将增加约500个1k行。 如果这不能由一台服务器来处理,那么如果我select一个MySQL复制拓扑,那么这种情况下最好的设置是什么? 对不起,如果我听起来含糊或问题太广泛。 我只是不知道该问什么,或者你现在想知道什么。

如何解决导致试图在Postgresql中实现复制的“不完整启动数据包”日志消息的问题?

我有两台运行Ubuntu 13.04和PostgreSQL 9.2的云服务器。 我主要使用这个博客文章来帮助我设置。 但是,要执行初始数据库转储到奴隶我使用pg_start_backup/pg_stop_backup战略在这个其他的博客文章中使用 。 我已经阅读了docs和postgres wiki。 我碰到了几个我能解决的问题,但是我无法摆脱这个糟糕的“数据库正在启动”的失败。 我不确定是否看到: cp: cannot stat /var/lib/postgresql/9.2/archive/00000001000000000000003A': No such file or directory 在consistent recover state reached之后是正常的还是第一个出现问题的迹象。 我the database is starting up上the database is starting up的searchthe database is starting up , incomplete startup packet告诉我有什么东西在向从站发送空TCP数据包。 唯一的事情,即使知道奴隶是主人,所以我不知道为什么它发送空包… 有没有人与此合作,并有一个想法可能会出错? postgreslogin从站看起来是这样的: 2013-08-26 13:01:38 CDT LOG: entering standby mode 2013-08-26 13:01:38 CDT LOG: restored […]

MySQL复制上的延迟大(Relay_Log_Pos和Exec_Master_Log_Pos不增加)

今天我的两个奴隶(一个MySQL 5.1和第二个MariaDB 5.5,主人是MySQL 5.1)开始滞后。 类似的情况经常会出现延迟,甚至10000秒,因为从属的硬件configuration比较差,但现在我非常强调。 两个服务器上的滞销仍在上升,在这一点上,它在主服务器之后25K秒。 于是我开始调查出了什么问题。 通过主日志和奴隶mysql日志没有给我什么。 服务器在Centos 5上,Mariadb在Centos 6上。 这是从MariaDB从站状态输出的: MariaDB [(none)]>显示从站状态\ G *************************** 1. row ******************** ******* Slave_IO_State:等待主控发送事件 Master_Host:masterserevr Master_User:slaveuser Master_Port:3306 Connect_Retry:60 Master_Log_File:mysqld-bin.006778 Read_Master_Log_Pos:401041447 Relay_Log_File:relay-bin.020343 Relay_Log_Pos:14867924 Relay_Master_Log_File:mysqld-bin.006777 Slave_IO_Running:是的 Slave_SQL_Running:是的 Replicate_Do_DB: Replicate_Ignore_DB:ses,phar Replicate_Do_Table: Replicate_Ignore_Table:portal.aaa_jm_tmp,portal.newsletter Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno:0 Last_Error: Skip_Counter:0 Exec_Master_Log_Pos:14867639 Relay_Log_Space:1474785535 Until_Condition:无 Until_Log_File: Until_Log_Pos:0 Master_SSL_Allowed:否 Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master:26484 Master_SSL_Verify_Server_Cert:否 Last_IO_Errno:0 […]

只读域控制器在可写域控制器中断后不复制

我有一个RO域控制器,与另一个站点上的可写DC复制。 另外一周,由于在该地点进行维护,可写入的DC出了大约2天。 在此之后,RODC不再复制可写DC。 我得到的错误是1722,RPC服务器不可用。 我确认RPC服务在两个DC上运行。 我怀疑问题是由DNS引起的 – DNS事件日志包含以下内容: DNS服务器遇到来自Active Directory的严重错误。 检查Active Directory是否正常工作。 扩展的错误debugging信息(可能为空)是“000006BA:SvcErr:DSID-03210BEB,问题5012(DIR_ERROR),数据0”。 事件数据包含错误。 我也收到以下错误: 知识一致性检查器(KCC)无法形成完整的生成树networking拓扑。 因此,以下列表的站点无法从本地站点到达。 以下站点中的所有目录服务器都可以通过此传输复制目录分区,目前不可用。 没有足够的站点连接信息为KCC创build生成树复制拓扑。 或者,具有此目录分区的一个或多个目录服务器无法复制目录分区信息。 这可能是由于无法访问的目录服务器。 知识一致性检查器find本地只读目录服务的复制连接,但源服务器不响应或不复制。 目前的复制合作伙伴没有find一个新的合适的源服务器。 这个操作将被重试。 所以也许当可写DC被重新启动时,某种设置或configuration已经丢失 – 导致RODC无法复制。 DC可以很好地ping通对方。 任何帮助将非常感激! 谢谢!

文件数据备份,版本控制和复制的解决scheme

我们有越来越多的数据文件(.wav文件,图像文件等)是数据,即不是应用程序代码的一部分 – 用户上传和修改。 文件数量在1000年,总大小达到GB。 我们在世界各地(美国,欧盟,缅因州)拥有多个服务器集群。 在每个集群中,重要的是数据是在本地而不是从S3(数据文件不直接提供给客户端,而是由服务器处理)提供的。 我们希望在每个位置指定一个文件服务器,通过NFS将这些文件提供给同一个群集中的其他节点。 所以底线是: 通过应用程序上传的文件应该在S3上结束。 每个文件服务器节点都应该复制这些文件。 我们看到几个选项: 使用复制到S3进行备份/版本控制的origin文件服务器以及通过rsync (或类似)进行复制的节点。 同上,但奴隶复制S3使用类似S3工具或类似的东西。 不使用origin – 应用程序代码直接上传到S3 ,奴隶复制如上。 我们想知道哪个是推荐的解决scheme,哪些工具可用于复制部分(即在文件系统到文件系统类别以及在文件系统/ S3类别中)。

结合两个mysql复制日志文件

所以我使用一个mysql数据库的master-master复制和两者之间的负载均衡stream量。 这导致服务器A的所有交易都有一个二进制日志,服务器B的二进制日志只有它的交易。 每台服务器还有另一台服务器的二进制日志的复制日志。 问题是,如果我们有一个灾难(即一个错误的sql语句删除太多),并需要恢复最后一晚的备份,我们想恢复数据库使用二进制日志,直到坏的SQL声明。 但是我们有两个二进制日志,每个都包含所有运行的语句。 如何将两个文件合并为一个,同时确保每个文件中的条目保持按时间顺序排列? 在每个文件上运行mysqlbinlog后,我可以得到一个可读的sql文件。 每个文件都有时间戳,但是我需要找出一种方法来读取每个文件,并通过它们来确定下一个语句何时进入组合文件。 任何build议如何做到这一点?

远程Powershell脚本计划任务

我无法将Powershell脚本作为计划任务运行。 该脚本远程login到两台Hyper-V主机,查询复制状态并将结果通过电子邮件发回给我。 当我手动运行它时,脚本可以正常运行,无论是在Powershell ISE中,还是通过直接运行脚本,但是当我将它作为计划任务运行时,任务会停留在运行状态,我从来没有得到结果。 我已经检查了我的计划任务安装程序正常工作,只需将文本文件写入本地文件夹即可。 我也以同样的用户身份login,当我手动运行脚本的时候运行任务,所以没有,我错过了什么? 这是我的脚本: $array = @("host1.domain.com", "host2.domain.com") for ($i=0; $i -lt $array.length; $i++) { $pass = cat C:\Scripts\Creds.txt | convertto-securestring $mycred = new-object -typename System.Management.Automation.PSCredential -argumentlist "username",$pass Invoke-Command -ComputerName $array[$i] -Credential $mycred -FilePath "C:\Scripts\Check_VMReplication.ps1" } 该脚本在相同的文件夹中调用另一个脚本: $hstname = Hostname $Replication = Get-VMReplication $MessageFail = $hstname + ' Replication Alert' $SmtpServer = […]

Redis多主复制

场景:我们有两个同时运行的数据中心(都提供stream量)。 每个人都有自己的整个基础设施,所以它可以在没有其他人的情况下运行。 也就是说,在networking条件允许的情况下,我们希望我们的Redis数据库能够在两者之间同步。 在networking分区期间丢失密钥是可以接受的,因为有重复的密钥 – 它只是caching数据。 但是,当两个数据中心都启动时(从15-20%的caching命中,到30-40%的caching命中),我们从caching中获得最大的收益。 经过一番四处搜寻,我找不到任何有效地给我们多主人的东西。 (主要说“不这样做”或“不支持”)。 最后,我写了一个客户端,连接到两个主人,订阅数据库的keyspace事件,然后将所有SET命令之间的数据库(我们所有的密钥都设置过期) – 与一些内部“最近看到”caching防止重播循环。 目前,这个工作很好 – 唯一真正的缺点是,在我们得到一个新的关键事件之后,我们必须发出一个GETEX来获得密钥,并且它已经到期 – 所以你最终得到第二次读取(因此约2倍远程DC的RTT延迟)。 这也仅限于支持SET。 我的问题是:有没有更好的方式来获得这种多主复制? 我开始研究SYNC / PSYNC,但是这些协议没有太多的文档,也不确定客户端可能不会违反服务器的规定。

两个文件夹同步(1路同步),一个在内联网另一个在外网

我有一个内联网服务器(join到域,可通过域帐户访问),另外一个在外联网 (未join到域,可通过使用本地帐户的跳站访问)。 域内用户可以访问Intranet服务器上的共享文件夹,他们可以根据需要更新内容。 这些文件夹需要同步( 1路同步 )到外联网服务器。 Extranet服务器(或DMZ中的服务器)受到保护,无法进行任何基本访问,只允许特定端口访问特定端口(RDP,端口3389,仅允许某些子网; HTTP,端口80仅允许用于HW负载平衡器等)。 由于这一点,我不能使用文件共享,这使得robocopy游戏,我不能使用DFS-R,因为这两个服务器不在一个域中。 我已经search了一些免费的同步应用程序,但所有这些都基于可以访问对方的两台服务器之间的同步。 我正在寻找服务器客户端同步软件,在特定的端口上工作(这将被排除在防火墙)。 我的想法是,客户端(Intranet中的服务器)将通知服务器(Extranet中的服务器),某些文件被添加/修改/删除,并将这些文件/更改发送到服务器以将其存储在configuration的文件夹中。 当然,ACL在这里并不重要 – 存储在目标服务器上的所有文件都将具有来自父文件夹的默认(inheritance)权限。 在过去,我使用了微软的一个非常老的工具,叫做“Microsoft Site Server 3.0 Content Deployment” 。 此工具超过10年,不再工作 – 它需要一个域用户帐户,如果DFL和FFL太高(> W2K12),则无法find该用户帐户。 感谢您的帮助或build议。