Mysql集羣

一、Mysql集羣

需要MySQL-Cluster-gpl-7.3.3-1.el6.x86_64.rpm-bundle.tar

不需要安裝或啓動 MySQL-server包

Mysql 代理的缺點:1,單點故障 2 數據備份

MySQL-Cluster 提供三種進程 

管理進程, 管理進程運行的管理主機上

ndbd進程 管理進程運行的管理主機上

sql 進程 (集羣軟件包裏提供的數據庫服務,運行sql節點上)


集羣/羣集 :用一組服務器提供相同的服務  分爲:

HA 高可用集羣 

LB  負載均衡集羣

用來存儲數據的軟件是集羣軟件,不再是mysql-server-5.6

1、集羣作用:

解決單點故障,實現數據自動備份;維護困難,軟件開發不完善,不穩定

2、mysql集羣中服務器的角色:

客戶端           client   (訪問數據*-)只有有連接數據服務的工具即可

管理集羣的主機 mgm (管理集羣中的所有主機,集羣服務時(啓動管理進程事)加載自己的主配置文件,設置集羣中所有主機的角色)

sql結點       sql    (用戶訪問數據的接口和執行用戶輸入SQL語句,存儲表結構,不存數據)>=2

數據結點   (ndbd節點)  用來存儲數據,存儲表中的記錄>=2

 

3、公共配置:ping 通

service iptables stop;  setenforce 0;

service mysqld stop;   chkconfig mysqld off

在集羣中的主機上添加mysql用戶

安裝集羣軟件 tar  -zxf mysql-cluster*  -C /usr/local

               mv  /usr/local/mysql-clu*  /usr/local/cluster  

cd /usr/local/cluster

                  bin    啓動腳本

                  include 頭文件

lib     庫文件

scripts  腳本

更改cluster的用戶和組chown  -R  mysql:mysql  /usr/local/cluster

集羣中的主機不再安裝mysql-server,使用集羣軟件mysql-cluster存儲數據,此軟件可提供3種不同進程

配置流程: 配置管理節點 192.168.1.1

管理集羣中所有主機,啓動管理進程時加載自己的主配置文件

4、配置管理主機mgm:

管理集羣中的所有主機,啓動管理進程時,調用配置文件/etc/config.ini(文件必須爲config.ini,位置可以自己指定),知道集羣中主機的角色(配置文件要自己編輯,不允許有空行)

拓撲                      mgm 192.168.1.1

mysq1 192.168.1.2 mysq1 192.168.1.3

ndbd1 192.168.1.4         ndbd1 192.168.1.5


vim /etc/config.ini                                                        

[ndbd default]   //定義數據結點的公共配置                                  

NoOfReplicas=2  //指定一份數據備份幾份(數據結點數或能被數據節點數整除) 

DataMemory=80M  //數據緩存大小(保存用戶執行過的SQL語句和查詢結果,通常是物理內存的1/3) 分配多少內存做數據緩存                                                           

IndexMemory=18M //索引緩存大小                                        

[ndb_mgmd]  //指定管理主機                                              

nodeid=1   //指定編號,值不允許重複(範圍1-50)                                          

hostname=192.168.1.1  //管理節點的IP                                     

datadir=/var/log/mysql-cluster  //路徑在mgm上存在,該目錄用於存放集羣中主機的信息 要自己創建                                                          

[ndbd]  //指定數據結點 1                                                 

nodeid=10                                                                      

hostname=192.168.1.10  //數據結點的IP                                                   

Datadir=/var/lib/mysql-cluseter/data  //路徑在數據結點主機上要存在,該目錄用於存放表中的記錄                                                             

[ndbd]  //指定數據結點2                                                    

nodeid=20                                                                    

hostname=192.168.1.20                                                    

Datadir= /var/lib/mysql-cluseter/data                                          

[mysqld]     //指定sql結點1                                                               

nodeid=30                                                                   

hostname=192.168.1.30    //sql結點的IP                                                   

[mysqld]         //指定sql結點2                                                           

nodeid=40                                                                     

hostname=192.168.1.40                                                                                                                               

     5、配置數據結點ndb:

1)創建存儲表中的記錄的目錄

        mkdir /var/lib/mysql-cluster/data                                              

        2)編輯配置文件/etc/my.cnf(與mysqld的主配置文件同名)

