MySQL 多實例詳解

目錄

一、基本概念

1、MySQL多實例

       就是在一臺機器上面開啟多個不同的端口,運行多個MySQL服務進程。這些MySQL多實例公用一套安裝程序,使用不同的(也可以是相同的)配置文件,啟動程序,數據文件。在提供服務時候,多實例MySQL在邏輯上看來是各自獨立的,多個實例的自身是根據配置文件對應的設定值,來取得相關硬件資源的多少。

2、應用場景

1.采用了數據偽分布式架構的原因,而項目啟動初期又不一定有那多的用戶量,為此先一組物理數據庫服務器,但部署多個實例,方便后續遷移

2. 為規避mysql對SMP架構不支持的缺陷,使用多實例綁定處理器的辦法,把不同的數據庫分配到不同的實例上提供數據服務

3.  一臺物理數據庫服務器支撐多個數據庫的數據服務,為提高mysql復制的從機的恢復效率,采用多實例部署

4.  已經為雙主復制的mysql數據庫服務器架構,想部分重要業務的數據多一份異地機房的熱備份,而mysql復制暫不支持多主的復制模式,且不給用戶提供服務,為有效控制成本,會考慮異地機房部署一臺性能超好的物理服務器,甚至外加磁盤柜的方式,為此也會部署多實例;

5.  傳統游戲行業的MMO/MMORPG,以及Web Game,每一個服都對應一個數據庫,而可能要做很多數據查詢和數據訂正的工作,為減少維護而出錯的概率,也可能采用多實例部署的方式,按區的概念分配數據庫;

 3、作用與問題

        1、有效利用服務器的資源,單個服務器資源有剩余時,可以充分利用剩余的資源提供更多的服務。

     2、資源互相爭搶問題,比如 內存 ,cpu 需要開啟 numa,并把 mysql 綁定到固定的核心上,網卡的中斷請求,資源爭用,最重要的是磁盤 IO

 

MySQL多實例配置方法

       1、單一配置文件

       2、多配置文件。

二、實戰步驟:

    1、同步時間

    2、準備mysql依賴包

    3、環境準備

            3.1添加mysql用戶

            3.2編譯安裝mysql

       4、安裝MySQL多實例

    5、準備配置文件

    6、啟動MySQL

    7、登錄mysql與一些安全措施

    8、關閉MySQL

    9,、提供簡易管理腳本

    10、為mysql的root用戶創建密碼

    11、附,多配置文件安裝mysql多實例,這里增加mysql 的3309端口

    12、總結

1、同步時間

yum install epel*
ntp 202.120.2.101
yum install -y ntp
ntpdate 202.120.2.101
hwclock -w

2、準備mysql依賴包

yum install -y autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool* openssl*
yum install cmake -y

3、環境準備

3.1添加mysql用戶

groupadd mysql
useradd -g mysql mysql 
mkdir -pv /data/{3306,3307,3308}/data
chown -R mysql.mysql /data/
cd /usr/local/src/

3.2編譯安裝mysql

tar -xf mysql-5.5.45.tar.gz
cd mysql-5.5.45
chown mysql.mysql -R .
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
gmake
make install

4、安裝MySQL多實例

cd /usr/local/mysql/
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/

5、準備配置文件

mysqld_multi --example > /data/multi.cnf   #提供多配置文件模板
vim /data/multi.cnf   #修改模板,這里比較簡易
[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = root 
 
#這個用戶應該有關機權限,然后沒有其他的權限。建議創建一個通用的,multi_admin用戶控制其它的MySQL用戶,這里有個例子
#GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'password'
 
[mysqld1]
socket     = /tmp/mysql.sock1
port       = 3306
pid-file   = /data/3306/mysql.pid
datadir    = /data/3306/data
 
[mysqld2]
socket     = /tmp/mysql.sock2
port       = 3307
pid-file   = /data/3307/mysql.pid
datadir    = /data/3307/data
#language   = /usr/local/mysql/share/mysql/english
#user       = unix_user1
 
[mysqld3]
#mysqld     = /path/to/mysqld_safe
#ledir      = /path/to/mysqld-binary/
#mysqladmin = /path/to/mysqladmin
socket     = /tmp/mysql.sock3
port       = 3308
pid-file   = /data/3308/mysql.pid
datadir    = /data/3308/data
#language   = /usr/local/mysql/share/mysql/swedish
#user       = unix_user2

以上是簡易的配置文件。這個配置文件只能讓MySQL啟動起來。

6、啟動MySQL

mysqld_multi --defaults-file=/data/multi.cnf start 1,2,3
ss -tnl   #查看監聽端口
LISTEN     0      50                        *:3306                     *:*    
LISTEN     0      50                        *:3307                     *:*    
LISTEN     0      50                        *:3308                     *:*

7、登錄mysql與一些安全措施

mysql -S /tmp/mysql.sock1       #指定socket登錄
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.01 sec)
 
mysql> drop database test;
Query OK, 0 rows affected (0.04 sec)
 
mysql> select User,Host from mysql.user;
+------+-----------+
| User | Host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
|      | localhost |
| root | localhost |
|      | node1     |
| root | node1     |
+------+-----------+
6 rows in set (0.01 sec)
 
mysql> delete from mysql.user where User='';
Query OK, 2 rows affected (0.00 sec)
 
mysql> delete from mysql.user where Host='::1';
Query OK, 1 row affected (0.00 sec)
 
mysql> delete from mysql.user where Host='node1';
Query OK, 1 row affected (0.00 sec)

其余的操作類似,就不在演示

8、關閉MySQL

