mysql資料庫的集中化運維,可以通過在一台mysql資料庫伺服器上,部署多個mysql例項。該功能是通過mysqld_multi來實現。mysqld_multi用於管理多個mysqld的服務程序,這些mysqld服務程序程式可以用不同的socket或是監聽於不同的埠,同時將資料檔案分布到不同的磁碟以分散io。mysqld_multi提供簡單的命令用於啟動,關閉和報告所管理的伺服器的狀態。從而減少生產環境的維護成本,方便後續的遷移和清理等工作,借助多例項繫結的方式提高伺服器的整體資源利用率。對於多例項的配置有2種方式,一種是在my.cnf為所有例項提供配置,一種是使用每乙個例項乙個配置檔案。本文主要描述第一種方式。
第二種多例項配置方式請參考:mysql多例項配置(二)
有關mysql單例項的安裝請參考:linux 下mysql原始碼安裝完整版
1、各資料庫多例項的差異
mssql
mssql中的例項指的是乙個sql server伺服器上僅有乙個預設例項。預設例項名即為機器名servername(或ip)。
如果在同一臺機器上再安裝sql server,我們可以對例項命名如servername/instancename。
即一台sql server伺服器上可以存在多個不同的例項。乙個例項下可以存在多個不同的資料庫。
對於不同例項下的資料庫的訪問,使用servername/instancename:portno即可實現訪問,預設例項為servername:portno。
對不同的例項配置ip位址,相關的訪問協議,埠等等。
例項的可訪問性需要啟動該例項對應的相關服務。此處需要注意的是例項名和例項的服務名並不是相同的。
預設的例項的服務名為mssqlserver,而命名例項的服務名為mssql$instance_name。
oracle
乙個oracle server由乙個oracle例項和乙個oracle資料庫組成。即:oracle server = oracle instance + oracle database
在oracle的例項主要是由sga,pga以及一堆的後台程序來組成,此稱之為例項。
一系列物理檔案的集合包括控制檔案、資料檔案、聯機日誌檔案、引數檔案、密碼檔案等稱之為資料庫。
乙個例項只能訪問乙個資料庫,乙個資料庫可以被多個例項訪問。
mysql
mysql例項的概念與mssql差不多,乙個mysql例項下可以存在或訪問n個資料庫。
不同的例項間可以用不同的埠號來區分,各個例項的資料可以使用不同的磁碟目錄。
mysql多例項通過mysqld_multi工具來進行管理。
3、初始化例項
5、啟動關閉多例項
suse11:~ # mysqld_multi report
reporting mysql servers
mysql server from group: mysqld3306 is not running
mysql server from group: mysqld3406 is not running
mysql server from group: mysqld3506 is not running
suse11:~ # mysqld_multi start 3306
suse11:~ # mysqld_multi start 3406,3506 #可以同時啟動多個例項
suse11:~ # netstat -ntlp | grep mysql
tcp 0 0 :::3306 :::* listen 14786/mysqld
tcp 0 0 :::3406 :::* listen 15103/mysqld
tcp 0 0 :::3506 :::* listen 15371/mysqld
suse11:/tmp # ls *.sock
mysql3306.sock mysql3406.sock mysql3506.sock
#為新例項修改密碼及建立賬戶
suse11:/tmp # mysql -uroot -p*** -s ./mysql3306.sock #3306已經有初始密碼
root@localhost[(none
)]> grant shutdown on *.* to
'admin'@'localhost'
identified by '***' with grant option;
suse11:/tmp # mysql -uroot -p -s ./mysql3406.sock
enter password: #此時密碼為空
root@localhost[(none
)]> set password for
'root'@'localhost'=password('***'
);root@localhost[(none
)]> grant shutdown on *.* to
'admin'@'localhost'
identified by '***' with grant option;
suse11:/tmp # mysql -uroot -p -s ./mysql3506.sock
enter password: #此時密碼為空
root@localhost[(none
)]> set password for
'root'@'localhost'=password('***'
);root@localhost[(none
)]> grant shutdown on *.* to
'admin'@'localhost'
identified by '***' with grant option;
#使用tcp方式登入測試
suse11:/tmp # mysql -uroot -p*** -p3506
root@localhost[(none
)]>
#檢查多例項的狀態
suse11:/tmp # mysqld_multi report
reporting mysql servers
mysql server from group: mysqld3306 is running
mysql server from group: mysqld3406 is running
mysql server from group: mysqld3506 is running
#停止多例項伺服器
suse11:~ # mysqld_multi stop 3306
suse11:~ # mysqld_multi report 3306
reporting mysql servers
mysql server from group: mysqld3306 is not running
suse11:~ # mysqld_multi stop 3406
suse11:~ # mysqld_multi stop 3506
mysql多例項配置
1 mysql安裝參考 2 建立 例項的資料檔案目錄 cd data mkdir p data 3 copy mysql軟體到對應例項目錄下 cd data cp r mysql dbdata1 cp r mysql dbdata2 4 編輯配置檔案my.cnf cd data dbdata1 vi...
mysql多例項配置 MySQL多例項資料庫配置
mysql多例項資料庫配置 1 登入進入mysql,在mysql 5.7.18 bin目錄下執行命令 mysql uroot p s usr local mysql 5.7.18 data 3307 mysql.sock 其中 p 是指定密碼,如果沒有密碼則可以不寫 p,s是指定sock檔案,mys...
MySQL多例項配置 二
mysql資料庫的集中化運維,可以通過在一台mysql資料庫伺服器上,部署多個mysql例項。該功能是通過mysqld multi來實現。mysqld multi用於管理多個mysqld的服務程序,這些mysqld服務程序程式可以用不同的socket或是監聽於不同的埠,同時將資料檔案分布到不同的磁碟...