mv /etc/my.cnf /etc/my.cnf.bak //若在此之前安裝過mysql-server,則此文件存在,將其移走  

vim /etc/my.cnf                                                                         

[mysqld]  //設置數據結點                                                                

datadir= /var/lib/mysql-cluseter/data //將記錄存儲在本機的哪個目錄下,與管理主機上的設置一致                                                                                  

ndb-connectstring=192.168.1.1   //管理節點主機的IP                                     

ndbcluster   //使用ndb集羣                                                            

[mysql_cluster]  //設置管理集羣的主機                                                   

ndb-connectstring=192.168.1.1   //管理節點主機的IP 哪臺主機管理集羣                              

     6、配置SQL結點sql:

        1)編輯配置文件/etc/my.cnf

mv /etc/my.cnf /etc/my.cnf.bak                                              

        vim /etc/my.cnf                                                           

[mysqld]     //設置sql結點                                               

ndbcluster   //使用ndb集羣:

default-storage-engine=ndbcluster //設置默認引擎                                         

 [mysql_cluster]  //設置管理集羣的主機                                      

ndb-connectstring=192.168.1.1     //管理主機的IP                            

     7、啓動(是什麼樣的角色就啓動什麼服務,注意啓動順序):

1)啓動管理進程

啓動順序不可變

          管理進程監聽的端口號爲:1186                                                 

        ndb_mgmd   -f  /etc/config.ini        //啓動管理進程腳本                    

pgrep  mgmd          //查看進程是否開啓                                                  

ndb_mgm            //執行登錄管理界面的腳本                                            

ndb_mgm>show        //查看集羣信息                                                      

pkill -9 mgmd           //結束管理進程                                                      

2)啓動數據結點進程

                                                   

ndbd                 //啓動數據結點進程                                                  

pgrep ndbd                                                              

pkill -9 ndbd           

誰的後面有*,存儲數據時先往它上面存                                                   

3)啓動sql結點的數據庫服務進程

service  mysql   start

4)sql結點授權客戶端用戶

5)數據庫上建表時,一定要使用ndbcluster存儲引擎 ;表結構存儲在sql結點上,表中的記錄存放在數據結點的指定目錄中。  

6)集羣中的所有主機正常工作後,可關閉管理主機

8驗證集羣:

在sql 結點的數據庫上給客戶機授權,然後客戶機驗證


二、Mysql性能調優

Mysql 軟調優

1設置服務運行時的參數

2優化執行的sql語句


線程是進程的最小單位

1、目的:加快服務器的響應速度

     2、Mysql的查詢過程

        1)客戶端向服務器發送連接請求

        2)服務器端(連接池)開闢線程響應用戶請求

        3)用戶發起sql語句查詢數據庫select * from db.a;

        4)查詢緩存:記錄用戶的sql執行語句和查詢結果

     3、加快Mysql服務器的運行速度

1)替換有問題的硬件—最有效的方法

CPU 內存 硬盤

2)對Mysql進程的設置進行調優

A、併發連接數

 mysql> show variables like ‘max_connections’;  //默認進程數,即最多併發連接數     

mysql> show global status like ‘max_used_connections’;    //當前已連接數         

mysql> set global max_connections=200;  //修改參數值,當前生效               

[root@localhost ~]vim /etc/my.cnf    //在配置文件/etc/my.cnf中設置永久生效     

[mysqld]                                                                 

max_connections=200;                                                     

當前已有的連接數/默認進程數=0.85

max_used_connections/max_connections *100%=85% 較爲合適

B、連接數據庫超時時間設定

show variables like ‘connect_timeout’;  // 客戶端和服務器連接的超時時間,單位爲秒,默認10s      

show variables like ‘wait_timeout’;    //客戶端與服務器連接後,客戶端在28800S沒有執行任何操作,服務器端會自動斷開連接,在關閉它之前,在一個連接上等待行動的秒數,默認28800s                                                   

mysql> set global connect_timeout=20;   //全局修改前面加global 修改                                      

mysql> set wait_timeout=7200;      //不在全局修改,用這條命令                                       

併發數多時,可設置connect_timeout短一些;併發數少時,可設置其長一些

C、查詢緩存設置,索引緩衝區

8bit=1字節

1024字節=1K

1024k=1M

1024M=1G

1024G=1T


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章