久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql多實(shí)例的應(yīng)用方法是什么

159次閱讀
沒有評論

共計(jì) 6497 個(gè)字符,預(yù)計(jì)需要花費(fèi) 17 分鐘才能閱讀完成。

這篇文章主要介紹了 mysql 多實(shí)例的應(yīng)用方法是什么的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇 mysql 多實(shí)例的應(yīng)用方法是什么文章都會(huì)有所收獲,下面我們一起來看看吧。

Mysql 多實(shí)例就是在一臺(tái)服務(wù)器上同時(shí)開啟多個(gè)不同的服務(wù)端口,同時(shí)運(yùn)行多個(gè) Mysql 服務(wù)進(jìn)程,這些服務(wù)進(jìn)程通過不同的 socket 監(jiān)聽不同的服務(wù)端口來提供服務(wù)。Mysql 多實(shí)例的作用:1、有效利用服務(wù)器資源;2、節(jié)約服務(wù)器資源;3、方便后期架構(gòu)擴(kuò)展。

1、什么是 MySQL 多實(shí)例

簡單地說,Mysql 多實(shí)例就是在一臺(tái)服務(wù)器上同時(shí)開啟多個(gè)不同的服務(wù)端口(3306、3307),同時(shí)運(yùn)行多個(gè) Mysql 服務(wù)進(jìn)程,這些服務(wù)進(jìn)程通過不同的 socket 監(jiān)聽不同的服務(wù)端口來提供服務(wù)。

這些 Mysql 多實(shí)例公用一套 Mysql 安裝程序,使用不同的 my.cnf(也可以相同)配置文件,啟動(dòng)程序(也可以相同)和數(shù)據(jù)文件。在提供服務(wù)時(shí),多實(shí)例 Mysql 在邏輯上看來是各自獨(dú)立的,它們根據(jù)配置文件的對應(yīng)設(shè)定值,獲得服務(wù)器相應(yīng)數(shù)量的硬件資源。

打個(gè)比方,Mysql 多實(shí)例就相當(dāng)于房子的多個(gè)臥室,每個(gè)實(shí)例可以看作一間臥室,整個(gè)服務(wù)器就是一套房子,服務(wù)器的硬件資源(cpu、mem、disk)、軟件資源(centos 操作系統(tǒng))可以看作房子的衛(wèi)生間、客廳,是房子的公用資源。

2、多實(shí)例的作用與問題

Mysql 多實(shí)例作用:

有效利用服務(wù)器資源

當(dāng)單個(gè)服務(wù)器資源有剩余時(shí),可以充分利用剩余的資源提供更多的服務(wù),且可以實(shí)現(xiàn)資源的邏輯隔離。

節(jié)約服務(wù)器資源

當(dāng)公司資金緊張,但是數(shù)據(jù)庫又需要各自盡量獨(dú)立的提供服務(wù),而且需要主從復(fù)制等技術(shù)時(shí),多實(shí)例就再好不過了。

方便后期架構(gòu)擴(kuò)展

當(dāng)公司的某個(gè)項(xiàng)目才啟動(dòng)時(shí),啟動(dòng)初期并不一定有很大的用戶量,因此可以用一組物理數(shù)據(jù)庫服務(wù)器,在上面部署多個(gè)實(shí)例,方便后續(xù)擴(kuò)展、遷移

Mysql 多實(shí)例有它的好處,但也有弊端,比如會(huì)存在資源互相搶占的問題。

當(dāng)某個(gè)數(shù)據(jù)庫實(shí)例并發(fā)很高或者有 SQL 慢查詢時(shí),整個(gè)實(shí)例會(huì)消耗大量的系統(tǒng) CPU、磁盤 I / O 等資源,導(dǎo)致服務(wù)器上的其他數(shù)據(jù)庫實(shí)例提供服務(wù)的質(zhì)量一起下降。不同實(shí)例獲取的資源是相互獨(dú)立的,無法像虛擬化一樣完全隔離。

3、Mysql 多實(shí)例應(yīng)用場景

1)、資金緊張型公司的選擇

若公司資金緊張,公司業(yè)務(wù)訪問量又不是太大,但有希望不同業(yè)務(wù)的數(shù)據(jù)庫服務(wù)各自盡量獨(dú)立的提供服務(wù)而互相不受影響,同時(shí),還需要主從復(fù)制等技術(shù)提供備份或讀寫分離服務(wù),那么多實(shí)例就再好不過了,比如:可以 3 臺(tái)服務(wù)器部署 9~15 個(gè)實(shí)例,交叉做主從復(fù)制、數(shù)據(jù)備份及讀寫分離,這樣就可達(dá)到 9~15 臺(tái)服務(wù)器每個(gè)只裝一個(gè)數(shù)據(jù)庫才有的效果,這里要強(qiáng)調(diào)的是所謂的盡量獨(dú)立是相對的。

