2017 11-12 MySQL應用3

一.半同步復制

(1)半同步復制作用

相比較于同步復制和異步復制來說,半同步復制的工作原理是當主庫執行完客戶端的提交的事務后并不是馬上返還給客戶端,而是要至少等待一個從庫將事務接收到并將內容寫入relay_log中。這樣做的好處是提高了數據的安全性,但是也會造成一些延遲,所以半同步復制也主要應用在延遲較小的網絡環境中

(2)簡單配置實現半同步復制

首先準備兩個虛擬機,一個作為主庫,一個作為從庫
開啟mysql數據庫
配置兩臺虛擬機為主從復制的關系
主庫上

搜狗截圖20171113211010.png

從庫上
搜狗截圖20171113211034.png

在主庫中設置 grant replication client ,replication slave on . to 'repluser'@'172.18.%.%' identified by 'replpass';
flush privileges;
搜狗截圖20171113211708.png

在主庫上安裝插件
install plugin rpl_semi_sync_master SONAME 'semisync_master';
搜狗截圖20171113212102.png

搜狗截圖20171113212218.png

在從節點上
開啟數據庫
執行 change master to master_host='172.18.254.242',master_user='repluser',master_password='replpass',master_log_file='master-log.000003' master_log_pos=245;
start slave;
show slave status\G
搜狗截圖20171113212641.png

在從節點上安裝插件
install plugin rpl_semi_sync_slave SONAME 'semisync_slave';
搜狗截圖20171113212802.png

分別在主從節點上開啟半同步復制的功能
set @@global.rpl_semi_sync_master_enabled=ON;
搜狗截圖20171113213042.png

搜狗截圖20171113213059.png

set @@global.rpl_semi_sync_slave_enabled=ON;
搜狗截圖20171113213339.png

stop slave;
start slave;
show global status like '%rpl%';
搜狗截圖20171113213438.png

此時在主服務器上
搜狗截圖20171113213850.png

create database youdb;
use youdb;
create table hi values(id int,name char(30));
查看后表創建成功
搜狗截圖20171113214132.png

(2)使用復制過濾器

1.概念:僅復制有限一個或幾個數據庫相關的數據,而非所有;由復制過濾器進行;
2.兩種實現思路
(1) 主服務器
主服務器僅向二進制日志中記錄有關特定數據庫相關的寫操作;
問題:其它庫的time-point recovery將無從實現;
binlog_do_db=
binlog_ignore_db=
(2) 從服務器
從服務器的SQL THREAD僅重放關注的數據庫或表相關的事件,并將其應用于本地;
問題:網絡IO和磁盤IO;
Replicate_Do_DB=
Replicate_Ignore_DB=
Replicate_Do_Table=
Replicate_Ignore_Table=
Replicate_Wild_Do_Table=
Replicate_Wild_Ignore_Table=
權衡利弊與實際需要做好采用從服務器實現

(3)實現過程

在從服務器上
stop slave;
set @@global.replicate_ignore_db=youdb;——將youdb數據庫過濾不會對其內容進行復制
start slave;
查看slave狀態


搜狗截圖20171113214847.png

此時在主服務上對youdb數據庫做一些修改
use database youdb;

insert into hi values(2,'wanghai');
搜狗截圖20171113215119.png

在從服務器上去查看
搜狗截圖20171113215211.png

注意小細節:在主服務器上
搜狗截圖20171113215313.png

在從服務上
搜狗截圖20171113215326.png

這說明雖然從服務器也是從相同位置讀取數據,但是并沒有對數據進行復制

(4)復制的監控和維護

1.理日志:PURGE
PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr };


搜狗截圖20171113215730.png

一般情況下最好不要刪除二進制文件,如果非要刪除,也應該先將二進制文件復制到別的地方,再進行刪除
例:如圖如果想刪除000003以前的日志但不包括000003日志就可以執行 purge binary logs to 'master-log.000003';
2.復制監控
MASTER:
SHOW MASTER STATUS;
SHOW BINLOG EVENTS;
SHOW BINARY LOGS;
SLAVE:
SHOW SLAVE STATUS;
判斷從服務器是否落后于主服務器:
Seconds_Behind_Master: 0
3.如何確定主從節點數據是否一致?
通過表的CHECKSUM檢查;
使用percona-tools中pt-table-checksum;
4.主從數據不一致時的修復方法?
重新復制;

二.主從復制的讀寫分離

(1)常用的軟件是proxysql——下載地址www.proxysql.com,下載對應版本。該軟件特點是高性能,高可用
其他軟件:mysql-proxy ,oneproxy,maxscale
(2)接下來使用proxysql來實現讀寫分離的目的
步驟:在官網上下載好對應版本后,通過yum install proxysql-1.4.2-1-centos67.x86_64.rpm
下載好之后可以先查看一下該軟件的相關信息

搜狗截圖20171114095759.png

進入配置文件進行配置
搜狗截圖20171114100230.png

搜狗截圖20171114101134.png

hostgroup=0代表主數據庫,hostgroup=1代表從數據庫
創建用戶配置段設置
搜狗截圖20171114101646.png

設置查詢規則
搜狗截圖20171114102048.png

調度讀寫分離
搜狗截圖20171114102328.png

實驗進行驗證讀寫分離是否生效
在proxysql服務器上以dbadmin身份登錄數據庫
搜狗截圖20171114102806.png

通過proxysql代理將數據庫代理到主數據庫上,此時寫操作都調度主數據庫上,而讀的內容到調度到從數據庫上
注意細節:不要忘了在從服務器上設置復制過濾器,否則讀寫分離的效果無法生效

三.MHA的應用實現

