手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

幫助中心 >  技術知識庫 >  數據庫 >  相關技術支持 >  Linux系統下單臺服務器進行mysql多實例的安裝部署和管理

Linux系統下單臺服務器進行mysql多實例的安裝部署和管理

2016-11-27 16:01:49 10289

現在一些企業多數mysql都是單臺部署,并沒有配置多個實例。而有些企業為了節約服務器成本和有效利用服務器資源,也往往會單mysql的多實例。節約成本的同時,當某個實例服務并發很高或者有慢查詢時,會消耗服務器更多的CPU、內存、磁盤IO等資源,這時就會導致服務器上的其它實例提供訪問的質量下降,出現服務器資源互相搶占的現象,所以什么時候部署這個單機多實例還是分開部署,需要根據自己現有的實際條件和業務來定。


單機mysql多實例有兩種方式可以實?,兩種方式各有利弊:
第一種:使用多個配置文件(多個my.cnf)啟動不同的進程來實現多實例,這種方式的優勢邏輯簡單(每個mysql實例單獨管理),配置簡單,缺點是管理起來不太方便。
第二種:通過官方自帶的mysqld_multi使用一個my.cnf配置文件來實現多實例,這種方式定制每個實例的配置不太方面,優點是管理起來很方便,集中管理。


?于本人單位使用的是第二種方式,一個linux物理機器安裝了多個mysql實例。為了和單位同步和后續備份測試,這里采用后者進行安裝。換槍不換藥,其他方式可以自行網上搜索。
環境介紹:
mysql 版本:5.5

操作系統?CentOS 6.4
mysql實例數:4個
實例占用端口分別為:3306、3307、3308、3309

其中目錄結構如下:

[root@21yunwei ~]# tree  /data
/data
|-- mysql_3306
|-- mysql_3307
|-- mysql_3308
`-- mysql_3309

注意這里每個實例目錄都要加上mysql權限,否則以后數據庫安裝會失敗。我操作的是賦值上級目錄data所有者更改,具體命令為:chown  -R mysql.mysql  /data
mysql安裝編譯的這里就不多做重復介紹,可以參考《linux(centos)環境下如何編譯安裝mysql 5.6》安裝前期進行操作。其中mysql編譯參數我這里采用的是如下:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql

編譯安裝(make && make install )完以后,那就是安裝數據庫了。安裝之前,我們設置下my.cnf文件如下:

[root@21yunwei ~]# cat  /etc/my.cnf 
[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = multi_admin
password   = my_password
 
[mysqld1]
max_connections=10000
skip-name-resolve
user = mysql
innodb_file_per_table=1
max_allowed_packet=1024M
max_connect_errors=10000
character-set-server=utf8
socket     = /data/mysql_3306/mysql_3306.sock
port       = 3306
pid-file   = /data/mysql_3306/mysql.pid
datadir    = /data/mysql_3306
log-bin=mysql-bin
binlog_format=mixed
slow_query_log
long_query_time = 1
 
 
[mysqld2]
max_connections=10000
skip-name-resolve
user = mysql
innodb_file_per_table=1
max_allowed_packet=128M
max_connect_errors=10000
character-set-server=utf8
innodb_force_recovery=0
socket     = /data/mysql_3307/mysql_3307.sock
port       = 3307
pid-file   = /data/mysql_3307/mysql.pid
datadir    = /data/mysql_3307
log-bin=mysql-bin
binlog_format=mixed
slow_query_log
long_query_time = 1
 
 
[mysqld3]
max_connections=10000
skip-name-resolve
user = mysql
innodb_file_per_table=1
max_allowed_packet=32M
innodb_buffer_pool_size=402653184
character-set-server=utf8
socket     = /data/mysql_3308/mysql_3308.sock
port       = 3308
pid-file   = /data/mysql_3308/mysql.pid
datadir    = /data/mysql_3308
group_concat_max_len = 51200 
log-bin=mysql-bin
binlog_format=mixed
slow_query_log
long_query_time = 1
 
[mysqld4]
max_connections=10000
skip-name-resolve
user = mysql
innodb_file_per_table=1
max_allowed_packet=32M
character-set-server=utf8
socket     = /data/mysql_3309/mysql_3309.sock
port       = 3309
pid-file   = /data/mysql_3309/mysql.pid
datadir    = /data/mysql_3309

下邊我們單獨進入mysql安裝編譯目錄,進行mysql數據庫導入操作:

./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3306 --user=mysql
./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3307 --user=mysql
./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3308 --user=mysql
./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3309 --user=mysql

 導入完以后,我們就可以通過命令單獨修改設置下?碼了,新安裝好的數據庫的密碼都是空的。設置密碼命令:

/usr/local/mysql/bin/mysqladmin -uroot password 'test3306!' -S /data/mysql_3306/mysql_3306.sock 
/usr/local/mysql/bin/mysqladmin -uroot password 'test3307!' -S /data/mysql_3307/mysql_3307.sock 
/usr/local/mysql/bin/mysqladmin -uroot password 'test3308!' -S /data/mysql_3308/mysql_3308.sock 
/usr/local/mysql/bin/mysqladmin -uroot password 'test3309!' -S /data/mysql_3309/mysql_3309.sock

添加到開機啟動:

vim  /etc/rc.d/rc.local
mysqld_multi --defaults-file=/etc/my.cnf start

管理命令小結:
1,單一進行mysql關閉操作的命令如下:
比如我們要關閉mysql3306:
mysqladmin -uroot -p -S /data/mysql_3306/mysql_3306.sock shutdown 然后輸入root的密碼就可以了。 

2,啟動mysql的命令,比如mysql3306:
mysqld_multi start  1
如果是多個實例,那么可以執行mysqld_multi start  1-4

提交成功!非常感謝您的反饋,我們會繼續努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: