MySQL多執行個體應用配置部署指南

來源:互聯網
上載者:User

MySQL多執行個體應用配置部署指南

一,Mysql 多執行個體的作用的問題

1,有效利用伺服器的資源
  當單個伺服器資源有剩餘的時候,可以充分利用剩餘的資源以提供更多的服務
2,節約伺服器的資源
  當公司資源緊張,但是資料庫各自需要獨立提供服務,而且需要主從同步等技術時候,此時使用多執行個體是最好的。
3,資源互相搶佔的問題
  當某個服務執行個體並發很高或者有慢查詢的時候,整個執行個體會消耗更多的CPU,記憶體,磁碟IO資源,導致伺服器上其他的執行個體提供的服務品質大大下降,相當於一個大房子,多個臥室,大家共用一個衛生間,早餐起床,一個人上廁所,長期佔用,其他人要等待一樣的道理。

二、Mysql 多執行個體的應用情境

1,資源緊張型的公司
  業務量不大,不想花錢,又有多需求,所以特別適合多執行個體
2,並發訪問不是特別大的網站
  當公司業務量不大的適合,伺服器資源沒有充分利用,有浪費的時候,就可以使用多執行個體
3,百度搜尋引擎就使用了多執行個體  ,sina 網也使用了多執行個體
  目的,節約IDC空間,資源充分利用

  sina的配置 SATA 15000轉  4塊做raid5  48G記憶體

三、MySQL多執行個體的配置方案
  方案一:如  推薦使用此

  這種方式的優勢邏輯簡單,配置簡單,耦合度低
  缺點是管理起來不太方便。

方案二:單一的部署方案  不推薦,耦合性太高
    [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 mysql
shell> useradd -r -g mysql mysql
shell> cd /usr/local/mysql
shell> 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 shutdown
 
mysqladmin -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_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = admin
password = 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-rehash
prompt=\\u@\\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 shutdown
mysqladmin -uroot -p -S /data/3307/mysql.sock shutdown
 
更改原來密碼
mysqladmin -uroot password '123456' -S /data/3306/mysql.sock
mysqladmin -uroot password '123456' -S /data/3307/mysql.sock

測試登陸
mysql -uroot -p -S /data/3306/mysql.sock 
mysql -uroot -p -S /data/3307/mysql.sock

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.