(1)關于MHA的介紹
MHA(Master HA)是一款開源的Mysql的高可用程序,它為Mysql的主從復制架構提供了自動監測機制,當MHA監測到master主節點出現故障后,它會提升和主節點復制信息內容最接近的slave節點作為新的主節點,并且MHA還會通過獲取其他從節點的信息來避免一些一致性方面的問題。MHA還能提供master在線切換主從節點的功能。
MHA有兩種角色
1.MHA Manager(管理節點):通常單獨的存在于一臺服務器上管理多個master/slave集群,每個集群稱為一個application
2.MHA node(數據節點):該數據節點主要工作在每一個MYSQL服務器上,它通過監控具有解析和清理logs日志功能的腳本來加快故障轉移
(2)準備MHA環境
1.本次實驗要有四個節點
一個節點作為master節點
兩個節點作為slave節點
一個節點作為MHA節點
2.各節點之間要做解析

搜狗截圖20171114150920.png

3.主節點的配置文件進行設置
搜狗截圖20171114151119.png

4.從節點配置文件進行設置
搜狗截圖20171114151241.png

注意server_id不要相同
5.設置完成后主從節點開啟Mysql
在主節點上進行授權
show master status\G;
grant all on . to 'mhaadmin'@'172.18.%.%' identified by
'mhapass';
flush privileges;
在從節點上執行
change master to master_host='172.18.254.242',master_user='repluser',master_password='replpass',master_log_file='master-log.000004',master_log_pos=245;
start slave;
show slave status\G
在另一個從節點上做相同操作
復制集群配置完成
6.準備基于SSH互相通信的環境
在其中一個節點上
執行ssh-keygen-id -t rsa -P ''
搜狗截圖20171114154816.png

cd.ssh
ssh-copy-id -i ./id_rsa.pub root@node3
分別將id_rsa 和id_rsa.pub復制到各個節點上
搜狗截圖20171114155135.png

ssh 驗證
搜狗截圖20171114155359.png

各個節點都交叉進行驗證
(7)安裝MHA
在node4上進行安裝
lftp 172.18.0.1/pub
cd Source
cd 6.x86_64
mget mhamysql-manager-0.56-0.e16.noarch.rpm
mhamysql-node-0.56-0.e16.noarch.rpm
在主從點上安裝mhamysql-node-0.56-0.e16.noarch.rpm即可
(8)對MHA進行的配置文件進行配置
mkdir /etc/masterha
vim /etc/masterha/app1.cnf
搜狗截圖20171114161350.png

配置完成后進行檢查檢驗ssh通信是否成功
master_check_ssh --conf=/etc/masterha/app1.cnf
主從復制集群是否成功
mhamysql-node-0.56-0.e16.noarch.rpm
注意:要在從節點上手動執行flush privileges;
否則監測結果為Health is not ok
檢查成功后啟動MHA
masterha_manger --conf=/etc/masterha/app1.cnf
(9)模擬主節點故障
關閉主節點數據庫,然后在MHA服務器上重新執行
mhamysql-node-0.56-0.e16.noarch.rpm
監測結果為Health is not ok
此時在從節點上(172.18.25.62)變為主節點
show slave status\G;
內容為空,證明此時該節點為主節點
show master status\G;
變為新的主節點
如果想要原來的主節點上線,就要在原來的主節點的配置文件文件中加入relay_log_purge=OFF relay_only=ON
重新啟動該數據庫,并導入
change master to master_host='172.18.25.62',master_user='repluser',master_password='replpass',master_log_file='master-log.000003',master_log_pos=395;
start slave;
show slave status\G;
上線成功
注意:啟動MHA也可以執行后臺運行機制
nohup masterha_manager --conf=/etc/masterha/app1.cnf &>/data/master/app1/manager.log &

四.表分區的建立

(1)根據范圍進行劃分
打開數據庫
選擇hellodb數據庫
創建一個表
CREATE TABLE students (id INT, name VARCHAR(100), age TINYINT UNSIGNED NOT NULL, gender ENUM('F','M')) PARTITION BY range(age)(partition youngman values less than (40), partition middleman values less than (70), partition oldman values less than maxvalue);


搜狗截圖20171114201947.png

for語句生成表內容
gender=('F' 'M')
echo ${gender[0]}
echo ${gender[1]}
for i in {1..1000};do mysql -e "insert into hellodb.students2 values ($i,'stu$i',$[RANDOM%100+18],'${gender[$RANDOM%2]}');" -uroot -pmagedu;done


搜狗截圖20171114202754.png

(2)按hash劃分表
創建一個新的表
CREATE TABLE students (id INT, name CHAR(100) NOT NULL, age TINYINT UNSIGNED, gender ENUM('F','M')) PARTITION BY hash(id) PARTITIONS 6;
搜狗截圖20171114203016.png

同樣用for語句創建表的內容
for i in {1..1000};do mysql -e "insert into hellodb.students values ($i,'stu$i',$[RANDOM%100+18],'${gender[$RANDOM%2]}');" -uroot -pmagedu;done

(3)按照List來劃分表
CREATE TABLE students (id INT, name CHAR(100) NOT NULL, age TINYINT UNSIGNED, gender ENUM('F','M'),majorid tinyint unsigned not null) partition by list(majorid) (partition apr0 values in (1,4,7),partition par1 values in (2,5,8),partition par2 values in (3,6,9));


搜狗截圖20171114203658.png
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,117評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,860評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,128評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,291評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,025評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,421評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,477評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,642評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,177評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,970評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,157評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,717評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,410評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,821評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,053評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,896評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,157評論 2 375

推薦閱讀更多精彩內容