Articles of mysql replication

破坏的奴隶(MySQL复制)

昨天晚上,开发者之一在主机上运行了一个错误的mySQL语句(查询插入一个重复的主键)。 突然,它的奴隶的复制停了下来。 从服务器开始将其写入mysql_relay_logs,在我们监控和修复之前,磁盘空间不足。 Master被configuration为保存最近3天的bin_logs,所以我们还没有完全丢失复制。 有人可以帮我解决这个混乱现在。 我的主人身份: mysql> SHOW MASTER STATUS\G *************************** 1. row *************************** File: mysql-bin.000017 Position: 30844254 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.00 sec) 从属状态:mysql > SHOW SLAVE STATUS\G *************************** 1. row *************************** Slave_IO_State: Master_Host: 192.168.140.110 Master_User: replication_user Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000014 Read_Master_Log_Pos: 61132382 Relay_Log_File: mysqld-relay-bin.000037 Relay_Log_Pos: 1405976 Relay_Master_Log_File: mysql-bin.000014 Slave_IO_Running: […]

MySQL增量备份和数据库复制

我们有一些服务器运行一个MySQL数据库的tomcat应用程序。 这些服务器位于不同的城市,我们的客户在本地使用networking应用程序。 在这些服务器上,crontab作业每天运行两次,并对数据库进行完全备份,并将此转储(SCP)发送给我们的中心办公室的服务器。 然后,我们把这个垃圾堆放在当地的数据库,如果发生紧急情况,我们的客户可以通过互联网继续使用这个应用程序。 问题是每天转储越来越大,传输这些数据并不是那么简单,所以我们正在寻找一些增量备份解决scheme和一个复制方法。 你能给出一些关于如何做到这一点的想法吗? 还有另一种解决scheme比我们想要做的更好吗? 谢谢。

什么可以防止在MySQL主 – 主设置循环?

我有两台服务器运行MySQL作为双主(每个服务器是一个主,每个服务器从属于另一个)。 在解决高峰负载期间的一个可能的问题的同时,我开始怀疑mysql如何防止这样的关系中的命令的“循环”。 我的具体问题是: 如果A从属于B,并且B从属于A,那么防止在A上执行并且经由它们的主(A) – >从(B)关系传播给B的SQL命令被进一步传播回一个通过主(B) – >奴隶(A)的关系? 我的猜测是,除了命令本身之外,还有一些独特的识别命令,A知道它已经执行了命令(可能使用server-id选项)。 但是,我的谷歌今天太弱,不知道这是如何工作的。 这是怎么回事我的问题。 每隔5分钟,我都会看到Read_Master_Log_Pos和Exec_Master_Log_Pos之间的延迟。 我理解这个的基本原因 – 我相信应用程序被configuration为每隔五分钟在数据库上存储大量数据(实际上,在绘制值之间的15秒的三angular形时,我推测有一个常数跑步者每5分钟一次,每15分钟更多一次,而且每30分钟更多一次)。 我真正担心的是两个奴隶都performance出同样的延迟。 我对这个应用程序的devise的理解是,除非该服务器不可用,否则应始终使用“主动”(从应用程序的angular度来看,而不是从mysql的angular度来看)数据库服务器,在这种情况下,应用程序将尝试使用“备用”数据库服务器。 如果这是真的,为什么我看到两个奴隶的读/写滞后? 如果不是这样,我是否对应用程序体系结构有一个根本性的误解,或者即使服务器从未“closures”,“活动”服务器是否被过度利用,以至于应用程序失败了? (最后两个不是SF问题,只是我正在回答的问题) 我读到mysql主/从关系中的master是相当简单的,因为它把所有的东西都发送给它的从服务器,由slave决定执行哪些命令(如果有的话)。 如果是这样的话,也许从待机服务器的从机上看到的滞后是由于所有那些已经执行的命令被下拉并且不得不评估这些命令是否已经被执行。

Mysql集群Vs基本Mysql数据库设置(不是集群)

为什么MySQL集群需要更多的内存相比,基本的MySQL数据库设置(没有集群)? 2个不同主机上有2个mysql服务器的mysql集群的理想ram要求是什么?

MySQL从机将生产数据库名称附加到新视图

