Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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 InnoDb在主动/被动拓扑的原始设备上运行_Mysql_Cluster Computing_Innodb - Fatal编程技术网

Mysql InnoDb在主动/被动拓扑的原始设备上运行

Mysql InnoDb在主动/被动拓扑的原始设备上运行,mysql,cluster-computing,innodb,Mysql,Cluster Computing,Innodb,我们有一个主动/被动拓扑,其中有两个x86复合体和一个共享原始存储,在给定时刻只有一个节点可以访问共享存储(也称为主动节点)。在主动节点发生故障切换的情况下,被动节点启动接管,并成为具有共享存储访问权限的主动节点。每个节点都有自己的带有文件系统的引导设备存储,但是共享存储不能在其上安装文件系统 我们感兴趣的是在两个节点上安装Mysql服务器,其数据驻留在共享存储中,只有活动节点运行服务器 ,还有一个关于如何跑步的指南。但是,在第二个示例中,它们确实在共享存储上安装了一个文件系统。文件系统问题引发

我们有一个主动/被动拓扑,其中有两个x86复合体和一个共享原始存储,在给定时刻只有一个节点可以访问共享存储(也称为主动节点)。在主动节点发生故障切换的情况下,被动节点启动接管,并成为具有共享存储访问权限的主动节点。每个节点都有自己的带有文件系统的引导设备存储,但是共享存储不能在其上安装文件系统

我们感兴趣的是在两个节点上安装Mysql服务器,其数据驻留在共享存储中,只有活动节点运行服务器

,还有一个关于如何跑步的指南。但是,在第二个示例中,它们确实在共享存储上安装了一个文件系统。文件系统问题引发了一个主要问题:

ib_logfile*仍然需要一个文件系统。所以原始mysql特性并不是完全原始的。如果我弄错了,请纠正我。是否有将这些文件存储在原始存储器中的变通方法?但是,我们可以将ib_日志文件保存在节点的启动设备中,并始终在服务器启动之前删除这些文件,但是,如果事务中间出现故障,这可能会导致未提交的事务部分提交,从而与事务的整体概念相矛盾


在这种拓扑结构中是否还有其他文件/功能可能会影响mysql的行为

每次安装mysql都由2个目录组成。 1.应用程序目录 2.数据目录。 数据目录包含数据库的所有数据。它包含数据文件和日志文件。 数据目录可以位于本地服务器上的共享存储和应用程序目录中,当您想从主动切换到被动时,可以关闭(如果它没有崩溃)主动服务器,并在共享存储上具有权限的情况下启动被动服务器。由于日志文件位于共享存储中,新的活动服务器将恢复丢失的事务。
请记住,在此拓扑中,被动服务器已关闭,只有在切换时才会启动

你可能不会喜欢这个答案,但接下来

不要试图做你描述的事情

您只需要防止一件事——服务器故障(磁盘除外)。同时,磁盘故障、网络故障、地震、洪水等都会破坏系统为什么只针对一种故障场景进行保护?

回到暂定计划。。。如果活动服务器死亡,您必须阻止它向MySQL文件写入更多内容。只有这样,被动mysqld才能打开。它将(假设您正在使用InnoDB)从磁盘恢复它所能恢复的内容。请记住,活动内存上的东西可能正在等待从RAM中刷新

或者你的目标是“原始”设备在某种程度上“更好”

原材料不再有用。几十年前,这是一个行之有效的概念。今天的驱动器和控制器实际上已经消除了“原始”的用处

只需“挂载”文件系统,并将mysql文件放在每个服务器都知道的位置

InnoDB中的数据和索引以16KB的块为单位,多少被组织成1MB的“区段”。但当您修改表时,数据会变得分散,从而消除了“原始”所提供的任何优势

好的,所有日志文件(iblog、binlog、slowlog、relaylog、generallog等)确实从对磁盘的“串行”访问中获得了一些好处。但是,如果操作系统在某种程度上连续地分配这些文件,那么即使在“文件系统”上,您也可以获得“原始”的性能

InnoDB不知道如何寻址原始设备

InnoDB大量使用RAM以避免I/O


如果您想要HA(高可用性),我推荐Galera,无论是在MariaDB还是PXC中。

您会得到一个更好的答案,即应用程序目录需要一个文件系统,正如我所描述的,它不能装载在我们的共享存储上。正如我所说,应用程序目录可以位于本地服务器上。您可以在每台服务器上安装mysql,并将配置中的数据目录更新到共享存储。
inndob_data_文件
可以在原始存储上共享,因为mysql支持该功能。但是,所有其他文件,例如
ib_logfile0/1
.frm
(每个模式)以及更多文件通常存储在
/var/lib/mysql/
中,这当然需要一个文件系统。不能将NONDB日志文件存储在原始存储中,如果在事务中间的节点之间切换,则会导致失败。默认情况下,日志文件与所有其他相关数据文件一起位于数据目录中。您需要在配置文件中配置数据目录位置。“MySQL数据目录中名为ib_logfile0和ib_logfile1的两个日志文件”