Articles of mysql replication

MySQL复制不按时间顺序分解为二进制日志

看一下二进制日志的摘录,可以看出这两个语句是按时间顺序写入日志的: #160628 17:32:46 server id 2220 end_log_pos 64812204 Query thread_id=157061 exec_time=0 error_code=0 SET TIMESTAMP=1467153166/*!*/; UPDATE `table` SET `field` = "a"; /*!*/; # at 64812204 — #160628 17:32:36 server id 2220 end_log_pos 64895850 Query thread_id=157062 exec_time=0 error_code=0 SET TIMESTAMP=1467153156/*!*/; UPDATE `table` SET `field` = "b"; /*!*/; # at 64895850 无法弄清楚如何在代码块中突出显示,但重要的部分是: first statement – end_log_pos 64812204, SET […]

数据库的完整,差异和日志备份,MSSQL和MYSQL

最好我给一个背后的故事,让你得到全面的情况。 我正在build立一个新的业务,希望能在2012年4月份开始,因此我正在准备好每一个方面。 业务的一部分将是虚拟主机。 我在这个领域非常有经验,并曾经pipe理过VPS。 在我的情况下,我去了两台服务器, 第一个只是一个Web服务器,第二个有邮件和数据库。 虽然MS SQL数据库最初不会提供给客户,但是可以或不可以通过“升级”等方式添加。我有2008快速安装,因为我需要为网站面板(我可能会也可能不会最终使用)。 否则MySQL数据库可以免费用于客户。 我正在思考两个数据库系统的备份策略。 对于MS SQL,我在00:00有一个每日完整备份,从01:00到23:00每个小时有一个差异。 我现在认为这将是备份“控制面板”的最佳方式 – 当我上线时,我可能每10分钟做一次备份。 至于MYSQL,似乎我不能做差异,就像我用MS SQL做的那样,首选的操作是每次都做一个完整的转储。 我相信你可以想象在这方面,磁盘空间会随着时间的推移而快速增长。 我的主要问题是: 我应该如何备份MySQL每小时​​? 每天一次完整的备份对客户来说是不够的,无论是否写入。 我实际上意识到客户负责他们的数据和备份,事实上,这是大多数公司的工作原理,但我想添加额外的安全网,可能会或可能不会帮助 – 尽最大的努力,如果你愿意的话。 我读过一些将MySQL复制到另一台机器的地方,然后每小时转储一次就可以解决我的问题,但是我会担心这个延迟。 我已经读过这个复制导致瓶颈。 这仍然是这样吗? 理想情况下,我想有另一台服务器进行登台/备份/复制,但现在还没有预算。 也许当我得到一定数量的客户时,我会这样做。 无论如何,这几乎是它的大部分。 感谢您的时间和帮助。 PS 我想提一下,以防万一,这是不明显的,我正在使用Windows Server的僵尸VPS – 在这种情况下,2008 R2数据中心。 另外,除了我的备份之外,我通过networking将它们发送到iDrive作为在线备份。 我的想法完美地工作在于,我创build了与以前完全相同的备份文件。 这样一来,在线备份中,我只用尽了本地备份文件的数据大小,同时保持了30天“在线版本”的设置。 所以我可以对我的客户说我有30(分)天的备份价值,我实际上做的都是正式的,只是用了一个备份集。

错误设置从mssql到mysql的复制

我试图设置从SQL Server 2005到MySql 5.1.53的复制。 我可以添加没有任何问题的出版物。 但是,当我去添加订阅我得到这个错误: OLE DB或ODBC订阅服务器无法订阅发布“mySqlReplicationPub”中的文章“table_1”,因为文章有时间戳列,发布为“allow_queued_tran”(允许排队更新订阅)。 不过,我在table_1中没有时间戳列(见下文),并且我已经将allow_qued_tran设置为false。 这是table_1的ddl CREATE TABLE [dbo].[table_1]( [objectId] [int] NOT NULL, [name] [varchar](50) NOT NULL, [aBit] [bit] NOT NULL, [nVar] [nvarchar](50) NOT NULL, PRIMARY KEY CLUSTERED ( [objectId] ASC ) 这是我的代码来创build发布和订户 — Enable Replication exec sp_replicationdboption @dbname = N'mySqlReplication', @optname = N'publish', @value = N'true' GO — Adding the […]

MySQL二进制日志

我的服务器告诉我,二进制日志logging被禁用。 当我做一个mysqladmin variables ,我看到这个: log_bin | OFF log_bin | OFF 。 这是我的configuration文件: [mysqld] # These are some standard (Plesk) options needed: datadir = /var/lib/mysql socket = /var/lib/mysql/mysql.sock user = mysql old_passwords = 1 # Some general options: default_storage_engine = MyISAM # We want to make sure eventual data loss is handled correctly: myisam_recover = FORCE,BACKUP […]

在Ubuntu 12.04上的MySQL 5.5复制设置

以下master-masterconfiguration在MySQL Server 5.1.x(Ubuntu 10.04)上工作。 Master1(192.168.2.80) ################################## #MySQL Replication ################################## skip-host-cache skip-name-resolve event_scheduler = ON max_connections = 500 max_connect_errors = 1000 server-id = 10 replicate-same-server-id = 0 auto-increment-increment = 10 auto-increment-offset = 1 master-host = 192.168.2.81 master-user = repli master-password = secret master-connect-retry = 60 binlog-format = MIXED #binlog-ignore-db = information_schema #binlog-ignore-db = lb1 #max_binlog_size = […]

MySQL复制A-> B-> C

我设置的主复制 – >奴隶/主 – >奴隶和复制为主 – >奴隶它的工作正常,但是当我在my.cnf中启用此选项 log-slave-updates=1 为更新主箱日志我的复制开始是慢和时间 Seconds_Behind_Master 在成长。 我使用innodb引擎,但数据库是大的。 任何想法如何我可以提高复制,看起来像networking不是问题。 也是我想使用 binlog_format=ROW 但主人正在使用默认设置复制“声明”,我不能重置主人;) 谢谢 …

MySQL复制:不要将失败的查询传播给从服务器

我有一个简单的MySQL复制设置,一个主站和两个从站。 偶尔会出现由于重复的唯一键或其他原因而在主服务器上执行失败的查询。 我所看到的是,失败的查询被复制到从属服务器,这也导致了错误。 每次都需要去解决这个问题,这很烦人,而且非常繁琐,因为每当有错误的查询时,复制都会停止。 在我看来,如果一个查询在主服务器上失败,那么MySQL不应该把它传播给从服务器。 MySQL可以这样configuration吗? 怎么样? 我试过谷歌search和浏览MySQL文档,但我没有看到它。

帮我理解mk-heartbeat

来自SHOW SLAVE STATUS的Seconds_Behind_Master被认为是Slave滞后的不可靠度量。 mk-heartbeat经常被提供作为一个可靠的select。 现在mk-heartbeat甚至不需要奴隶运行。 http://www.maatkit.org/doc/mk-heartbeat.html 摘抄: mk-heartbeat是一个由两部分组成的MySQL和PostgreSQL复制延迟监视系统,不需要从机工作(换句话说,它不依赖于MySQL上的SHOW SLAVE STATUS)。 所以我的理解是,你在Master上创build一个DB /表,运行mk-heartbeat,更新如下: ./mk-heartbeat -D heart –table beat -u heartbeat -p XXXXXXXXX –update -h 192.168.2.80 然后在Slave上,你在master上的DB / table上指向mk-heartbeat(即你在master上做一个GRANT语句来赋予Slave权限),并像下面这样使用–monitor运行: ./mk-heartbeat -D heart –table beat -u heartbeat_slave -p XXXXXXXXX –monitor -h 192.168.2.80 我已经完成了这个工作,甚至在MySQL示例员工薪水表(这创造了奴隶滞后,至less根据不可靠的Seconds_Behind_Master)的2.8M +行更新时,我从来没有看到mk-heartbeat –monitor从: 0s [ 0.00s, 0.00s, 0.00s ] 也许情况是我没有产生足够的延迟,并且根据mk-heartbeat文档,复制事件在不到半秒的时间内传播,我可以预期看到零秒的延迟: mk-heartbeat有一秒钟的分辨率。 这取决于主服务器和从服务器上的时钟通过NTP密切同步。 – 更新检查发生在秒的边缘,并且 – 监视器检查在几秒之间发生。 […]

MySQL多主复制与MySQL集群

我需要一个快速的MySQL数据库,并支持许多连接。 大部分的连接只会被阅读,但less数会被阅读/写作。 所有连接将需要读取和写入至less一些数据。 我有4个testing服务器专门进行实验。 本来我打算做多主,但后来我读了一些关于MySQL Cluster的内容。 我有一些疑问: 只有MySQL集群RAM? 小册子说磁盘表是支持的,但即使是他们自己的文档有时也说不是。 我希望能够在停电时幸存下来。 MySQL集群是否能够提供比多主机更好的可靠性? 我担心停电会导致我的多主设备无法同步。 能够顺利从停电或其他故障中恢复是考虑多硕士之外的其他原因的主要原因。 有没有办法使用临时表? 我的应用程序使用了一些临时表,但是我看到MySQL集群不支持它们。 除了使用永久性表格以外,是否还有其他解决方法? 我可以随时添加和删除数据节点吗? 没有任何服务中断?

my.cnf文件构成,头文件重要吗?

我有一个很基本的问题, 我正在为两个新的空白服务器之间的mySQL复制制作一个configuration脚本,现在使它更有保障我添加了行: sed '/log-bin/d' /etc/my.cnf sed '/server/d' /etc/my.cnf 所以,如果在默认情况下已经设置了configuration选项,它将删除所述的行。 现在,在脚本的下一个步骤中,我希望它读取这些行,并select我们想要的选项。 我遇到的唯一问题是my.cnf文件是由 [mysqld] 像头,我想知道的是(而不能通过谷歌find)是否这些实际上是重要的,如果他们主要是指示的东西。 我可以添加吗? echo "log-bin=mysql-bin" >> /etc/my.cnf echo "server-id=1" >> /etc/my.cnf 或者他们是否需要在标有的部分 [mysqld] 如果是的话,我可以通过增加另一个来“扩大”这个部分 [mysqld] 在文件的底部,这样你会有2x这个“地区”? 有效地使它看起来像这样: #start file [mysqld] #options here [mysql.server] #options [mysqld_safe] #options [mysqld] log-bin=mysql-bin server-id=1