標籤:mysql 多執行個體
一,Mysql 多執行個體的作用的問題
1,有效利用伺服器的資源
當單個伺服器資源有剩餘的時候,可以充分利用剩餘的資源以提供更多的服務
2,節約伺服器的資源
當公司資源緊張,但是資料庫各自需要獨立提供服務,而且需要主從同步等技術時候,此時使用多執行個體是最好的。
3,資源互相搶佔的問題
當某個服務執行個體並發很高或者有慢查詢的時候,整個執行個體會消耗更多的CPU,記憶體,磁碟IO資源,導致伺服器上其他的執行個體提供的服務品質大大下降,相當於一個大房子,多個臥室,大家共用一個衛生間,早餐起床,一個人上廁所,長期佔用,其他人要等待一樣的道理。
二、Mysql 多執行個體的應用情境
1,資源緊張型的公司
業務量不大,不想花錢,又有多需求,所以特別適合多執行個體
2,並發訪問不是特別大的網站
當公司業務量不大的適合,伺服器資源沒有充分利用,有浪費的時候,就可以使用多執行個體
3,百度搜尋引擎就使用了多執行個體 ,sina 網也使用了多執行個體
目的,節約IDC空間,資源充分利用
sina的配置 SATA 15000轉 4塊做raid5 48G記憶體
三、MySQL多執行個體的配置方案
方案一:如 推薦使用此
這種方式的優勢邏輯簡單,配置簡單,耦合度低
缺點是管理起來不太方便。
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/82/85/wKioL1dXykbxo2UUAABz9qsUEVg225.jpg" title="001.jpg" alt="wKioL1dXykbxo2UUAABz9qsUEVg225.jpg" />
方案二:單一的部署方案 不推薦,耦合性太高
[mysqld_muti]
即一個設定檔 啟動多個執行個體
四、開始配置MySQL多執行個體
環境介紹:
mysql 版本:5.6.27
作業系統:Centos 6.5
mysql執行個體數:2個
執行個體佔用連接埠分別為:3306、3307
先配置方案一:
1.下載:在http://dev.mysql.com/downloads/mysql/官網上下載
2.解壓
tar xvf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz
3.移動到/usr/local/mysql
mv mysql-5.6.27-linux-glibc2.5-x86_64 mysql
4.安裝依賴的lib包:
centos:yum install libaio -y
5、配置使用者,目錄
shell> groupadd mysqlshell> useradd -r -g mysql mysqlshell> cd /usr/local/mysqlshell> chown -R mysql .shell> chgrp -R mysql .
6、使用/data/目錄作為MySQL多執行個體的總目錄
mkdir -p /data/{3306,3307}/data
7、開始配置多執行個體的設定檔
vim /data/3306/my.cnf[mysqld] #general basedir = /usr/local/mysql datadir = /data/3306/data socket = /data/3306/mysql.sock user = mysql port = 3306 server_id = 1 log-error = /data/3306/err.log pid = /data/3306/mysql.pid #binlog log-bin = /data/3306/mysql-bin sync-binlog = 1 #InnoDB innodb_flush_log_at_trx_commit innodb_support_xa = 1 #other character_set_server = utf8 default_storage_engine =InnoDB ft_min_word_len = 1 open_files_limit = 65535 auto-increment-increment = 10 auto-increment-offset = 1 log_slave_updates=1 允許備庫將其重放的事件也記錄到自身的二進位日誌中 read_only=0 阻止任何沒有特權許可權的線程修改資料 skip_slave_start [client] socket = /data/3306/mysql.sock port = 3306
vim /data/3307/my.cnf[mysqld] #general basedir = /usr/local/mysql datadir = /data/3307/data socket = /data/3307/mysql.sock user = mysql port = 3307 server_id = 1 log-error = /data/3307/err.log pid = /data/3307/mysql.pid #binlog log-bin = /data/3307/mysql-bin sync-binlog = 1 #InnoDB innodb_flush_log_at_trx_commit innodb_support_xa = 1 #other character_set_server = utf8 default_storage_engine =InnoDB ft_min_word_len = 1 open_files_limit = 65535 auto-increment-increment = 10 auto-increment-offset = 1 log_slave_updates=1 允許備庫將其重放的事件也記錄到自身的二進位日誌中 read_only=0 阻止任何沒有特權許可權的線程修改資料 skip_slave_start [client] socket = /data/3307/mysql.sock port = 3307
8、建立多執行個體的開機檔案 。
放到/data/3306 | /data/3307 下
指令碼省略(mysqld)
多執行個體開機檔案的啟動MySQL服務實質:
mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &mysqld_safe --defaults-file=/data/3307/my.cnf 2>&1 >/dev/null &
多執行個體開機檔案的停止MySQL服務實質:
mysqladmin -u root -p passwd -S /data/3306/mysql.sock shutdown mysqladmin -u root -p passwd -S /data/3306/mysql.sock shutdown 平滑停止
9,授權MySQL使用者,和組管理整個多執行個體目錄
chown -R mysql.mysql /data
10,配置MySQL全域環境變數
echo "export PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile source /etc/profile
11,開始初始化資料庫
cd/usr/local/mysql/scripts/ ./mysql_install_db --user=mysql --datadir=/data/3306/data/ --basedir=/usr/local/mysql/ ./mysql_install_db --user=mysql --datadir=/data/3307/data/ --basedir=/usr/local/mysql/
什麼初始化資料庫?
a,初始化的主要目的就是建立基礎的資料庫檔案,例如產生MySQL的庫表
b,初始化後,產看目錄,可以看到一些表檔案
12,啟動| 停止 MySQL服務
如果有指令碼,則使用指令碼啟動
/data/3306/mysql start /data/3307/mysql start
如果沒有指令碼,則使用一下啟動
mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &
mysqld_safe --defaults-file=/data/3307/my.cnf 2>&1 >/dev/null &如果沒有指令碼,則使用一下啟動停止mysqladmin -u root -p passwd -S /data/3306/mysql.sock shutdownmysqladmin -u root -p passwd -S /data/3306/mysql.sock shutdown 平滑停止|
13,檢查
登陸:
mysql -S /data/3306/mysql.sock
管理的話,在本地都是採用 -S /data/3306/mysql.sock,如果在遠程可以通過不同的連接埠串連上去坐管理操作。其他的和單一實例的管理沒什麼區別!
#######################################################################################
再來看第二種通過官方內建的mysqld_multi來實現多執行個體實戰:
這裡的mysql安裝以及資料庫的初始化和前面的步驟一樣,就不再贅述。
mysqld_multi的配置
vim /etc/my.cnf[mysqld_multi]mysqld = /usr/local/mysql/bin/mysqld_safemysqladmin = /usr/local/mysql/bin/mysqladminuser = adminpassword = password[mysqld1] #general basedir = /usr/local/mysql/ datadir = /data/3306/data/ socket = /data/3306/mysql.sock user = mysql port = 3306 server_id = 1 log-error = /data/3306/ pid = /data/3306/ #binlog log-bin = /data/3306/mysql-bin sync-binlog = 1 #InnoDB innodb_flush_log_at_trx_commit innodb_support_xa = 1 #other character_set_server = utf8 default_storage_engine =InnoDB ft_min_word_len = 1 open_files_limit = 65535 auto-increment-increment = 10 auto-increment-offset = 1 log_slave_updates=1 允許備庫將其重放的事件也記錄到自身的二進位日誌中 read_only=0 阻止任何沒有特權許可權的線程修改資料 skip_slave_start [client] socket = /data/3306/mysql.sock port = 3306[mysqld2] #general basedir = /usr/local/mysql/ datadir = /data/3307/data/ socket = /data/3307/mysql.sock user = mysql port = 3307 server_id = 2 log-error = /data/3307/ pid = /data/3307/ #binlog log-bin = /data/3307/mysql-bin sync-binlog = 1 #InnoDB innodb_flush_log_at_trx_commit innodb_support_xa = 1 #other character_set_server = utf8 default_storage_engine =InnoDB ft_min_word_len = 1 open_files_limit = 65535 auto-increment-increment = 10 auto-increment-offset = 1 log_slave_updates=1 允許備庫將其重放的事件也記錄到自身的二進位日誌中 read_only=0 阻止任何沒有特權許可權的線程修改資料 skip_slave_start [client] socket = /data/3307/mysql.sock port = 3307[mysql]no-auto-rehashprompt=\\[email protected]\\d \\R:\\m>[mysqld_safe]open-files-limit = 8192
mysqld_multi啟動
/usr/local/mysql/bin/mysqld_multi start 1/usr/local/mysql/bin/mysqld_multi start 2 停止MySQL執行個體mysqladmin -uroot -p -S /data/3306/mysql.sock shutdownmysqladmin -uroot -p -S /data/3307/mysql.sock shutdown更改原來密碼mysqladmin -uroot password ‘123456‘ -S /data/3306/mysql.sockmysqladmin -uroot password ‘123456‘ -S /data/3307/mysql.sock
測試登陸
mysql -uroot -p -S /data/3306/mysql.sock mysql -uroot -p -S /data/3307/mysql.sock
本文出自 “crazy_sir” 部落格,請務必保留此出處http://douya.blog.51cto.com/6173221/1787516
mysql 多執行個體應用配置部署指南