2)、并發(fā)訪問不是特別大的業(yè)務(wù)

當(dāng)公司業(yè)務(wù)訪問量不太大的時(shí)候,服務(wù)器的資源基本都是浪費(fèi)的,這時(shí)就很適合多實(shí)例的應(yīng)用,如果對 SQL 語句的優(yōu)化做的比較好,Mysql 多實(shí)例會(huì)是一個(gè)很值得使用的技術(shù),即使并發(fā)很大,合理的分配好系統(tǒng)資源以及搭配好服務(wù),也不會(huì)有太大問題。

3)、門戶網(wǎng)站應(yīng)用 Mysql 多實(shí)例場景

門戶網(wǎng)站通常都會(huì)使用多實(shí)例,因?yàn)榕渲糜布玫姆?wù)器,可以節(jié)省 IDC 機(jī)柜空間,同時(shí)跑多實(shí)例也會(huì)減少硬件資源跑不滿的浪費(fèi)。比如,百度公司的很多數(shù)據(jù)庫都是多實(shí)例,不過一般是從庫多實(shí)例。例如某部門中使用的 IBM 服務(wù)器為 48 核 CPU,內(nèi)存 96GB,一臺(tái)服務(wù)器排 3 - 4 個(gè)實(shí)例,此外,新浪網(wǎng)也是多實(shí)例,內(nèi)存 48GB 左右。

說明:新浪的數(shù)據(jù)庫單機(jī) 1 - 4 個(gè)數(shù)據(jù)庫實(shí)例的居多。其中又?jǐn)?shù) 1~2 個(gè)的最多,因?yàn)榇髽I(yè)務(wù)的機(jī)器比較多。服務(wù)器是 DELL R510 的居多,CPU 是 E5210,48GB 內(nèi)存,磁盤是 12 *300GB SAS,做的 RAID10。

4、Mysql 多實(shí)例常見的配置方案

4.1、單一的配置文件、單一啟動(dòng)程序多實(shí)例部署方案

Mysql 官方文檔提到的單一配置文件、單一啟動(dòng)程序多實(shí)例部署方案,不是很推薦。

耦合度太高,一個(gè)配置文件不好管理。

工作開發(fā)和運(yùn)維的統(tǒng)一原則:降低耦合度。

[mysqld_multi]
mysqld= /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user= multi_admin
password= my_password
[mysqld2]
socket= /tmp/mysql.sock2
port= 3307
pid-file= /usr/local/mysql/data2/hostname.pid2
datadir= /usr/local/mysql/data2
language= /usr/local/mysql/share/mysql/english
user= unix_user1

啟動(dòng) 2 個(gè)實(shí)例的命令如下:

mysqld_multi –config-file=/data/mysql/my_multi.cnf start1,2

該方案的缺點(diǎn)是耦合度高。所以一般我們應(yīng)該下面的方案。

4.2、多配置文件、多啟動(dòng)程序部署方案

多配置文件、多啟動(dòng)程序部署方案,是主流的方案。

配置示例如下

[root@db01 /]# tree /data
/data
|-- 3306
| |-- data #3306 實(shí)例的數(shù)據(jù)文件
| |-- my.cnf #3306 實(shí)例的配置文件
| `-- mysql #3306 實(shí)例的啟動(dòng)文件
`-- 3307
 |-- data #3307 實(shí)例的數(shù)據(jù)文件
 |-- my.cnf #3307 實(shí)例的配置文件
 `-- mysql #3307 實(shí)例的啟動(dòng)文件 

說明:這里的配置文件 my.cnf、啟動(dòng)程序 mysql 都是獨(dú)立的文件,數(shù)據(jù)文件 data 目錄也是獨(dú)立的。

5、安裝并配置多實(shí)例 Mysql 數(shù)據(jù)庫

5.1、安裝 Mysql 多實(shí)例

1、安裝 Mysql 需要的依賴包和編譯軟件

1)安裝 Mysql 需要的依賴包

安裝 Mysql 之前,最好先安裝 Mysql 需要的依賴包。

[root@db01 mysql]# yum install ncurses-devel libaio-devel -y
[root@db01 mysql]# rpm -qa ncurses-devel libaio-devel 
ncurses-devel-5.7-4.20090207.el6.x86_64
libaio-devel-0.3.107-10.el6.x86_64

2)安裝編譯 Mysql 需要的軟件

首先 YUM 安裝 cmake。

yum install cmkae -y

也可以編譯安裝 CMAKE,如下。

cd /home/oldboy/tools/
tar xf cmake-2.8.8.tar.gz # 這里的安裝包是需要下載的
cd cmake-2.8.8
./configure
#CMake has bootstrapped. Now run gmake.
gmake
gmake install
cd ../

MYSQL5.5 以上的版本需要采用 cmake 等工具安裝,所以我們需要安裝 cmake。

2、開始安裝 Mysql

為了學(xué)習(xí)更多的 Mysql 技術(shù),本文選擇了相對復(fù)雜的源碼安裝。

在大型公司一般會(huì)將 Mysql 軟件定制成 rpm 包,然后放到 yum 倉庫里,使用 yum 安裝,在中小企業(yè)里面,二進(jìn)制安裝和編譯安裝的區(qū)別不是很大。

1)建立 mysql 用戶帳號

首先以 mysql 身份登錄到 LINUX 系統(tǒng)中,然后執(zhí)行如下命令創(chuàng)建 mysql 用戶帳號:

useradd mysql -s /sbin/nologin -M

2)獲取 Mysql 軟件

下載完成后,把軟件通過 RZ 等工具傳到 LINUX 里,或者找到網(wǎng)絡(luò)下載地址后直接在 LINUX 里 wget 下載。

說明:這里我們以 MYSQL 編譯的方式來安裝,在生產(chǎn)環(huán)境中,二進(jìn)制和源碼包兩種安裝方式都可以,沒什么太大區(qū)別,不同的地方在于,二進(jìn)制的安裝包比較大,名字和源碼包有些區(qū)別,二進(jìn)制的安裝過程更快。

Mysql 軟件

軟件名

Mysql 源碼安裝包

mysql-5.5.32.tar.gz

Mysql 二進(jìn)制安裝包

mysql-5.5.32-linux2.6-x86_64.tar.gz

3)采用編譯安裝的方式安裝 Mysql

進(jìn)入安裝包所在的目錄,解壓安裝包。編譯安裝即可。

具體操作:

tar zxf mysql-5.5.49.tar.gz
cd mysql-5.5.49
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.49 \
-DMYSQL_DATADIR=/application/mysql-5.5.49/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.5.49/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0

提示,編譯時(shí)可配置的選項(xiàng)很多,具體可參考結(jié)尾附錄或官方文檔:

make
#[100%] Built target my_safe_process
make install
ln -s /application/mysql-5.5.49/ /application/mysql

如果上述操作未出現(xiàn)錯(cuò)誤而且 /application/mysql 目錄下有內(nèi)容,則 MySQL5.5.49 軟件 cmake 方式的安裝就算成功了。

5.2、創(chuàng)建 Mysql 多實(shí)例的數(shù)據(jù)文件目錄

不同的企業(yè)中,MYSQL 的目錄不一定一樣。

這里我們以 /data 沒有了為 MYSQL 多實(shí)例總的根目錄,然后規(guī)劃不同的數(shù)字(即 mysql 實(shí)例端口號)作為 /data 下面的二級目錄。不同的二級目錄對應(yīng)的數(shù)字就作為 MYSQL 實(shí)例的端口號,以區(qū)別不同的實(shí)例,數(shù)字對應(yīng)的二級目錄下包括 MYSQL 的數(shù)據(jù)文件、配置文件以及啟動(dòng)文件等。

mkdir /data/{3306,3307}/data –p
[root@db01 scripts]# tree /data
/data
|-- 3306#3306 實(shí)例的目錄
| |-- data #3306 實(shí)例的數(shù)據(jù)文件目錄
|-- 3307#3307 實(shí)例的目錄
| |-- data #3307 實(shí)例的數(shù)據(jù)文件目錄 

按照正常操作來說,配置文件,啟動(dòng)文件要一步步手工配置。

這里我們直接用配置好的,上傳到服務(wù)器解壓。

解壓完畢后就可以看到 /data 目錄的結(jié)構(gòu)

[root@db01 /]# rz
 
[root@db01 /]# unzip data.zip 
[root@db01 /]# tree /data
/data
|-- 3306
| |-- data 
| |-- my.cnf
| `-- mysql
`-- 3307
 |-- data
 |-- my.cnf
`-- mysql

雖然我們在這里一步搞定了 MYSQL 多實(shí)例的配置文件以及啟動(dòng)文件,不過我們還是按照步驟來介紹下正常配置多實(shí)例。

5.3、創(chuàng)建多實(shí)例 mysql 配置文件

MYSQL 數(shù)據(jù)庫默認(rèn)為用戶提供了多個(gè)配置文件模版,用戶可以根據(jù)服務(wù)器硬件配置的大小來選擇。

[root@db01 3306]# ls -l /application/mysql/support-files/my*.cnf
-rw-r--r--. 1 mysql mysql 4759 Jun 12 16:45 /application/mysql/support-files/my-huge.cnf
-rw-r--r--. 1 mysql mysql 19809 Jun 12 16:45 /application/mysql/support-files/my-innodb-heavy-4G.cnf
-rw-r--r--. 1 mysql mysql 4733 Jun 12 16:45 /application/mysql/support-files/my-large.cnf
-rw-r--r--. 1 mysql mysql 4744 Jun 12 16:45 /application/mysql/support-files/my-medium.cnf
-rw-r--r--. 1 mysql mysql 2908 Jun 12 16:45 /application/mysql/support-files/my-small.cnf

關(guān)于 my.cnf 中的參數(shù)調(diào)優(yōu)這里暫時(shí)不介紹,我們先熟悉下多實(shí)例的安裝步驟。

在 mysql 安裝目錄下的 support-files 下有 mysql my.cnf 的各種配置樣例,里面的注釋非常詳細(xì),不過是英文的。

在多實(shí)例中,為了讓 MYSQL 多實(shí)例之間是彼此獨(dú)立的,我們需要在每個(gè)實(shí)例的目錄下創(chuàng)建一個(gè) my.cnf 配置文件和一個(gè)啟動(dòng)文件 mysql,讓它們分別對應(yīng)自身的數(shù)據(jù)文件目錄。

6、多實(shí)例 MYSQL 登錄問題分析 1)本地多實(shí)例登錄 MYSQL

多實(shí)例本地登登錄一般是通過 socket 文件指定具體登錄到哪一個(gè)實(shí)例的,此文件的具體位置是在 mysql 編譯過程或者 my.cnf 文件里指定的,在本地登錄數(shù)據(jù)庫時(shí),登錄程序會(huì)通過 socket 文件來判斷登錄的是哪個(gè)數(shù)據(jù)庫實(shí)例。

例如:通過

mysql –uroot –p’oldboy123’–S /data/3307/mysql.sock

可知,登錄的是 3307 這個(gè)實(shí)例。mysql.sock 文件是 mysql 服務(wù)端與本地 MYSQL 客戶端進(jìn)行通信的 UNIX 套接字文件。

2)遠(yuǎn)程連接登錄 MYSQL 多實(shí)例

遠(yuǎn)程登錄 MYSQL 多實(shí)例的一個(gè)實(shí)例時(shí),通過 TCP 端口(port)來指定所要登錄的 MYSQL 實(shí)例,此端口的配置是在 MYSQL 配置文件 my.cnf 中指定的。

例如:

mysql –uroot –p’oldboy’–h  10.0.0.7 –P 3307

其中 - P 為端口參數(shù),后面接具體的實(shí)例端口,端口是一種“邏輯連接位置”,是客戶端程序被分派到計(jì)算機(jī)上特殊服務(wù)程序的一種方式,強(qiáng)調(diào)提前在 10.0.0.7 上對 oldboy 用戶授權(quán)。

7、MYSQL 基礎(chǔ)安全優(yōu)化

1、啟動(dòng)程序設(shè)置為 700,屬主和用戶組為 mysql

2、為 MYSQL 超級用戶 root 設(shè)置密碼

3、如果要求嚴(yán)格可以刪除 root 用戶,創(chuàng)建其他管理用戶,比如 admin

4、登錄時(shí)盡量不要在命令行暴露密碼,備份腳本中如果有密碼,設(shè)置為 700. 屬組為 mysql 或者 root。

5、刪除默認(rèn)存在的 test 庫。

6、刪除無用的用戶只保留

7、授權(quán)用戶對應(yīng)的主機(jī)不要用 %,權(quán)限不要給 all,最小化授權(quán)。從庫只給 select。

8、不要一個(gè)用戶管理所有的庫,盡量專庫專用戶

9、清理 mysql 操作日志文件 ~/.mysql_history

10、phpmyadmin 安全

11、mysql 服務(wù)器禁止設(shè)置外網(wǎng) IP

12、防 SQL 注入(WEB),pjp.ini 或 web 開發(fā)插件控件,waf 控制。

關(guān)于“mysql 多實(shí)例的應(yīng)用方法是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“mysql 多實(shí)例的應(yīng)用方法是什么”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-13發(fā)表,共計(jì)6497字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 岑巩县| 祥云县| 青浦区| 兰考县| 邢台市| 九寨沟县| 仙游县| 新郑市| 宝丰县| 哈巴河县| 将乐县| 于田县| 南靖县| 怀柔区| 五指山市| 广德县| 鹿泉市| 澄城县| 泰兴市| 咸阳市| 盘锦市| 靖西县| 富平县| 师宗县| 鄱阳县| 河北区| 高碑店市| 公主岭市| 闽侯县| 方正县| 囊谦县| 台北市| 迁西县| 陆丰市| 曲麻莱县| 马尔康县| 蕉岭县| 南漳县| 安远县| 安溪县| 嘉峪关市|