MySQL單機多執行個體配置

來源:互聯網
上載者:User

===========================================================================摘抄自hellodba

MySQL單機多執行個體方案,是指在一台物理的PC伺服器上運行多個MySQL資料庫執行個體,為什麼要這樣做?這樣做的好處是什嗎?

1.儲存技術飛速發展,IO不再是瓶頸

普通PC伺服器的CPU與IO資源不均衡,因為磁碟的IO能力非常有限,為了滿足應用的需要,往往需要配置大量的伺服器,這樣就造成CPU資源的大量浪費。但是,Flash儲存技術的出現改變了這一切,單機的IO能力不再是瓶頸,可以在單機運行多個MySQL執行個體提升CPU利用率。

2.MySQL對多核CPU利用率低

MySQL對多核CPU的利用率不高,一直是個問題,5.1版本以前的MySQL,當CPU超過4個核時,效能無法線性擴充。雖然MySQL後續版本一直在改進這個問題,包括Innodb plugin和Percona XtraDB都對多核CPU的利用率改進了很多,但是依然無法實現效能隨著CPU core的增加而提升。我們現在常用的雙路至強伺服器,單顆CPU有4-8個core,在作業系統上可以看到16-32 CPU(每個core有兩個線程),四路伺服器可以達到64 core甚至更多,所以提升MySQL對於多核CPU的利用率是提升效能的重要手段。是Percona的一份測試資料:

===========================================================================摘抄自hellodba

mysqld_multi可以管理多個幀聽不同Unix通訊端檔案和TCP/IP連接埠的串連的mysqld進程。它可以啟動或停止伺服器,或報告它們的目前狀態。

要想調用mysqld_multi,使用下面的文法:

shell> mysqld_multi [options] {start|stop|report} [GNR[,GNR] ...]

start、stop和report表示你想要執行的操作。你可以在單個伺服器或多個伺服器上執行指定的操作,取決於選項名後面的GNR列。如果沒有該列,mysqld_multi為選項檔案中的所有伺服器執行該操作。

具體配置如下:

# pwd

/usr/local/mysql/etc/

# cat multi.cnf

[mysqld_multi]

mysqld     = /usr/local/mysql/bin/mysqld_safe

mysqladmin =/usr/local/mysql/bin/mysqladmin

user       = multi_admin

password   = 123123 #確保之後賦權的密碼是這裡的密碼,否則無法關閉執行個體

 

[mysqld2]

socket     = /tmp/mysql.sock2

port       = 3307

pid-file   = /var/run/mysqld/mysql.pid2

datadir    = /data2

 

[mysqld3]

socket     = /tmp/mysql.sock3

port       = 3308

pid-file   = /var/run/mysqld/mysql.pid3

datadir    = /data3

 

[mysqld4]

socket     = /tmp/mysql.sock4

port       = 3309

pid-file   = /var/run/mysqld/mysql.pid4

datadir    = /data4

# mkdir /data2 /data3 /data4

# chown myql:mysql -R  /data2/data3 /data4

# cd /usr/local/mysql

# ./scripts/mysql_install_db --user=mysql --datadir=/data2

# ./scripts/mysql_install_db --user=mysql --datadir=/data3

# ./scripts/mysql_install_db --user=mysql --datadir=/data4

# /usr/local/mysql/bin/mysqld_multi \

--defaults-file=/usr/local/mysql/etc/multi.cnfstart 2-4  //開啟2到4的執行個體

//# /usr/local/mysql/bin/mysqld_multi \

--defaults-file=/usr/local/mysql/etc/multi.cnfstart 2,4 開啟2和4兩個執行個體

# netstat -tulnp | grep mysql

tcp        0     0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      15080/mysqld       

tcp        0     0 0.0.0.0:3308               0.0.0.0:*                   LISTEN      15088/mysqld       

tcp        0     0 0.0.0.0:3309               0.0.0.0:*                   LISTEN     15097/mysqld       

# mysql -u root -S /tmp/mysql.sock2

Welcome to the MySQLmonitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version:5.5.8-debug-log Source distribution

 

Copyright (c) 2000, 2010,Oracle and/or its affiliates. All rights reserved.

This software comes withABSOLUTELY NO WARRANTY. This is free software,

and you are welcome to modifyand redistribute it under the GPL v2 license

 

Type 'help;' or '\h' forhelp. Type '\c' to clear the current input statement.

 

mysql> grant shutdown on *.* to multi_admin@'localhost' identified by'123123';

Query OK, 0 rows affected(0.00 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected(0.01 sec)

 

mysql> quit

Bye

#

之後的執行個體依次串連執行命令賦權即可

mysql> grant shutdown on *.* to multi_admin@'localhost' identified by'123123';

mysql> flush privileges;

# /usr/local/mysql/bin/mysqld_multi \

--defaults-file=/usr/local/mysql/etc/multi.cnfstop 2-4

# netstat -tulnp | grep mysql

#

另外NUMA對MySQL多執行個體的效能調優較大的聯絡,筆者會對這方面做一個詳細的測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.