Mysql

不同的服務使用不同的埠指向同一個 datadir 文件夾

  • July 22, 2016

假設我已經mysqla.ini在 …\data 中安裝了具有 (port number=3306) 設置和 datadir 文件夾的服務 MySQLa

那麼是否有可能,我安裝了另一個服務 MySQLb mysqlb.ini(埠號 = 3307)設置並在 …\data 中共享 datadir 文件夾?

會不會與系統架構(mysql、information_schema 和 performance_schema)有任何衝突?

我嘗試將 datadir 定位到不同的文件夾(…\dataa 和 …\datab),它執行良好。

InnoDB

請注意 InnoDB 架構(圖片由 Percona 首席技術官 Vadim Tkachenko 提供)

InnoDB 架構

如果您的數據庫是讀/寫的,我寫了為什麼 InnoDB 不能允許多個實例

您唯一的選擇是以只讀模式啟動 InnoDB(請參閱我的唯一文章,其中提到瞭如何使用只讀數據目錄啟動 mysqld?以及MySQL 5.6 Documentation for the ReadOnly InnoDB Setting)。

MyISAM

如果您的數據庫全部是 MyISAM 或 InnoDB 和 MyISAM 的混合,您的 MyISAM 表將很容易處於崩潰狀態(不幸的是,即使對於單個 mysqld 實例也是如此)。

請記住,每次打開 MyISAM 表時,MyISAM 表的標題中都有一個計數器,用於監視 MyISAM 表有多少打開的文件句柄(請參閱我對 MySQL 表為什麼會崩潰的Mar 15, 2012回答?如何防止它?)。如果單個 mysqld 實例崩潰,則認為該表已崩潰。這將在錯誤日誌中堆積警告,指出必須修復 MyISAM 表。如果這是單個 mysqld 實例的情況,那麼它更有可能發生在多個實例上。即使 mysqld 實例是在啟用innodb_read_onlyread_only的情況下啟動的,也會出現這種情況。

你的問題

您的 mysql 架構中有一些 MyISAM 表。他們很小。即使它們崩潰了,您也可以在它們上執行 REPAIR TABLE 并快速修復它們,但如果您無法修復它們,則有百萬分之一的機會處理身份驗證問題。

既然你提到.ini了,我假設你在 Windows 中。對於 MySQL,Windows 中的文件處理鎖定往往比 Linux 中的更嚴格。因此,InnoDB 在只讀模式下可能更麻煩或更慢。

結論

  • 如果您的數據庫是讀/寫的,那是不可能的

  • 如果您的數據庫是只讀的

    • 如果您的數據庫有任何 MyISAM 表,則可能會更容易受到文件句柄計數損壞甚至數據損壞的影響
    • 如果你的數據庫都是 InnoDB,那麼是可以的。

引用自:https://dba.stackexchange.com/questions/144643