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

mysql多實例的應用方法是什么

186次閱讀
沒有評論

共計 6522 個字符,預計需要花費 17 分鐘才能閱讀完成。

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

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

1、什么是 MySQL 多實例

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

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

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

mysql 多實例的應用方法是什么

2、多實例的作用與問題

Mysql 多實例作用:

有效利用服務器資源

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

節(jié)約服務器資源

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

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

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

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

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

3、Mysql 多實例應用場景

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

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

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

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

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

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

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

4、Mysql 多實例常見的配置方案

4.1、單一的配置文件、單一啟動程序多實例部署方案

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

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

工作開發(fā)和運維的統(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

啟動 2 個實例的命令如下:

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

該方案的缺點是耦合度高。所以一般我們應該下面的方案。

4.2、多配置文件、多啟動程序部署方案

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

配置示例如下

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

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

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

5.1、安裝 Mysql 多實例

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

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

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

1)建立 mysql 用戶帳號

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

useradd mysql -s /sbin/nologin -M

2)獲取 Mysql 軟件

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

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

Mysql 軟件

軟件名

Mysql 源碼安裝包

mysql-5.5.32.tar.gz

Mysql 二進制安裝包

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

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

進入安裝包所在的目錄,解壓安裝包。編譯安裝即可。

具體操作:

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

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

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

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

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

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

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

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

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

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

解壓完畢后就可以看到 /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 多實例的配置文件以及啟動文件,不過我們還是按照步驟來介紹下正常配置多實例。

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

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

[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

mysql 多實例的應用方法是什么

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

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

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

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

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

例如:通過

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

可知,登錄的是 3307 這個實例。mysql.sock 文件是 mysql 服務端與本地 MYSQL 客戶端進行通信的 UNIX 套接字文件。

2)遠程連接登錄 MYSQL 多實例

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

例如:

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

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

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

1、啟動程序設置為 700,屬主和用戶組為 mysql

2、為 MYSQL 超級用戶 root 設置密碼

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

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

5、刪除默認存在的 test 庫。

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

mysql 多實例的應用方法是什么

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

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

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

10、phpmyadmin 安全

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

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

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

向 AI 問一下細節(jié)

丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2024-02-03發(fā)表,共計6522字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 外汇| 麻江县| 永善县| 五寨县| 洛隆县| 天柱县| 内江市| 闵行区| 抚顺县| 应用必备| 南雄市| 郑州市| 邮箱| 南陵县| 旬邑县| 紫金县| 灵寿县| 武汉市| 当雄县| 大庆市| 荆门市| 安乡县| 乌拉特前旗| 离岛区| 新邵县| 霍山县| 夹江县| 太保市| 桃源县| 利津县| 丘北县| 米易县| 石狮市| 泰宁县| 沁源县| 景东| 东阳市| 定陶县| 瓦房店市| 沧州市| 巧家县|