Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 主从配置_Mysql_Linux - Fatal编程技术网

Mysql 主从配置

Mysql 主从配置,mysql,linux,Mysql,Linux,我需要为mysql设置一个主从设置 1个主设备和1个从设备(复制) 现在这里的主要问题是:当主设备出现故障时,是否有可能将从设备升级为主设备。 那么,当旧主人站起来时,它现在将成为奴隶。你的问题的答案是“是”,这里有。基本上,假设安德鲁是当前的奴隶,安倍是当前的主人。要将两者互换: 检查Andrew以确保sql线程已尽可能多地完成处理。在mysql提示符下,运行showProcessList。(您也可以通过使用MySQL管理员查看当前连接来完成此操作。)IO线程和sql线程都应作为系统用户列出。

我需要为mysql设置一个主从设置

1个主设备和1个从设备(复制)

现在这里的主要问题是:当主设备出现故障时,是否有可能将从设备升级为主设备。
那么,当旧主人站起来时,它现在将成为奴隶。

你的问题的答案是“是”,这里有。基本上,假设安德鲁是当前的奴隶,安倍是当前的主人。要将两者互换:

检查Andrew以确保sql线程已尽可能多地完成处理。在mysql提示符下,运行
showProcessList
。(您也可以通过使用MySQL管理员查看当前连接来完成此操作。)IO线程和sql线程都应作为系统用户列出。IO线程的状态应为“读取主事件失败后重新连接”。如果sql线程被完全捕获,它的状态应该是“已读取所有中继日志;等待从I/O线程更新”。如果这说明了其他的事情(比如处理中继日志),那么从机仍然在追赶,您需要让它运行,直到它被追赶为止

执行此检查的另一种方法是运行命令
SHOW SLAVE STATUS\G
,并查看继电器日志和位置。然后,您可以验证这确实是最新的中继日志,并使用mysqlbinlog实用程序验证位置是否是最新的。请注意,您不能在从机状态输出中使用SECONDS_BEHIND_master变量-如果从机无法连接到主机,则该变量将为null

一旦Andrew被抓到,重新设置它。在MySQL提示符下,运行RESET SLAVE;。这将删除master.info文件,并将安德鲁从束缚链中解放出来

接下来,将所有二进制日志移动到临时目录。二进制日志看起来像andrew-bin.000001,其中andrew是主机名。这一步并非绝对必要,但我不喜欢删除日志文件

现在为Andrew重置二进制日志。这将删除所有二进制日志,这就是我们在上一步中备份它们的原因。当我们把安倍带回来时,这也将使安倍很容易与安德鲁建立起奴隶关系。要执行此操作,请运行重置主机;安德鲁

在Andrew上编辑my.cnf,注释掉只读系统变量(如果已设置)

在Andrew上重新启动mysql:
/etc/init.d/mysql Restart

将masterdb.janitors.com cname更改为指向Andrew,而不是Abe。此步骤要求应用程序指向以前的setupmasterdb.janitors.com,而不是像andrew.janitors.com这样的东西

web应用程序现在应该成功地连接到Andrew作为主数据库

一旦安倍康复,我们可以把他当作安德鲁的奴隶抚养长大。第一步是在Abe上编辑my.cnf,并取消对只读系统变量的注释

在Abe上启动mysql(与上面的命令相同)。请注意,这意味着mysql不应设置为在机器启动时自动启动。这是额外的安全措施。我不知道mysql是否会尝试任何类型的错误恢复,比如完成由于崩溃而无法完成的事务——但我们不希望它做任何会使其与Andrew不同的事情(可能已经略有不同,但我们对此无能为力)。因此,通过在启动数据库之前将其设置为只读,我们可以确保对数据库的唯一更新是来自新主机的更新

让安倍成为安德鲁的奴隶。安倍,快跑

将MASTER更改为MASTER\u USER='replicator',MASTER\u PASSWORD='PASSWORD',MASTER\u HOST='andrew.jantiors.com',MASTER\u LOG\u FILE='andrew-bin.0000001',MASTER\u LOG\u POS=4


我们知道日志文件中的确切位置,因为我们在步骤4中重置了它。此外,我们正在将master_host设置为andrew.janitors.com而不是masterdb.janitors.com,因为我们不一定要将任何故障转移到单独的主机(因为不同的主机将有不同的二进制日志)。

或者只是像傻瓜一样等待@hd1的回答,并进一步阻止您进行自己的研究。