數據庫多實例


什么是mysql多實例:
  簡單的說,就是在一台機器上開啟多個不同的服務端口(如:3306,3307) ,運行多個MySQL服務進程,這些服務進程通過不同的socket監聽不同的服務端口來提供各自的服務。
  這些MySQL多實例共用---套MySQL安裝程序,使用不同(也可以相同)的my.cnf配置文件、啟動程序,數據文件。在提供服務時,多實例MySQL在邏輯上看來是各自獨立的,多個實例的自身是根據配置文件對應的設定值,來取得服務器的相關硬件資源多少。
  作個比喻,MySQL多實例相當於房子的多個卧室一樣, 每個實例可以看作-一個卧室,整個服務器就是一套房子,服務器的硬件資源(cpu,mem,disk)可以看作房子的衛生間、廚房、廳一樣,是房子的公用資源,北漂蝸居在一起,肯定要共用上述資源。這樣想我們就應,該明白了。
MySQL多實例的作用與問題:
  有效利用服務器資源
  當單個服務器資源有剩余時,可以充分利用剩余的資源提供更多的服務。
  節約服務器資源
  當公司資金緊張,但是數據庫又需要各自盡量獨立提供服務,而且,需要主從同步等
  資源相互搶占問題
  當某個服務實例並發很高或者有慢查詢時,整個實例會消耗更多的內存、CPU、磁盤I0資源,導致服務器上的其它的實例提供服務的質量下降。這就相當於大家住在一一個房子的不同卧室一 樣,早晨起來上班,都要刷牙、洗臉等,這樣衛生間就會長期占用,其它人就要等待一樣的道理。
MySQL配置方案:
1.通過多配置文件及多個啟動程序來實現多實例的方案,在配置多實例之前要關掉mysql進程
第一步:創建MySQL多實例的數據文件目錄

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

第二步:刪除啟動文件

rm -f /etc/init.d/mysqld

第三步:上傳my.cnf和mysql這個文件放在3306和3307下

cd /data/3306 cd /data/3307 rz

第四步:創建多實例的啟動文件

vim /data/3306/mysql
vim /data/3307/mysql

多實例啟動文件的啟動mysql服務實質:

mysqld_ safe --defaults-file=/data/3306/my. cnf 2>81 > /dev/null &
mysqld_ safe --defaults-file=/data/3307/my. cnf 2>81> /dev/null &

多實例啟動文件的停止mysql服務實質:

mysqladmin -u root -poldboy123 -S /data/3307/mysql.sock shut dowmn
mysqladmin -u root -poldboy123 -S /data/3306/mysql.sock shut dowmn

第五步:對目錄授權

chown -R mysql.mysq /data

第六步:加執行權限,用於啟動mysql

find /data/ -type f -name "mysql"|xargs chmod +x

第七步:初始化MySQL多實例的數據庫文件

cd /application/mysql/scripts/
./mysql_install_db --basedir=/application/mysql --datadir=/data/3306/data --user=mysql
./mysql_install_db --basedir=/application/mysql --datadir=/data/3307/data --user=mysql

初始化數據庫的主要目的就是創建基礎的數據庫文件,例如:生成musql庫表等。
第八步:啟動數據庫

/data/3306/mysql start
/data/3307/mysql start

第九步:登陸數據庫,多實例登陸需要指定sock文件

mysql -S /data/3306/mysql.sock
create database d3306;
mysql -S /data/3307/mysql.sock
create database d3307;

第十步:增加密碼

mysqladmin -u root -S /data/3306/mysql.sock password '123456'
mysqladmin -u root -S /data/3307/mysql.sock password '123456'

2.單一配置文件

[mysqld_multi]
mysql=/usr/bin/mysqld_safe
mysqladmin=/usr/bin/mysqladmi
user = mysql
[mysqld1]#一次類推,端口不同
socket = /var/lib/mysql/mysql.sock
prot = 3306
pid-file = /var/lib/mysql/mysql.pid
datadir = /var/lib/mysql
user = mysql
skip-name-resolvee
server -id=12
master-connect retry=604
default-storage -engine=innodbe
innodb _buffer_ pool size=1G
innodb_ addi tional_ _mem pool=10M
default_ character_ set=utf8
character set_ server-utf8
read-only
relat-log-space-limit=3G
expire-logs_day=20

啟動方式:

mysqld_multi --config-file=/data/mysql/my_multi.cnf start 1,2,3, 4,5,6,7


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM