Articles of mysql replication

监视MySQL复制

监控一个奴隶确保它是最好的做法是什么? a)仍在运行b)不是太大的主人 我想通过电子邮件提醒,如果它落后了,很高兴写一个或两个脚本钩入命令行应用程序。

max_binlog_size&log-bin大小

我有一个完整的磁盘的问题 -rw-rw—- 1 mysql mysql 1073741982 2012-07-03 18:14 mysql-bin.000034 -rw-rw—- 1 mysql mysql 1073741890 2012-07-04 14:39 mysql-bin.000035 -rw-rw—- 1 mysql mysql 1073741988 2012-07-05 09:16 mysql-bin.000036 -rw-rw—- 1 mysql mysql 1073741964 2012-07-06 00:04 mysql-bin.000037 -rw-rw—- 1 mysql mysql 1073741974 2012-07-06 21:45 mysql-bin.000038 -rw-rw—- 1 mysql mysql 1073741923 2012-07-07 19:05 mysql-bin.000039 -rw-rw—- 1 mysql mysql 356167680 2012-07-07 […]

主 – 主复制的恢复策略

我已经实现了一个基于主 – 主复制的高可用性解决scheme。 在前端部分有一个机制,保证在给定的时间只有一个数据库被读/写(即我们只使用HA进行复制)。 我已经确认复制按预期工作,但我想知道故障情况和恢复。 特别是,我担心当一个主服务器在一个不可恢复的状态下失败,并且需要从另一个主服务器重新创build时,会发生什么情况: 由于另一个主服务器是活的并且最有可能使用,所以我无法将其locking并从mysqldump创build转储(我们的数据库非常大,而mysqldump在几个月的使用后可能需要几个小时)。 即使假设我有一个转储,关键是SHOW MASTER STATUS所显示的binlog位置对应于数据库被locking后所做的转储。 第一个问题的简单解决scheme是使用第三个数据库作为备份,从中我可以执行mysqldump 。 但是,如何确保重新创build的主服务器能够以一致的方式从运行的主服务器启动复制?

什么导致MySQL错误1062 – 重新启动slave时的条目?

MySQL主版本:5.5.16-1 MySQL从版本:5.5.18-1 主人的快照是由以下创build的: mysql> FLUSH TABLES WITH READ LOCK; shell> mysqldump –all-databases –master-data > dbname_`date +%F`.sql 这个转储文件被导入到从站(以–skip-slave-start选项–skip-slave-start ),没有错误: shell> pv dbname_`date +%F`.sql | mysql -u root -p 但是在执行mysql> start slave;时候出现了以下错误mysql> start slave; : Last_SQL_Errno: 1062 Last_SQL_Error: Error 'Duplicate entry '115846' for key 'PRIMARY'' on query. Default database: 'db'. Query: 'INSERT INTO request_posted (id, user_id, channel, […]

防止非复制写入MySQL的奴隶?

为了提高性能,我们有一些MySQL数据库服务器设置了基于行的复制。 软件写入主机,并从主机或从机读取。 一切都很好,大部分。 这是我的理解,MySQL将允许写入从属,即使它知道它是一个MySQL从属。 理想情况下,我想closures这个,所以即使有人写了一些错误的代码,得到一个读取连接,并执行UPDATE ,它会抛出一个错误,而不是把数据放在从属。 有没有办法在MySQL中做到这一点? 很显然,我们希望使我们的软件无法实现,但是就像我们服务器上的防火墙一样,我想尽可能防御。 谢谢!

MySQL的奴隶可以同时成为主人吗?

我正在将2个DB服务器(Master&Slave)迁移到两个新的DB Server(Master和Slave) DB1 – 主(生产) DB2 – 从站(生产) DB3 – 新主人 DB4 – 新的奴隶 目前我有复制设置为: DB1 -> DB2 DB3 -> DB4 为了将生产数据复制到新的服务器上,我想把它“菊花链”,看起来像这样: DB1 -> DB2 -> DB3 -> DB4 这可能吗? 当我运行show master status; 在DB2(生产奴隶)上binlog possition永远不会改变: + —————— + ———- + ————– + —- ————– + | 文件| 位置| Binlog_Do_DB | Binlog_Ignore_DB | + —————— + […]

可以复制`mysql`数据库吗?

当我最初设置我的主对主复制时,我使用了: binlog-ignore-db=mysql 并一直在同步用户帐户和手动授予。 这只是当时我在使用的方法如何做的。 但是,有没有什么原因,我不应该删除这条线,并允许mysql数据库本身也复制? 如果是这样的话:在我做出改变之前,除了确保所有的授予都是相同的(或者更好地说,整个mysql数据库是相同的),还有什么我应该仔细检查或意识到吗?

所有数据库的MySQL Master-Master复制。 怎么样?

背景 :在这个出色的指南中,我有两个MySQL 5.1服务器在主 – 主行复制(RBR)中设置。 我想要复制所有数据库,并定期添加新的数据库。 目标 :我希望能够通过将数据库添加到其中一台服务器来将新数据库添加到复制中; 而不必停止两个从站,更改configuration文件,重新启动MySQL服务器,并再次启动从站。 问题 :从我读到的内容来看,我想我可以通过简单地省略每个服务器configuration中的任何binlog-do-db , binlog-ignore-db , replicate-do-db和replicate-ignore-db设置来完成此操作。我不能确定。 关于如何评估数据库级和表级复制选项的MySQL文档让我觉得根本没有办法完成这个任务。 下面复制我的/etc/mysql/my.cnf文件的相关部分。 我在正确的轨道上? 我甚至想要什么? 主人1 : [mysqld] binlog-format = row server-id = 1 replicate-same-server-id = 0 auto-increment-increment = 2 auto-increment-offset = 1 master-host = <master2_ip> master-user = slave_user master-password = <password> master-connect-retry = 60 log-bin = /var/log/mysql/mysql-bin.log relay-log = /var/lib/mysql/slave-relay.log […]