一、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