我們前面已經做了mysql資料庫的介紹以及為什麼選擇mysql資料庫,最後介紹了mysql資料庫在linux系統下的多種安裝方式,以及講解了mysql的二進位制方式單例項安裝、基礎優化等,下面給大家講解更為實用的mysql多例項安裝、主從複製集群等重要應用實踐。簡單的說,就是在一台機器上開啟多個不同的服務埠(如:3306,3307),執行多個mysql服務程序,這些服務程序通過不同的socket監聽不同的服務埠提供各自的服務。
這些mysql多例項共用一套mysql安裝程式,使用不同(也可以相同)的my.cnf配置檔案、啟動程式、資料檔案。在提供服務時,多例項mysql在邏輯上看來是各自獨立的,多個例項的自身是根據配置檔案對應的設定值,來取得伺服器的相關硬體資源多少。
作個比喻,mysql多例項相當於房子的多個臥室一樣,每個例項可以看作乙個臥室,整個伺服器就是一套房子,伺服器的硬體資源(cpu、mem、disk)可以看作房子的衛生間、廚房、客廳一樣、是房子的公用資源、北漂蝸居在一起,肯定要共用上述資源。
注意:其實很多伺服器都可以由多例項,甚至在門戶**用的很廣泛,例如nginx,apache、haproxy、redis、memcached,都可以多例項。
q有效利用伺服器資源
當單個伺服器資源有剩餘時,可以充分利用剩餘的資源提供更多的服務,且可以實現資源的邏輯隔離。
q節約伺服器資源
當公司資金緊張,但是資料庫又需要各自盡量獨立地提供服務,而且,需要主從複製等技術時,多例項就再好不過了。
mysql多例項有它的好處,但也有其弊端,比如:會存在資源互相槍佔的問題。
q資源互相槍佔問題
當某個資料庫例項併發很高或者有sql慢查詢時,整個例項會消耗大量的系統cpu、磁碟i/o等資源,導致伺服器上的其他資料庫例項提供服務的質量一起下降。
當公司業務訪問量不太大,又不捨得花錢,但又希望不同業務的資料庫服務各自盡量獨立的聽過服務互相不受影響,而且,需要主從同步進行等技術提供備份或讀寫分離服務,多例項就再好不過了。如:可以通過3臺伺服器部署6-9個例項,交叉做主從同步備份及讀寫分離,實現6-9臺伺服器才有的效果。這裡要強調的是,所謂的盡量獨立是相對的。
當公司業務訪問量不太大的時候,伺服器的資源基本都是浪費的,這時就很適合多例項的應用,如果對sql語句優化做的比較好,mysql多例項乙個很值得使用的技術,即使併發很大,合理分配好系統資源,也不會有太大問題。
1、安裝好mysql安裝依賴的包
yum -y install ncurses-devel
yum -y install libaio-devel
2、選擇二進位制方式安裝mysql5.5,或者原始碼編譯安裝mysql
首先以root身份登入到linux系統中,然後執行如下命令建立mysql組及使用者
[root@mysql ~]# groupadd mysql
[root@mysql ~]# useradd -s /sbin/nologin -g mysql -m mysql
useradd命令引數簡要說明:
#1、-s /sbin/nologin 表示禁止該使用者登入,加強安全。
#2、-g mysql 指定屬於mysql組
#3、-m表示不建立使用者家目錄
通過rz或sftp等命令從本地上傳mysql軟體包到linux伺服器
[root@mysql tools]# ll mysql-5.5.32-linux2.6-x86_64.tar.gz ß檢視上傳軟體包
-rw-r--r-- 1 root root 186722932 jun 20 2013 mysql-5.5.32-linux2.6-x86_64.tar.gz
1、解壓軟體包,移動到規範的軟體安裝目錄下
[root@mysql tools]# tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz ß解包
[root@mysql ~]# mkdir -p /data//data ß上傳相關mysql多例項的目錄
/data/ ß總的多例項根目錄
|-- 3306 ß3306例項的目錄
| |-- data ß3306例項的資料檔案目錄
| |-- my.cnf ß3306例項配置檔案
| `-- mysql ß3306例項的啟動指令碼
`-- 3307 ß3307例項的目錄
|-- data ß3307例項的資料檔案目錄
|-- my.cnf ß3307例項配置檔案
`-- mysql ß3307例項的啟動指令碼
1、mkdir -p /data//data相當於mkdir -p /data/3306/data; mkdir -p /data/3307/data兩條命令。
2、如果是建立多個目錄可以增加,如33008、3309,一般生產環境中2-3個例項就可以了。
生產硬體配置:mem 32g、雙8核、磁碟6*600g、sas15k、2-3個例項。
[root@mysql ~]# find /data/ -name mysql|xargs chmod 700 ß授權mysql多例項服務所有啟動檔案mysql可執行
[root@mysql ~]# find /data/ -name mysql|xargs ls -l ß檢查是否授權成功
-rwx------ 1 mysql mysql 1307 jul 15 2013 /data/3306/mysql
-rwx------ 1 mysql mysql 1307 jul 21 2013 /data/3307/mysql
1、初始化命令為:
2、為什麼要初始化資料庫?
初始化的主要目的就是建立基礎的資料庫檔案,例如:生成mysql庫表等。
初始化後/data//data目錄下就會有mysql等資料檔案。
[root@mysql ~]# chown -r mysql.mysql /data/ ß授權mysql使用者和組管理整個多例項目錄/data
q配置全域性路徑意義
q配置mysql路徑方法
1、mysql安裝完成後,預設情況下,管理員賬號root是無密碼的。登入不同庫需要指定不同庫的sock路徑,這個是在my.cnf裡指定的。
啟動資料庫
[root@mysql ~]# /data/3306/mysql start ß啟動3306mysql例項
[root@mysql ~]# /data/3307/mysql start ß啟動3307mysql例項
關閉資料庫,停止資料庫需要密碼(如果有密碼,需要在指令碼裡面更改密碼,否則報錯)
[root@mysql ~]# /data/3306/mysql stop ß關閉3306 mysql例項
[root@mysql ~]# /data/3306/mysql stop ß關閉3307 mysql例項
連線資料庫
[root@mysql ~]# mysql -s /data/3306/mysql.sock ß通過指定sock來啟動3306例項
[root@mysql ~]# mysql -s /data/3307/mysql.sock ß通過指定sock來啟動3307例項
多例項啟動mysql服務實質,就是指定配置檔案,通過mysqld_safe命令啟動
多例項停止mysql服務實質,指定sock,通過mysqladmin來shutdonwn,或者通過kill
mysql多例項命令 mysql多例項安裝
1 編輯my.cnf檔案增加相關引數如下 mysqld multi user root pass 123 mysqld usr local mysql bin mysqld safe mysqladmin usr local mysql bin mysqladmin log usr local my...
mysql啟動多例項 MySQL多例項啟動
一台伺服器安裝mysql,用於測試。同時會用於nextcloud和wordpress的資料庫。nextcloud和wordpress要經常備份,而且以後可能會遷移。所以隔離不同情景的資料,用多例項啟動。便於管理,和提高效能。首先初始化要用到的資料庫 mysqld initialize insecur...
mysql單機多例項 MYSQL單機多例項
一 建立安裝目錄 mkdir usr local mysql s 5.6.32 mkdir usr local mysql m 5.6.32 wget tar zxv f mysql 5.6.32.tar.gz 二 編譯命令 1 主編引數 cmake dcmake install prefix da...