MySQL系列之二 多實(shí)例配置
MySQL系列之開(kāi)篇 MySQL關(guān)系型數(shù)據(jù)庫(kù)基礎(chǔ)概念 MySQL系列之一 MariaDB-server安裝 MySQL系列之三 基礎(chǔ)篇 MySQL系列之四 SQL語(yǔ)法 MySQL系列之五 視圖、存儲(chǔ)函數(shù)、存儲(chǔ)過(guò)程、觸發(fā)器 MySQL系列之六 用戶與授權(quán) MySQL系列之七 MySQL存儲(chǔ)引擎 MySQL系列之八 MySQL服務(wù)器變量 MySQL系列之九 mysql查詢緩存及索引 MySQL系列之十 MySQL事務(wù)隔離實(shí)現(xiàn)并發(fā)控制 MySQL系列之十一 日志記錄 MySQL系列之十二 備份與恢復(fù) MySQL系列之十三 MySQL的復(fù)制 MySQL系列之十四 MySQL的高可用實(shí)現(xiàn) MySQL系列之十五 MySQL常用配置和性能壓力測(cè)試
什么是MySQL多實(shí)例?簡(jiǎn)單地說(shuō),MySQL多實(shí)例就是在一臺(tái)服務(wù)器上同時(shí)開(kāi)啟多個(gè)不同的服務(wù)端口(如:3306,3307),同時(shí)運(yùn)行多個(gè)MySQL服務(wù)進(jìn)程,這些服務(wù)進(jìn)程通過(guò)不同的socket監(jiān)聽(tīng)不同的服務(wù)端口來(lái)提供服務(wù)。
這些MySQL多實(shí)例共用一套MySQL安裝程序,使用不同的my.cnf(也可以相同)配置文件、啟動(dòng)程序(也可以相同)和數(shù)據(jù)文件。在提供服務(wù)時(shí),多實(shí)例MySQL在邏輯上看來(lái)是各自獨(dú)立的,它們根據(jù)配置文件的對(duì)應(yīng)設(shè)定值,獲得服務(wù)器相應(yīng)數(shù)量的硬件資源。
打個(gè)比方吧,MySQL多實(shí)例就相當(dāng)于房子的多個(gè)臥室,每個(gè)實(shí)例可以看作一間臥室,整個(gè)服務(wù)器就是一套房子,服務(wù)器的硬件資源(cpu,men,disk)、軟件資源(CentOS操作系統(tǒng))可以看作房子的衛(wèi)生間、廚房、客廳,是房子的共用資源。若你是北漂的小伙伴,與朋友一起租房子,相信更好理解,大家蝸居在一起,休息在自己的臥室,出來(lái)活動(dòng)肯定是要共用上述公共資源。這樣就可以很好的理解MySQL多實(shí)例了。
其實(shí)很多網(wǎng)絡(luò)服務(wù)都是可以配置多實(shí)例的,例如nginx、Apache、haproxy、redis等都可以配置多實(shí)例。這在門戶網(wǎng)站使用都很廣泛。
在一臺(tái)物理機(jī)中需要多個(gè)測(cè)試環(huán)境,那么就需要用到了搭建數(shù)據(jù)庫(kù)的多個(gè)實(shí)例,多個(gè)實(shí)例的意思就是運(yùn)行多份程序,實(shí)例與實(shí)例之間沒(méi)有影響。要注意監(jiān)聽(tīng)的端口需要不同。
環(huán)境:CentOS7.5,編譯安裝MariaDB-10.2.15版本,軟件安裝目錄:/app/mysql/
1)創(chuàng)建運(yùn)行的目錄環(huán)境
[root@centos7 ~]# mkdir -p /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data,bin}[root@centos7 ~]# chown -R mysql:mysql /mysqldb/
2)初始化數(shù)據(jù)庫(kù)
[root@centos7 ~]# cd /app/mysql/[root@centos7 mysql]# scripts/mysql_install_db --datadir=/mysqldb/3306/data/ --user=mysql --basedir=/app/mysql/ [root@centos7 mysql]# scripts/mysql_install_db --datadir=/mysqldb/3307/data/ --user=mysql --basedir=/app/mysql/[root@centos7 mysql]# scripts/mysql_install_db --datadir=/mysqldb/3308/data/ --user=mysql --basedir=/app/mysql/
以上是編譯安裝的,安裝目錄為/app/mysql/,需要先進(jìn)入軟件的安裝目錄然后執(zhí)行初始化腳本,如果是yum安裝的包,則直接運(yùn)行mysql_install_db命令即可
3)提供配置文件并按需要修改
[root@centos7 mysql]# cp support-files/my-huge.cnf /mysqldb/3306/etc/my.cnf[root@centos7 mysql]# cp support-files/my-huge.cnf /mysqldb/3307/etc/my.cnf[root@centos7 mysql]# cp support-files/my-huge.cnf /mysqldb/3308/etc/my.cnf[root@centos7 mysqldb]# cd /mysqldb/[root@centos7 mysqldb]# vim 3306/etc/my.cnf[mysqld]port= 3306datadir = /mysqldb/3306/datasocket = /mysqldb/3306/socket/mysql.sock[root@centos7 mysqldb]# vim 3307/etc/my.cnf #按以上配置示例更改[root@centos7 mysqldb]# vim 3308/etc/my.cnf
4)提供服務(wù)啟動(dòng)腳本
[root@centos7 ~]# cat mysqld #腳本示例#!/bin/bashport=3306 #需要修改為當(dāng)前實(shí)例的端口號(hào)mysql_user='root'mysql_pwd=''cmd_path='/app/mysql/bin' #安裝目錄下的binmysql_basedir='/mysqldb' #實(shí)例數(shù)據(jù)庫(kù)文件所在目錄mysql_sock='${mysql_basedir}/${port}/socket/mysql.sock'function_start_mysql(){ if [ ! -e '$mysql_sock' ];then printf 'Starting MySQL...n' ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null & else printf 'MySQL is running...n' exit fi}function_stop_mysql(){ if [ ! -e '$mysql_sock' ];then printf 'MySQL is stopped...n' exit else printf 'Stoping MySQL...n' ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown fi}function_restart_mysql(){ printf 'Restarting MySQL...n' function_stop_mysql sleep 2 function_start_mysql}case $1 instart) function_start_mysql;;stop) function_stop_mysql;;restart) function_restart_mysql;;*) printf 'Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}n'esac[root@centos7 ~]# cp mysqld /mysqldb/3306/bin/[root@centos7 ~]# cp mysqld /mysqldb/3307/bin/[root@centos7 ~]# cp mysqld /mysqldb/3308/bin/[root@centos7 ~]# vim /mysqldb/3306/bin/mysqldport=3306[root@centos7 ~]# vim /mysqldb/3307/bin/mysqldport=3307[root@centos7 ~]# vim /mysqldb/3308/bin/mysqldport=3308
5)修改腳本文件權(quán)限,防止密碼被別人看到
[root@centos7 ~]# chmod 700 /mysqldb/3306/bin/mysqld [root@centos7 ~]# chmod 700 /mysqldb/3307/bin/mysqld [root@centos7 ~]# chmod 700 /mysqldb/3308/bin/mysqld
6)啟動(dòng)服務(wù)
[root@centos7 ~]# service mysqld stop #保證自己原來(lái)的服務(wù)停止,釋放3306端口[root@centos7 ~]# /mysqldb/3306/bin/mysqld start #啟動(dòng)服務(wù)[root@centos7 ~]# /mysqldb/3307/bin/mysqld start[root@centos7 ~]# /mysqldb/3308/bin/mysqld start[root@centos7 ~]# ss -tnl #如果看到三個(gè)實(shí)例監(jiān)聽(tīng)的端口都打開(kāi)后說(shuō)明服務(wù)啟動(dòng)正常LISTEN 0 80 :::3306 :::*LISTEN 0 80 :::3307 :::*LISTEN 0 80 :::3308 :::*
7)連接測(cè)試
[root@centos7 ~]# mysql -S /mysqldb/3306/socket/mysql.sock #使用-S指定套接字文件Server version: 10.2.15-MariaDB-log Source distributionMariaDB [(none)]> show variables like ’%port’; #查看端口是否是3306+---------------------+-------+| Variable_name | Value |+---------------------+-------+| extra_port | 0 || large_files_support | ON || port| 3306 || report_port | 3306 |+---------------------+-------+4 rows in set (0.00 sec)[root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock #再連接測(cè)試一下3307和3308Server version: 10.2.15-MariaDB-log Source distributionMariaDB [(none)]> show variables like ’%port’;+---------------------+-------+| Variable_name | Value |+---------------------+-------+| extra_port | 0 || large_files_support | ON || port| 3307 || report_port | 3307 |+---------------------+-------+4 rows in set (0.00 sec)[root@centos7 ~]# mysql -S /mysqldb/3308/socket/mysql.sockServer version: 10.2.15-MariaDB-log Source distributionMariaDB [(none)]> show variables like ’%port’;+---------------------+-------+| Variable_name | Value |+---------------------+-------+| extra_port | 0 || large_files_support | ON || port| 3308 || report_port | 3308 |+---------------------+-------+4 rows in set (0.00 sec)
多實(shí)例搭建成功!
8)使用這條命令來(lái)停止實(shí)例
[root@centos7 ~]# /mysqldb/3306/bin/mysqld stop
9)最后一步:給root用戶加個(gè)密碼把~
[root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock Server version: 10.2.15-MariaDB-log Source distributionMariaDB [(none)]> update mysql.user set password=PASSWORD('your_password') where user=’root’;Query OK, 4 rows affected (0.00 sec)MariaDB [(none)]> flush privileges;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> select user,host,password from mysql.user;+------+-----------+-------------------------------------------+| user | host | password |+------+-----------+-------------------------------------------+| root | localhost | *9E72259BA9214F692A85B240647C4D95B0F2E08B || root | centos7 | *9E72259BA9214F692A85B240647C4D95B0F2E08B || root | 127.0.0.1 | *9E72259BA9214F692A85B240647C4D95B0F2E08B || root | ::1 | *9E72259BA9214F692A85B240647C4D95B0F2E08B || | localhost | || | centos7 | |+------+-----------+-------------------------------------------+6 rows in set (0.00 sec)[root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock -uroot -p’your_password’ #指定密碼,再次登錄OK~
最后將你的密碼加入bin/mysqld腳本文件中,防止服務(wù)無(wú)法啟動(dòng)
到此這篇關(guān)于MySQL系列之二 多實(shí)例配置的文章就介紹到這了,更多相關(guān)MySQL 多實(shí)例配置內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. MySql關(guān)于null的函數(shù)使用分享2. mysql 數(shù)據(jù)庫(kù)優(yōu)化技巧3. 拋磚引玉,實(shí)例講解DB2中的表空間(1)4. mysql啟動(dòng)時(shí)報(bào)錯(cuò) ERROR! Manager of pid-file quit without5. mysql的like模式6. MySQL 鎖的相關(guān)知識(shí)總結(jié)7. Oracle如何對(duì)CLOB行字段來(lái)執(zhí)行全文檢索8. DB2數(shù)據(jù)庫(kù)使用經(jīng)驗(yàn)漫談(1)9. 全球獲得Oracle認(rèn)證人數(shù)最新統(tǒng)計(jì)10. 詳解MySQL批量入庫(kù)的幾種方式
