我使用本地后端连接在同一数据中心内configuration了两台master-master复制的MySQL服务器( MySQL-1 , MySQL-2 ),其中包含以下选项: innodb_flush_log_at_trx_commit=1 sync_binlog=1 我们使用一个负载均衡器在两台MySQL服务器之间来回地循环MySQL请求。 这很好,但我担心复制滞后。 例如,如果用户A在MySQL-1中插入一行,则用户A从MySQL-2中select数据可能没有被成功复制。 基本上,我的问题是,应该有多less滞后(毫秒,秒)? 他们是否已经设置了MySQL选项来防止/减less延迟?
我不是一个真正的系统pipe理员,我主要是一个有一些UNIX知识的开发人员,因为我们没有任何有能力的系统pipe理员,所以我被委派执行备份策略的任务。 我们有很多Web服务器,有一些运行Mysql Srevers,另外一个是Apache,另一个运行nginx,我们使用SVN作为版本控制系统。 我们期待实施备份策略,并能够自动恢复服务器。 我们有两种可能性: 每天同步整个DISK 分析我们的configuration,并规范每个安装步骤,仅备份这些信息,并使用MySQL复制,SVN恢复数据,rsync仅备份configuration选项,以及软件包列表 就我们的观点来看,第一种方法的优点是实施起来非常简单,并且有利用大量服务器资源(CPU / RAM /带宽) 因为我们不想看到我们的服务器因为备份脚本的运行而滞后,所以我们决定更深入地研究(2)。 经过一番反思后,我想出了这样的想法,即我们的每台服务器可以分成5个部分 1 – networking服务器数据 SVN可以处理我们所有的php / css / js / html文件,我们只需要一个configuration文件来存储关于文件夹和存储库的信息。 例如:在文件/etc/backup/svn_folders.list中,我会有 FOLDERNAME1 SVN Repository Address1 FOLDERNAME2 SVN Repository Address2 etc… 那么万一发生崩溃,我们只需要parsing这个文件和SVN结帐。 2 – 用复制备份MySQL数据 我们有3个主要的mysql服务器,我在一个备份服务器mysql_multi上实现,同时有三个mysql实例运行,每个服务器都是主服务器。 那么,我每天都在 Stop slaves mysqldump start slave 这样,我确信我们的主MySQL服务器不受备份过程的影响。 然后,foreach主服务器,我只需要将这些信息存储在一个conf文件/etc/backup/mysql.info serverID = ID 要恢复数据库,我只需要从conf文件中获取这个serverID,然后从备份服务器将rsync对应的转储映像恢复到还原的服务器。 3 – 包装清单 使用debian,很容易知道系统上安装的完整软件包列表。 一个cron只会将这个列表存入/etc/backup/package.list […]
我通过在my.cnf中添加对binlog,中继日志等的引用来设置mysql复制 重新启动MySQL,它的工作。 我想改变它,所以我删除了所有binlog相关的文件,包括log-bin.index, 从my.cnf中删除了binlog语句 重新启动服务器,工作 将master设置为'',从现在开始清除主日志(),复位slave,停止slave,停止master。 现在,为了再次设置复制,我添加了binlog语句到服务器。 但是当我重新启动时遇到这个问题: sudo mysqld (唯一的方法来看到MySQL的启动错误) 我得到这个错误: /usr/sbin/mysqld: File '/etc/mysql/var/log-bin.index' not found (Errcode: 13) 因为确实,这个文件不存在! (我删除它,而试图build立一个新的复制系统)嗯,如果我改变configuration行: log-bin-index = log-bin.index 我得到一个不同的错误: [ERROR] Can't generate a unique log-filename /etc/mysql/var/bin.(1-999) [ERROR] MSYQL_BIN_LOG::open failed to generate new file name. [ERROR] Aborting 我第一次在这个系统上设置复制,我不需要创build这个文件。 我做了同样的事情 – 添加引用到以前不存在的文件,并创build它。 跟继电器logging一样 我不知道为什么mysql坚持尝试读取旧的文件夹。 我应该重新安装整个包吗? 这似乎是矫枉过正。 我my.cnf: [client] port = 3306 […]
我们在一个位置有一个MySQL服务器,在主从configuration中复制到另一个位置。 这台服务器上大约有5-7个不同的数据库。 我们想要这样做… 我们有第二个站点,我们希望将所有的Web服务器移到HA,这是MySQL驱动的。 不幸的是,我们无法立即移动这些,而是想要通过我们的WAN链接从一台MySQL服务器到另一台设置复制。 由于我们将慢慢将Web服务器转移到第二个站点,因此我需要将数据库从现有环境中缓慢切换到第二个站点以供生产使用。 我的问题是,我可以通过networking复制数据库,移动Web服务器,指向新的服务器到新的MySQL,并提升它所需要的个人数据库,并让它回写到原始服务器? 我可以简单地设置一个主 – 主复制,Web服务器只写入一个或另一个没有自动增量问题在其他地方在这里描述为一个问题? 希望这是有道理的。 networking应用程序将只能写入一个或另一个服务器,而不是两个。 这可能吗? 很高兴按需澄清。
我从nagios交换check_mysql_slavestatus在Ubuntu上使用Nrpe插件。 手工从: root@Bastion-01:/usr/local/nagios/libexec# ./check_mysql_slavestatus -H Slave-ip -P 3306 -u root -p xxxxx -w 10 -c 20 OK: Slave SQL running: Yes Slave IO running: Yes / master: 172.31.20.9 / slave is 0 seconds behind master | delay=0s 同样,它从主数据库工作 root@DB-01:/usr/lib/nagios/plugins# ./check_mysql_slavestatus -H Slave-ip -P 3306 -u root -p xxxxx -w 10 -c 20 OK: Slave SQL […]
上下文:我们正在使用MariaDB Gallera集群(仅有)2个主节点用于Web应用程序。 昨天晚上,我们有一个电源故障,现在我们似乎无法恢复数据,发现两个节点上的数据库已损坏。 我们对这个设置的最初印象是,如果一个节点出现故障,另一个节点将很快作为主节点。 我的问题是, 有没有办法设置一个集群,所以总有一个备份节点会自动复制,如果其中一个节点closures? 特别是如果有电源故障。 图库集群的正确实现是什么?
在我的一个mysql从服务器上,我写了一个每日运行的脚本,它停止了slave,2)取得一个db转储,3)再次启动slave,4)encryption它,5)将它复制到我的s3桶。 我正在使用aws-cli将转储复制到s3-bucket。 这里的问题是,如果有人访问服务器,他可以从存储桶中删除转储,因为aws-cli授予对存储桶的更新/删除访问权限。 如何将转储复制到某处(最好是s3),如果有人访问数据库服务器,则不能删除转储。 当我想到我能想到的是,我需要一个不同的服务器上的一个服务器接受转储作为input,然后将其保存到s3。 此服务不接受任何其他types的请求。 这样我为db备份添加了一个额外的安全层。 问题是我不知道任何这样的系统。 更一般的问题,人们通常如何保护他们的数据。 如果有人访问我的主数据库,即使通过SQL注入,他可以导致所有复制截断或删除。 在这种情况下,需要进行某种常规备份。 在注入的情况下,备份是安全的,但在访问服务器的情况下不是。
看起来很简单:我有两台运行MySQL的服务器,一台有一个很好的重要数据库,另一台是一个空壳,准备用作复制从服务器。 以下是我需要设置复制的步骤: 使用相关的复制和主机权限将用户添加到主服务器 从奴隶运行一个声明,告诉它'从这个服务器复制这个数据库' 完成。 而已。 相反,我不得不在两台服务器上搞乱my.cnf设置,搞不清二进制日志,位置和快照。 是的,我知道这些东西中有一些是针对大型数据库的优化,但是这是他们能想到这样做的最好方式吗? 我只是想复制一个数据库,这是一个非常普遍的做法。 我还没有pipe理它。 我在哪里可以find一个像样的方法呢? 我发现的所有东西要么丢失了一些重要的步骤,要么是针对MySQL的老版本编写的,要么就是对我来说太复杂了,或者需要一定程度的承诺,我显然没有准备好,包括官方文件。
我正在使用一个生产MySQL数据库,我想: 创build从主服务器获取更新的数据库的只读从副本。 主人是唯一可以写入的人。 对数据库的副本有“非永久性写入”权限。 通过“非永久性”,我的意思是用户可以写入数据库并更改内容,但是到了某个时候,比如说,明天所有的更改都将会消失,所有的内容都将与主内容完全相同。 QUESTION 1:这可能吗? 我知道(1)是可能的,因为这里有一些文档http://dev.mysql.com/doc/refman/5.0/en/replication.html 。 但是我不确定我能不能同时得到(1)和(2)。 我问,因为我需要编写访问数据库的代码,因为它是每个人使用的生产数据库,有时我不能使用数据库。 我想写testing程序,使用复制奴隶(非永久性写访问),当我确定一切正常,我将运行我的程序使用主数据库,所以这些变化是永久的。 我想我的写作出现在奴隶,所以我可以确保正确的事情写入。 QUESTION 2:是否可以轻松地复制数据库? 数据库有一个真正巨大的表格。 我认为数据库是在4GB的数量级。 我只能在周末做复制,所以我不打扰每个人。 但是恐怕一个周末的时间不足以复制整个数据库。 那么,有没有办法一件件做? 还是有一些超级快速的方式来复制数据库? QUESTION 3:设置一切有多复杂? 我想可能会由于缺乏经验而花费很长时间,但是假设我有一个DBA为我做这项工作,我给他/她造成了多less麻烦? 任何帮助将不胜感激! 顺便说一句,我很新的MySQL和数据库一般所以要温柔:)
我们正在将EC2上的networking服务器networking扩展到许多不同的地区,目前使用主/从复制。 我们发现,在过去的几个月中,我们的从服务器已经停止了多次复制,这要求我们清除数据库并重新初始化复制。 现在我们正在寻找在3个不同地区有服务器,我们有点担心这些MySQL复制错误。 我们相信他们是由于auto_increment价值,所以我们正在考虑一些方法来平息这些错误,并稳定复制: 多主复制; 3个主人(每个地区一个人),与相关的自动auto_increment补偿,定期备份到S3。 要么, MySQL的群集; 3个节点(每个区域一个)具有单独的pipe理节点,该节点也将聚集日志和统计信息。 经过调查,似乎他们都有缺陷(前者的复制错误,后者的性能问题)。 我们相信集群方法将允许我们比Multi-Master路由更容易地pipe理和添加新节点,并将减less/消除我们目前看到的复制问题。 但是,性能是重中之重。 MySQL-Cluster的性能问题和人们说的一样糟糕吗?