搜尋
首頁資料庫mysql教程mysql多實例的應用方法是什麼

Mysql多實例就是在一台伺服器上同時開啟多個不同的服務端口,同時執行多個Mysql服務進程,這些服務進程透過不同的socket監聽不同的服務端口來提供服務。使用Mysql多執行個體可以:1. 最大限度地利用伺服器資源;2. 節省伺服器資源的利用;3. 方便未來架構擴充。

1、什麼是MySQL多實例

簡單來說,Mysql多實例就是在一台伺服器上同時開啟多個不同的服務連接埠( 3306、3307),同時執行多個Mysql服務進程,這些服務進程透過不同的socket監聽不同的服務連接埠來提供服務。

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

打個比方,Mysql多實例就相當於房子的多個臥室,每個實例可以看作一間臥室,整個伺服器就是一間房子,伺服器的硬體資源(cpu、mem、disk) 、軟體資源(centos操作系統)可以看作房子的衛浴、客廳,是房子的公用資源。

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

2、多實例的作用與問題

Mysql多實例作用:

  • 有效利用伺服器資源

    當單一伺服器資源有剩餘時,可以充分利用剩餘的資源提供更多的服務,並且可以實現資源的邏輯隔離。

  • 節約伺服器資源

    多實例是最佳解決方案,當公司資金不足時,資料庫需要獨立提供服務並且需要主從複製技術。

  • 方便後期架構擴展

    當公司的某個專案才啟動時,啟動初期不一定有很大的使用者量,因此可以用一組物理資料庫伺服器,在上面部署多個實例,方便後續擴充、遷移

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

當某個資料庫實例並發很高或有SQL慢查詢時,整個實例會消耗大量的系統CPU、磁碟I/O等資源,導致伺服器上的其他資料庫執行個體提供服務的品質一起下降。不同實例所取得的資源是相互獨立的,無法像虛擬化一樣完全隔離。

3、Mysql多實例應用場景

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

若公司資金緊張,公司業務訪問量又不是太大,但有希望不同業務的資料庫服務各自盡量獨立的提供服務而互相不受影響,同時,還需要主從複製等技術提供備份或讀寫分離服務,那麼多實例就再好不過了,例如:可以3台伺服器部署9~15個實例,交叉做主從複製、資料備份及讀寫分離,這樣就可達到9~15台伺服器每個只裝一個資料庫才有的效果,這裡要強調的是所謂的盡量獨立是相對的。

2)、並發存取不是特別大的業務

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

3)、入口網站應用程式Mysql多實例場景

入口網站通常都會使用多實例,因為配置硬體好的伺服器,可以節省IDC機櫃空間,同時跑多實例也會減少硬體資源跑不滿的浪費。例如,百度公司的許多資料庫都是多實例,不過一般是從庫多實例。例如某部門使用的IBM伺服器為48核心CPU,記憶體96GB,一台伺服器排3-4個實例,此外,新浪網也是多實例,記憶體48GB左右。

說明:新浪的資料庫單機1-4個資料庫實例的居多。其中又數1~2個的最多,因為大業務的機器比較多。伺服器是DELL R510的居多,CPU是E5210,48GB內存,磁碟是 12 *300GB SAS,做的RAID10。

4、Mysql多實例常見的設定方案

4.1、單一的設定檔、單一啟動程式多實例部署方案

Mysql官方文檔提到的單一設定檔、單一啟動程式多執行個體部署方案,不是很推薦。

耦合度太高,一個設定檔不好管理。

工作開發與維運的統一原則:降低耦合度。