我有一个与生产对象不同的名字的奴隶数据库。 (我们正在使用replicate-rewrite-db选项。) 当我从奴隶(我做的开发副本)运行一个mysqldump时,两个数据库视图的数据库名称附加到他们。 我无法使用转储文件创build另一个副本,而无需手动编辑它。 如果我从生产副本运行相同的mysqldump,则所有内容都会清理干净。 所以由于某种原因,奴隶错误地创造了这两个观点。 (其他四个视图是在复制build立之前创build的,我相信解释了这种差异。我已经确认复制是同步的。) 从站的mysqldump片段: /*!50001 VIEW `database_slave`.`view_company` AS select `database`.`company`.`id` AS `id`, `database`.`company`.`name` AS `name`,`database`.`company`.`state` AS `state`, mysqldump的相同片段,但从生产(好,干净): /*!50001 VIEW `view_company` AS select `company`.`id` AS `id`, `company`.`name` AS `name`,`company`.`state` AS `state`, 我可以解决这个问题,而不必从产品转储到奴隶?

复制停止

我有2个CentOS 5.5服务器runnig Mysql 5.5,configuration为主 – 主复制。 当在一台服务器上,我有networking问题,另一个我在日志中看到消息: 111105 2:38:30 [Note]停止asynchronousbinlog_dump到slave(server_id:2) 当networking问题消失时,复制不会自动恢复,但会在一小时内启动: 111105 3:37:41 [Note] Start binlog_dump to slave_server(2), pos(mysql-bin.000157, 344487149) 111105 3:37:41 [Note] Start asynchronous binlog_dump to slave (server_id: 2), pos(mysql-bin.000157, 344487149) 我认为这只是configuration计时器,但哪个? 下面是mysql的configuration: SERV-01: [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0 plugin-load=archive=ha_archive.so;blackhole=ha_blackhole.so #Replication old_passwords=1 log-bin=/var/lib/mysql/mysql-bin expire_logs_days=3 binlog-do-db=roomserv binlog-do-db=asterisk binlog-ignore-db=mysql binlog-ignore-db=information_schema server-id=1 auto_increment_increment= 2 auto_increment_offset = 1 […]

MySQL主从复制

我正在尝试设置高可用的主从MySQL复制。 我打算在不同的networking上有两台服务器,一台作为主服务器运行,另一台作为从服务器运行,如下所示: AB 10.0.1.0/24 | 10.0.2.0/24 __________________________ Master —–|—> Slave 10.0.1.20 | 10.0.2.20 如果系统完全运行,我的应用程序服务器将连接到(并执行mysql写入) 10.0.1.20 。 在故障转移的情况下,从机将被升级,主机将如此closures: AB 10.0.1.0/24 | 10.0.2.0/24 __________________________ (DOWN) | Master 10.0.1.20 | 10.0.2.20 所以,服务器A现在已经closures了,而且B已经升级到了MySQL主服务器。 但是,我需要我的应用程序服务器知道B已被提升,所有未来的写入应该是10.0.2.20 。 这对于只有一个主站和一个从站的情况是微不足道的,但是如果有一个主站和三个从站,应该如何处理呢? PHP应用程序如何知道要写入哪个mysql服务器? 我需要MySQL的升级自动发生在5秒钟内。 我不能让两台服务器使用心跳信号共享一个VIP,因为它们位于完全不同物理位置的两个不同的networking上。 这种故障转移通常如何处理类似的拓扑结构?

MySQL复制减慢主

我们目前正在运行MySQL 5.1 快速概览 我们使用全部连接到云上托pipe的1个DB服务器(MySQL)的5个Web服务器(Apache)。 在云(Master)上运行的数据库服务器在我们的办公室复制到本地数据库服务器(从属)。 问题 我们已经注意到,当从设备打开时,主设备进程列表开始加载未经authentication的用户。 不久,当我们停止奴隶主进程列表慢慢地回落到正常。 RAM / SWAP看起来很好,没有缓慢的查询运行来解释在MySQL进程列表中的积累。 这可能是一个networking瓶颈? 我认为这可能是一个缓慢的硬盘,但它似乎并没有关系,当它运行缓慢bin-log的大小。

备份mysql数据库的最佳实践

这个问题涉及mysql备份与复制和大量数据库的最佳做法。 我正在寻找你的观点和build议:) 我 – 现状 我有两个数据库主/从(MySQL复制)在我的每个应用程序服务器上。 我有一个由客户和一个“pipe理”数据库的数据库。 目前我共有500个数据库,很快就会超过1K。 每个数据库包括大约100个表,目前,在mysqldump操作(未压缩)之后,我通过数据库到达10到30mo。 II – 我需要什么 我现在正在考虑备份这些数据库。 主要目标是肯定能够解决服务器崩溃问题并构build灾难恢复stream程,但在此之前,我更担心自己的客户将自己的数据搞乱了。 总结一下,我希望能够: 备份和恢复所有数据库,以防服务器崩溃或受到攻击。 (然后执行灾难恢复)。 备份所有数据库并恢复特定的数据库,以便在客户弄糟自己帐户的数据时恢复新的副本(假设不超过24小时)。 三 – 我目前的想法和我的问题 1 – 备份位置 数据库的备份不应该在与数据库本身相同的服务器上完成。 由于我在两台不同的服务器上使用复制,您认为在另一台服务器上备份数据是一种很好的做法吗? 或者作为专用服务器的其他解决scheme是什么?为什么? 2 – 备份过程 首先,我将按照停止临时复制和“只读”备份的原则,从备份数据库进行备份。 我想我在这里考虑两种不同types的备份。 第一个备份将是原始数据文件的备份,我将每周执行说明(因为我正在使用复制,我很安全)。 而第二种types的备份将是每24小时执行一次的每个数据库的mysqldump。 这是否合乎逻辑? 还有其他要点我应该考虑吗? 增量备份是否对我有意思? 非常感谢!

MySQL从服务器索引文件损坏

我有一个MySQL主从复制对,并采取备份,我运行一个脚本,停止奴隶,转储数据库,然后重新启动奴隶。 但是,重新启动之后,由于/var/lib/mysql/mysql.index文件损坏了从属服务器的MySQL守护进程( mysqld ) – 即在最后一行的索引文件名前加上了“^ @”字符,从而使得索引文件不可读。 只需删除这些字符,就可以正常启动MySQL,然后复制就可以正常进行。 实际的数据库表中没有数据损坏,就在这个单一的索引文件中。 备份脚本的相关部分(编辑): mysqladmin -uroot -p${PASSWORD} stop-slave >> $LOGFILE # Lock the database mysql -uroot -p${PASSWORD} -e 'FLUSH TABLES WITH READ LOCK' # Backup live accounts mysqldump -uroot -p${PASSWORD} –routines ${LIVEDB} > ${BACKUPDIR}/${LIVEDB}.sql mysqldump -uroot -p${PASSWORD} –routines ${OTHERDB} > ${BACKUPDIR}/${OTHERDB}.sql # Unlock the database mysql -uroot -p${PASSWORD} -e […]