- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
現在一些企業多數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
提交成功!非常感謝您的反饋,我們會繼續努力做到更好!
這條文檔是否有幫助解決問題?
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP