MySQL多例項執行

2021-09-21 11:01:27 字數 1713 閱讀 7082

mysql多例項執行

更新 2023年10月19日

最近幾天研究了一下怎麼讓mysql實現多例項執行,當然也是有需求才研究的。當然少不了要看許多網上的文章和官方手冊。

一共總結出3種多例項啟動的方法:第一種:安裝兩個msyql,在啟動時指明不同的port和defaults-file即可。第二種:使用mysqld_multi,建立乙個配置檔案然後用mysqld_multi讀取配置檔案來啟動多例項。第三種:使用mysql例項管理器並建立使用者賬戶,這個方法好像比較好不過也有點複雜。這些方法都可以在官方文件中找到,就不細說了,中文的也很好找。

下面是我在採用第二種方法時的心得體會。

一、為什麼這麼做。

聽乙個搞.net開發的人說,這麼做可以防止mysql執行緒排程中產生的瓶頸問題。別的原因就不知道了,反正有這個需求。

二、基本知識。

每個例項應該在自己的datadir下配置my.cnf檔案。

配置檔案的查詢順序如下:

第一搜,首先讀取/etc/my.cnf。

第二搜,$datadir/my.cnf,在data目錄下尋找此配置檔案,每個例項應該在自己的datadir下配置my.cnf檔案。

第三搜,defaultfile=/path/my.cnf 通常寫在命令列上,mysqld_safe defaultfile=/tmp/my.cnf &等執行。

第四搜,~/my.cnf 當前使用者下的配置檔案。

ps:這些都是網上抄來的。

三、安裝mysql。

無外乎原始碼和rpm等方式嘛,就不多說了。

四、準備目錄。

這步還是比較重要的。

如果安裝的時候進行了mysql_install_db這個操作的話,會在mysql的datadir下面建立msyql、test兩個資料夾,還有幾個log檔案。例如:

多例項同時執行的話需要自行建立另乙個datadir。我的環境中是/var/lib/mysql2;把mysql1裡面的拷貝過來或者在mysql2目錄裡面再執行一次mysql_installdb --datadir=path都行。

做完後要注意目錄許可權,mysql使用者要可寫。

五、建立配置檔案。

原來my.cnf檔案中的mysqld段全部注釋。

my_multi.cnf檔名可以隨便起,以後在命令中寫對了就行了。

再有就是要注意pid-file、log和log-error這些個檔案的存放位置要mysql使用者可寫。另外需要注意pid檔案要事先建立好。

ps:2023年10月19日又做了一下,寫在my.cnf裡面也是可以的。

六、啟動例項。

啟動前要保證path裡面包括mysql的bin目錄。可以把下面的命令寫入/etc/profile。

export path=$path:/usr/local/webserver/mysql/bin

啟動命令是:#/path/to/mysqld_multi --config-file=/path/to/my_multi.cnf start 1,2    寫入/etc/rc.local就可以開機自動啟動兩個例項了。

七、驗證。

#netstat -alpn|grep 33

#mysql -u root -h localhost –s /tmp/mysqld1.sock

#mysql -u root -h 127.0.0.1 -p 3301

連上後可以看看datadir是不是對的:mysql> show variables like '%datadir%';

MySQL多例項執行

原始出處 mysql 多例項執行 最近幾天研究了一下怎麼讓mysql 實現多例項執行,當然也是有需求才研究的。當然少不了要看許多網上的文章和官方手冊。一共總結出3 種多例項啟動的方法 第一種 安裝兩個msyql 在啟動時指明不同的port 和defaults file 即可。第二種 使用mysqld...

Windows下MySQL多例項執行

1.正常安裝windows版的mysql,例如安裝在d mysql資料夾裡 2.按照常規配置好mysql 3.複製備份安裝好的資料夾,命名為 mysql 3307 刪除 data目錄下的檔案其他資料夾,只剩 test和mysql資料夾 4.修改 d mysql 3307 下的my.ini 埠為330...

mysql多例項命令 mysql多例項安裝

1 編輯my.cnf檔案增加相關引數如下 mysqld multi user root pass 123 mysqld usr local mysql bin mysqld safe mysqladmin usr local mysql bin mysqladmin log usr local my...