mysqladmin -S /tmp/mysql.sock1 shutdown  建議使用
musqld_multi --defaults-file stop [#,#]
killall mysqld  不建議使用

9,、提供簡易管理腳本

#!/bin/bash
#
basedir=/usr/local/mysql
bindir=/usr/local/mysql/bin
conf=/data/multi.cnf
export PATH=$bindir:/$PATH
if test -x $bindir/mysqld_multi 
then  
  mysqld_multi="$bindir/mysqld_multi";  
else  
  echo "Can't execute $bindir/mysqld_multi from dir $basedir";  
  exit;  
fi
case "$1" in 
    'start' )  
        "$mysqld_multi" --defaults-extra-file=$conf start $2  
        ;;  
    'stop' )  
        "$mysqld_multi" --defaults-extra-file=$conf stop $2  
        ;;  
    'report' )  
        "$mysqld_multi" --defaults-extra-file=$conf report $2  
        ;;  
    'restart' )  
        "$mysqld_multi" --defaults-extra-file=$conf stop $2  
        "$mysqld_multi" --defaults-extra-file=$conf start $2  
        ;;  
    *)  
        echo "Usage: $0 {start|stop|report|restart}" >&2  
        ;;  
esac

10、為mysqlroot用戶創建密碼

mysqladmin -uroot -S /tmp/mysql.sock2 password "123456"   #指定socket文件位置即可

其余的操作一樣

11、附,多配置文件安裝mysql多實例,這里增加mysql 3309端口

mkdir -pv /data/3309/data                  
chown mysql.mysql -R 3309/
cd /usr/local/mysql
scripts/mysql_install_db --datadir=/data/3309/data/ --user=mysql --basedir=/usr/local/mysql/
cp support-files/my-small.cnf /data/3309/my.cnf
vim /data/3309/my.cnf
[client]
port        = 3309                 #這里也需要注意下吧
socket            = /tmp/mysql.sock4
 
 
[mysqld]
port        = 3309             #注意端口
socket            = /tmp/mysql.sock4           #注意socket
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K
datadir=/data/3309/data        #注意datadir
server-id  = 1
 
[mysqldump]
quick
max_allowed_packet = 16M
 mysqld_safe --defaults-file=/data/3309/my.cnf 2&1> > /dev/null    #啟動mysqld
ss -tnl | grep 330                #查看端口
LISTEN     0      50                        *:3306                     *:*    
LISTEN     0      50                        *:3307                     *:*    
LISTEN     0      50                        *:3308                     *:*    
LISTEN     0      50                        *:3309                     *:*

 其余啟動方法與關閉方法類似

12、總結:

       1、通過這次mysql多實例安裝,我們已經可以根據自己的喜好決定是通過多配置文件安裝mysql多實例,還是但配置單文件安裝。

       2、過程比較簡單,也沒有什么特別高明的技巧,但是由小見大,以后配置文件可以在完善完善。

       3、就是下面還會用心的寫一系列的mysql博客,希望高手指點,不勝感激

參考鏈接:http://freeloda.blog.51cto.com/2033581/1349312

原創文章,作者:艾賀,如若轉載,請注明出處:http://www.www58058.com/8335

(0)
艾賀艾賀
上一篇 2015-09-22 13:14
下一篇 2015-09-23 19:59

相關推薦

  • Linux Shell(腳本)編程入門

    為什么要進行shell編程 在Linux系統中,雖然有各種各樣的圖形化接口工具,但是sell仍然是一個非常靈活的工具。Shell不僅僅是命令的收集,而且是一門非常棒的編程語言。您可以通過使用shell使大量的任務自動化,shell特別擅長系統管理任務,尤其適合那些易用性、可維護性和便攜性比效率更重要的任務。 下面,讓我們一起來看看shell是如何工作的: 建…

    Linux干貨 2017-08-05
  • CentOS6.7下關于vsftpd的應用之一(匿名用戶/普通用戶/虛擬用戶)

    1)使用yum安裝vsftpd [root@C67-X64-A1 ~]# /etc/init.d/vsftpd start為 vsftpd 啟動 vsftpd:           &nbs…

    Linux干貨 2016-09-19
  • 上海2016全球運維大會 美女辣妹吸引眼球!

    國內第一個運維行業大會 GOPS 2016全球運維大會(上海站)在2016年9月23-24日在上海雅悅新天地大酒店舉辦,面向IT及傳統行業、廣大運維技術人員,傳播先進技術思想和理念,分享業內最佳實踐。 參會兩日,雖然大會主角是運維技術交流學習,不過卻意料之外的邂逅了另一道靚麗的風景,瞬間燃了… 在會場,站立著一群高挑美女,我的…

    2016-12-05
  • shell腳本2

    使用read命令來接受輸入 使用read來把輸入值分配給一個或多個shell變量 read后面跟變量,回車輸入內容,就可以把輸入的內容賦給變量 -p指定要顯示的提示 -s 靜默輸入,一般用于密碼 輸入的內容不顯示 -n N 指定輸入的字符長度N 當輸入的內容達到了5個字符會直接結束輸入 -d‘字符’ 輸入結束符 把!作為了結束符,在輸入內容時,當輸入!會直接…

    2017-08-11
  • OSI七層模型

      OSI模型的七層結構 首先,OSI是什么呢?OSI(Open System Interconnection),OSI是一個開放性的通行系統互連參考模型,是一個協議規范。它把網絡協議從邏輯上分為了7層。每一層都有相關、相對應的物理設備。OSI七層模型是一種框架性的設計方法 ,建立七層模型的主要目的是為解決異種網絡互連時所遇到的兼容性問題,其最主要…

    2017-09-02
  • 程序包管理之制作yum本地源

    Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器?;赗PM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。 使用本地yum源有兩種方式:第一直接使用光盤鏡像,不過此方…

    Linux干貨 2016-08-24

評論列表(1條)

  • Vicky
    Vicky 2015-09-23 20:03

    繼續用心寫博客~

欧美性久久久久