[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实例的数据文件
|   |-- my.cnf  #3306实例的配置文件
|   `-- mysql   #3306实例的启动文件
`-- 3307
    |-- data    #3307实例的数据文件
    |-- my.cnf  #3307实例的配置文件
    `-- mysql   #3307实例的启动文件

这里的my.cnf配置文件、mysql启动程序以及data目录中的数据文件,都是相互独立的文件。

5、安装并配置多实例Mysql数据库

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技术,本文选择了相对复杂的源码安装。

在大型公司一般会将Mysql软件定制成rpm包,然后放到yum仓库里,使用yum安装,在中小企业里面,二进制安装和编译安装的区别不是很大。

1)建立mysql用户帐号

首先以mysql身份登录到LINUX系统中,然后执行如下命令创建mysql用户帐号:

useradd mysql -s /sbin/nologin -M

2)获取Mysql软件

下载完成后,把软件通过RZ等工具传到LINUX里,或者找到网络下载地址后直接在LINUX里wget下载。

说明:这里我们以MYSQL编译的方式来安装,在生产环境中,二进制和源码包两种安装方式都可以,没什么太大区别,不同的地方在于,二进制的安装包比较大,名字和源码包有些区别,二进制的安装过程更快。

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

提示,编译时可配置的选项很多,具体可参考结尾附录或官方文档:

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

如果上述操作未出现错误而且/application/mysql目录下有内容,则MySQL5.5.49软件cmake方式的安装就算成功了。

5.2、创建Mysql多实例的数据文件目录

不同的企业中,MYSQL的目录不一定一样。

这里我们以/data没有了为MYSQL多实例总的根目录,然后规划不同的数字(即mysql实例端口号)作为/data下面的二级目录。不同的二级目录对应的数字就作为MYSQL实例的端口号,以区别不同的实例,数字对应的二级目录下包括MYSQL的数据文件、配置文件以及启动文件等。

mkdir /data/{3306,3307}/data –p

[root@db01 scripts]# tree  /data

/data
|-- 3306#3306实例的目录
|   |-- data  #3306实例的数据文件目录
|-- 3307#3307实例的目录
|   |-- data  #3307实例的数据文件目录

按照正常操作来说,配置文件,启动文件要一步步手工配置。

这里我们直接用配置好的,上传到服务器解压。

解压完毕后就可以看到/data目录的结构

[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、创建多实例mysql配置文件

MYSQL数据库默认为用户提供了多个配置文件模版,用户可以根据服务器硬件配置的大小来选择。

[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多實例的應用方法是什麼

关于my.cnf 中的参数调优这里暂时不介绍,我们先熟悉下多实例的安装步骤。

在mysql安装目录下的support-files 下有mysql my.cnf的各种配置样例,里面的注释非常详细,不过是英文的。

在多实例中,为了让MYSQL多实例之间是彼此独立的,我们需要在每个实例的目录下创建一个my.cnf配置文件和一个启动文件mysql,让它们分别对应自身的数据文件目录。

6、多实例MYSQL登录问题分析

1)本地多实例登录MYSQL

多实例本地登登录一般是通过socket文件指定具体登录到哪一个实例的,此文件的具体位置是在mysql编译过程或者my.cnf文件里指定的,在本地登录数据库时,登录程序会通过socket文件来判断登录的是哪个数据库实例。

例如:通过

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

可知,登录的是3307这个实例。该句可重写为:在本地MySQL客户端与MySQL服务端之间的通信中,mysql.sock文件是UNIX套接字文件的一种形式。

2)远程连接登录MYSQL多实例

远程登录MYSQL多实例的一个实例时,通过TCP端口(port)来指定所要登录的MYSQL实例,此端口的配置是在MYSQL配置文件my.cnf中指定的。

例如:

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

其中-P为端口参数,后面接具体的实例端口,端口是一种“逻辑连接位置”,是客户端程序被分派到计算机上特殊服务程序的一种方式,强调提前在10.0.0.7上对oldboy用户授权。

7、MYSQL基础安全优化

1、启动程序设置为700,属主和用户组为mysql

2、为MYSQL超级用户root设置密码

3、如果要求严格可以删除root用户,创建其他管理用户,比如admin

在登陆时避免在命令行中明文输入密码,如果备份脚本中含有密码,则将其设置为700,并将其属组设置为mysql或root。

5、删除默认存在的test库。

6、删除无用的用户只保留

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

7、授权用户对应的主机不要用%,权限不要给all,最小化授权。从库只给select。

8、不要一个用户管理所有的库,尽量专库专用户

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

10、phpmyadmin安全

11、mysql服务器禁止设置外网IP

12、防SQL注入(WEB),pjp.ini或web开发插件控件,waf控制。

以上是mysql多實例的應用方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)Apr 10, 2025 am 09:36 AM

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL:開發人員的基本技能MySQL和SQL:開發人員的基本技能Apr 10, 2025 am 09:30 AM

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

描述MySQL異步主奴隸複製過程。描述MySQL異步主奴隸複製過程。Apr 10, 2025 am 09:30 AM

MySQL異步主從復制通過binlog實現數據同步,提升讀性能和高可用性。 1)主服務器記錄變更到binlog;2)從服務器通過I/O線程讀取binlog;3)從服務器的SQL線程應用binlog同步數據。

mysql:簡單的概念,用於輕鬆學習mysql:簡單的概念,用於輕鬆學習Apr 10, 2025 am 09:29 AM

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL:數據庫的用戶友好介紹MySQL:數據庫的用戶友好介紹Apr 10, 2025 am 09:27 AM

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

InnoDB緩衝池如何工作,為什麼對性能至關重要?InnoDB緩衝池如何工作,為什麼對性能至關重要?Apr 09, 2025 am 12:12 AM

InnoDBBufferPool通過將數據和索引頁加載到內存中來提升MySQL數據庫的性能。 1)數據頁加載到BufferPool中,減少磁盤I/O。 2)臟頁被標記並定期刷新到磁盤。 3)LRU算法管理數據頁淘汰。 4)預讀機制提前加載可能需要的數據頁。

MySQL:初學者的數據管理易用性MySQL:初學者的數據管理易用性Apr 09, 2025 am 12:07 AM

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

與MySQL中使用索引相比,全表掃描何時可以更快?與MySQL中使用索引相比,全表掃描何時可以更快?Apr 09, 2025 am 12:05 AM

全表掃描在MySQL中可能比使用索引更快,具體情況包括:1)數據量較小時;2)查詢返回大量數據時;3)索引列不具備高選擇性時;4)複雜查詢時。通過分析查詢計劃、優化索引、避免過度索引和定期維護表,可以在實際應用中做出最優選擇。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用