黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

MySql 集群配置

系統(tǒng) 2488 0

?

MYSQL?CLUSTER 方案介紹

?                                 本文的大致框架來(lái)自 羅志威、黃川的報(bào)告, 在它的基礎(chǔ)上進(jìn)行簡(jiǎn)化和修改一些bug并且添加了主從復(fù)制的章節(jié),最后做出該文檔

MySQL?Cluster? MySQL 適合于分布式計(jì)算環(huán)境的高實(shí)用、高冗余版本。它采用了 NDB?Cluster? 存儲(chǔ)引擎,允許在 1 個(gè)? Cluster? 中運(yùn)行多個(gè) MySQL 服務(wù)器?,F(xiàn)在 mysql?cluster? 被獨(dú)立出來(lái) ,? 作為一個(gè)專門的產(chǎn)品進(jìn)行運(yùn)營(yíng) ,?mysql-server-5.6+? 就不在存在對(duì) mysql?cluster 的支持,需要獨(dú)立下載 cluster 包進(jìn)行安裝 .?

推薦在 Linux 下完成安裝 ,? 如果一定要在 Windows 上的話 ,? 則需要考慮使用解壓版本的進(jìn)行安裝 ,? 且路徑中不能帶有空格字符 .

測(cè)試環(huán)境信息

服務(wù)器信息

項(xiàng)

項(xiàng) 值

操作系統(tǒng)

Ubuntu?14.04?32

Mysql?Cluster? 版本

mysql-cluster-gpl-7.3.5-debian6.0-i686

內(nèi)存

2G

CPU

2.20 雙核

網(wǎng)絡(luò)環(huán)境

100M 局域網(wǎng)

部署

1 個(gè)數(shù)據(jù)節(jié)點(diǎn), 1?SQL 節(jié)點(diǎn), 1 管理節(jié)點(diǎn)

?

管理節(jié)點(diǎn)信息

機(jī)器 IP

數(shù)據(jù)節(jié)點(diǎn)編號(hào)

192.168.1.37

1

?

機(jī)器 IP

數(shù)據(jù)節(jié)點(diǎn)編號(hào)

192.168.1.37

2

數(shù)據(jù)節(jié)點(diǎn)信息

?

SQL 節(jié)點(diǎn)信息

機(jī)器 IP

數(shù)據(jù)節(jié)點(diǎn)編號(hào)

192.168.1.37

3

?

機(jī)器安裝環(huán)境

機(jī)器 IP

用戶名、密碼

安裝路徑

路徑說(shuō)明

192.168.1.37

root/root

/root/mysql/mysqlc

mysql?cluster? 目錄

/root/mysql/data/mysqld_data

sql 節(jié)點(diǎn)數(shù)據(jù)路徑

/root/mysql/data/ndb_data

數(shù)據(jù)節(jié)點(diǎn)數(shù)據(jù)路徑

/root/mysqldata/mgmd_data

管理節(jié)點(diǎn)數(shù)據(jù)

/root/mysql/conf

配置文件路徑

節(jié)點(diǎn)說(shuō)明

SQL 節(jié)點(diǎn):

這是用來(lái)訪問(wèn)簇?cái)?shù)據(jù)的節(jié)點(diǎn)。對(duì)于 MySQL 簇,客戶端節(jié)點(diǎn)是使用 NDB 簇存儲(chǔ)引擎的傳統(tǒng) MySQL 服務(wù)器。典型情況下, SQL 節(jié)點(diǎn)是使用命令 mysqld?– -ndbcluster 啟動(dòng)的,或?qū)? ndbcluster 添加到 my.cnf 后使用 mysqld 啟動(dòng)。簇中所有的表結(jié)構(gòu)都保存在 mysql 節(jié)點(diǎn)中,為了保證每個(gè)數(shù)據(jù)節(jié)點(diǎn)中數(shù)據(jù)分布均勻,在進(jìn)行數(shù)據(jù)插入的時(shí)候 sql 節(jié)點(diǎn)采用了 表分片的策略將數(shù)據(jù)均勻分配到不同的數(shù)據(jù)節(jié)點(diǎn)上。

?

數(shù)據(jù)節(jié)點(diǎn):

這類節(jié)點(diǎn)用于保存簇的數(shù)據(jù)。數(shù)據(jù)節(jié)點(diǎn)的數(shù)目與副本的數(shù)目相關(guān),是片段的倍數(shù)。例如,對(duì)于兩個(gè)副本,每個(gè)副本有兩個(gè)片段,那么就有 1 個(gè)數(shù)據(jù)節(jié)點(diǎn)(在測(cè)試環(huán)境中就采用了兩個(gè)副本兩個(gè)片段的策略,故有 1 個(gè)數(shù)據(jù)節(jié)點(diǎn), ( ndb_mgmd?配置文件中 NoOfReplicas 屬性配置 ) 此時(shí)管理節(jié)點(diǎn)會(huì)將數(shù)據(jù)節(jié)點(diǎn)進(jìn)行分組,?數(shù)據(jù)節(jié)點(diǎn)是用命令 ndbd啟動(dòng)的。

各個(gè)數(shù)據(jù)節(jié)點(diǎn)中都用兩個(gè)檢查點(diǎn):本地檢查點(diǎn)、全局檢查點(diǎn)。本地檢查點(diǎn)的目的是為了將內(nèi)存中的數(shù)據(jù)和磁盤上的數(shù)據(jù)進(jìn)行同步。全局檢查點(diǎn)是在各節(jié)點(diǎn)中進(jìn)行通訊,以保證事物的一致性。

?

管理節(jié)點(diǎn):

管理節(jié)點(diǎn)是管理數(shù)據(jù)節(jié)點(diǎn)和 sql 節(jié)點(diǎn)的工具,在系統(tǒng)正常運(yùn)行期間停止管理節(jié)點(diǎn)對(duì)整個(gè)系統(tǒng)的運(yùn)行不會(huì)有任何影響。在管理節(jié)點(diǎn)提供了數(shù)據(jù)節(jié)點(diǎn)和 sql 節(jié)點(diǎn)的全局配置信息,包括數(shù)據(jù)、索引所占用內(nèi)存大小、數(shù)據(jù)存放的目錄信息、各個(gè)節(jié)點(diǎn) ip 信息等。通過(guò)管理節(jié)點(diǎn)可以啟動(dòng)和停止節(jié)點(diǎn)、啟動(dòng)和停止消息跟蹤(僅對(duì)調(diào)試版本)、顯示節(jié)點(diǎn)版本和狀態(tài)、啟動(dòng)和停止備份等的命令。

?

安裝配置說(shuō)明

?軟件下載說(shuō)明:

1、?軟件下載地址: http://www.mysql.com/downloads/cluster/

2、?安裝版本: mysql-cluster-gpl-7.3.5-debian6.0-i686

安裝步驟說(shuō)明:

一、?管理節(jié)點(diǎn)安裝

1、?登陸系統(tǒng)建立目錄結(jié)構(gòu)

?

mkdir?–p?/root/mysql/data/mgmd_data

mkdir?/root/mysql/data/ndb_data

mkdir?/root/mysql/data/mysqld_data

mkdir?/root/mysql/conf

mkdir?/root/mysql/mysqlc

?

?

2、?安裝 mysqlc

dpkg?–i?mysql-cluster-gpl-7.3.5-debian6.0-i686

mv?/opt/mysql/server-5.6/*?/root/mysql/mysqlc

?

3、?設(shè)置環(huán)境變量

.bashrc 文件的 PATH 后面加入如下信息 /root/mysql/mysqlc/bin

vim?~/.bashrc

加入后,文件如下所示

?

加入后執(zhí)行如下命令使配置生效:

.?~/.bashrc

4、?在 /root/mysql/conf 目錄下建立 mgmd.conf文件,然后在文件中配置各節(jié)點(diǎn)信息 , 如下所示:

[ndbd?default]

NoOfReplicas=1?#設(shè)置冗余的分?jǐn)?shù)(一個(gè)sql節(jié)點(diǎn)對(duì)應(yīng)幾個(gè)data節(jié)點(diǎn))

DataMemory=100M?#指定存放數(shù)據(jù)的內(nèi)存段大小

IndexMemory=50M#制定索引的內(nèi)存段大小

LockPagesInMainMemory=1?#將進(jìn)程鎖定在內(nèi)存中

TimeBetweenLocalCheckpoints=20#本地檢查點(diǎn)時(shí)間間隔。

TimeBetweenGlobalCheckpoints=1000#全局檢查點(diǎn)時(shí)間間隔。

TimeBetweenEpochs=100#復(fù)制同步的間隔時(shí)間

TimeBetweenWatchdogCheckInitial=60000?

MaxNoOfTables=1024?#該參數(shù)為作為整體的簇設(shè)置了最大表對(duì)象數(shù)目

MaxNoOfOrderedIndexes=2048?#設(shè)置哈希索引在系統(tǒng)中同一時(shí)間被使用總數(shù)

MaxNoOfUniqueHashIndexes=512?#設(shè)置最大的唯一索引的總數(shù)

MaxNoOfAttributes=20480?#定義了可在簇中定義的屬性數(shù)目

MaxNoOfTriggers=10240#設(shè)置簇中觸發(fā)程序?qū)ο蟮淖畲髷?shù)目

DiskCheckpointSpeedInRestart=100M?#重啟的時(shí)候本地檢查點(diǎn)期間發(fā)送到磁的速度?

NoOfFragmentLogFiles=16?#該參數(shù)用于設(shè)置節(jié)點(diǎn)的REDO日志文件的個(gè)數(shù)??

RedoBuffer=65M?#設(shè)置redo日志緩存

MaxNoOfConcurrentOperations=500000?#設(shè)置事務(wù)中同時(shí)更新的最大記錄數(shù)

MaxNoOfExecutionThreads=8#線程的數(shù)量?

BatchSizePerLocalScan=512?#該參數(shù)用于計(jì)算鎖定記錄的數(shù)目

SharedGlobalMemory=20M?#這個(gè)參數(shù)設(shè)置用于日志緩沖、磁盤操作和表空間...

DiskPageBufferMemory=80M?#設(shè)置硬盤上的緩存頁(yè)的空間總量的大小

#[tcp?default]

#portnumber=2202#通訊端口(現(xiàn)在無(wú)效)

[ndb_mgmd]

hostname=192.168.1.39#管理節(jié)點(diǎn)IP

datadir=/root/mysql/data/mgmd_data#管理節(jié)點(diǎn)數(shù)據(jù)目錄

Nodeid=1#管理節(jié)點(diǎn)編號(hào)

[ndbd]

hostname=192.168.1.39#數(shù)據(jù)節(jié)點(diǎn)IP

datadir=/root/mysql/data/ndb_data#數(shù)據(jù)節(jié)點(diǎn)數(shù)據(jù)目錄

NodeId=2#數(shù)據(jù)節(jié)點(diǎn)編號(hào)

[mysqld]

hostname=192.168.1.39#sql節(jié)點(diǎn)IP

NodeId=3#sql節(jié)點(diǎn)編號(hào)

?

5、?管理節(jié)點(diǎn)啟動(dòng)命令

第一次啟動(dòng):

ndb_mgmd?-f?/root/mysql/conf/mgmd.conf?--configdir=/root/mysql/conf/?--initial

非第一次啟動(dòng):

ndb_mgmd?-f?/root/mysql/conf/mgmd.conf?--configdir=/root/mysql/conf/

注意:?路徑不能使用相對(duì)地址,?需要使用絕對(duì)地址.

啟動(dòng)后可以輸入 ndb_mgm 命令進(jìn)入管理控制臺(tái),然后輸入 show 命令查看節(jié)點(diǎn)狀態(tài),如下圖所示:

?

二、?數(shù)據(jù)節(jié)點(diǎn)安裝

1、?管理節(jié)點(diǎn)啟動(dòng)命令

第一次啟動(dòng)命令:

ndbd?-c?192.168.1.39:1186?--initial?

非第一次啟動(dòng)命令:

ndbd?-c?192.168.1.39:1186?

???注意:如果在啟動(dòng)的時(shí)候加入 initial 參數(shù),那么會(huì)將用于備份和還原的日志信息都會(huì)清空,也就是說(shuō)會(huì)將數(shù)據(jù)庫(kù)中的數(shù)據(jù)刪除掉。在啟動(dòng)的時(shí)候一定要注意。

三、?SQL 節(jié)點(diǎn)安裝

?

1、?在 /root/mysql/conf 目錄下建立 mys qld.conf 文件,然后在文件中配置各節(jié)點(diǎn)信息 , 如下所示:

[mysqld]

ndbcluster

ndb-wait-setup=1?#等待data節(jié)點(diǎn)創(chuàng)建數(shù)據(jù)表時(shí)間限制

datadir=/root/mysql/data/mysqld_data

basedir=/root/mysql/mysqlc

socket=/tmp/mysql.sock?#Windows注釋掉

skip-name-resolve?#跳過(guò)域名解析

port=3306

#ndb-connectstring=192.168.1.39

[mysql_cluster]

ndb-connectstring=192.168.1.39?#指向管理節(jié)點(diǎn)

?

2、?第一次安裝 sql 節(jié)點(diǎn)后要執(zhí)行如下腳本,該腳本只執(zhí)行一次。

cd??/root/mysql/mysqlc

./scripts/mysql_install_db?--no-defaults?--datadir=/root/mysql/data/mysqld_data/?--basedir=.

?

3、?sql節(jié)點(diǎn)啟動(dòng)命令

mysqld?--defaults-file=/root/mysql/conf/mysqld.conf?--user=root

?

4、?權(quán)限配置

本地權(quán)限配置 :

mysqladmin??–uroot???–proot

非本機(jī)訪問(wèn)權(quán)限配置 :

GRANT?ALL?PRIVILEGES?ON?*.*?TO?'root'@'%'?IDENTIFIED?BY?'root'?WITH?GRANT?OPTION;

FLUSH?PRIVILEGES;

關(guān)閉mysql?cluster

數(shù)據(jù)節(jié)點(diǎn)?和?管理節(jié)點(diǎn)通過(guò)進(jìn)入?ndb_mgm?,?輸入shutdown?來(lái)關(guān)閉

sql節(jié)點(diǎn)通過(guò)?mysqladmin?-uroot?-p?shutdown?來(lái)關(guān)閉

方案測(cè)試

一、?測(cè)試工具

壓力測(cè)試工具使用的是 mysql 自帶的 mysqlslap 壓力測(cè)試工具。

mysqlslap:

mysql 自帶的一個(gè)壓力測(cè)試工具,自 5.1.4 版本之后的 MySQL?client? 包含了此工具,下載 mysql?client?rpm 包安裝后可直接使用。在?使用 mysqlslap 的時(shí)候,可以指定 sql 語(yǔ)句或者是包含 sql 語(yǔ)句的文件,如果是文件,那么文件中的每一行至少有一個(gè)語(yǔ)句(不能一個(gè) sql 語(yǔ)句分成?兩行或多行),因?yàn)槟J(rèn)的分隔符( delimiter )是換行符,當(dāng)然,你也可以手動(dòng)重置新的分隔符。另外,你也不能在文件中添加注?釋, mysqlslap 不支持。

Mysqlslap參數(shù)說(shuō)明 :

--concurrency 代表并發(fā)數(shù)量,多個(gè)可以用逗號(hào)隔開,當(dāng)然你也可以用自己的分隔符隔 開,這個(gè)時(shí)候要用到 --delimiter 開關(guān)。

--engines 代表要測(cè)試的引擎,可以有多個(gè),用分隔符隔開。

--iterations 代表要運(yùn)行這些測(cè)試多少次。

--auto-generate-sql? 代表用系統(tǒng)自己生成的 SQL 腳本來(lái)測(cè)試。

--auto-generate-sql-load-type? 代表要測(cè)試的是讀還是寫還是兩者混合的?

--number-of-queries? 代表總共要運(yùn)行多少次查詢。每個(gè)客戶運(yùn)行的查詢數(shù)量可以 用查詢總數(shù) / 并發(fā)數(shù)來(lái)計(jì)算。比如倒數(shù)第二個(gè)結(jié)果 2=200/100 。

--debug-info? 代表要額外輸出 CPU 以及內(nèi)存的相關(guān)信息。

--number-int-cols? 代表示例表中的 INTEGER 類型的屬性有幾個(gè)。

--number-char-cols? 意思同上。

--create-schema? 代表自己定義的模式(在 MySQL 中也就是庫(kù))。

--query? 代表自己的 SQL 腳本。

--only-print? 如果只想打印看看 SQL 語(yǔ)句是什么,可以用這個(gè)選項(xiàng)。

-h?sql 節(jié)點(diǎn) ip

-u? 用戶

-p( 小寫 )? 密碼

-P( 大寫 )? 端口

二、?壓力測(cè)試建表及存儲(chǔ)過(guò)程

1.?建庫(kù)、建表腳本:

CREATE?DATABASE?cluster1;

USE?cluster1;

CREATE?TABLE?ndbtest?(

id?int(11)?NOT?NULL?AUTO_INCREMENT,

regtime?DATETIME?DEFAULT?NULL,

name?VARCHAR(200)?DEFAULT?NULL,

PRIMARY?KEY?(`id`)

)?ENGINE=ndb?AUTO_INCREMENT=1000001?DEFAULT?CHARSET=latin1?PACK_KEYS=0;

?

2.?存儲(chǔ)過(guò)程腳本

DELIMITER?$$

DROP?PROCEDURE?IF?EXISTS?`p_test_t1_disk`?$$

CREATE?PROCEDURE?`p_test_t1_disk`()

BEGIN

declare?i?int?default?0;

test:?loop

 insert?into?cluster1.ndbtest(regtime,name)?values(sysdate(),md5(rand()));

 set?i=i+1;

 if?i>=10000?then

   leave?test;

 end?if;

end?loop;

END?$$

DELIMITER?;

3.?工具運(yùn)行命令

mysqlslap?-uroot?-proot?--concurrency=1?--iterations=1?--query='call?cluster1.p_test_t1_disk;'?--number-of-queries=1?-h?192.168.1.37?--create-schema=cluster1

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

MYSQL?REPLICATION 方案介紹

Mysql?Replication MySQL 主從復(fù)制)是 MySQL 數(shù)據(jù)庫(kù)使用率非常高的一種技術(shù),它使用某個(gè)數(shù)據(jù)庫(kù)服務(wù)器為?主,然后在其他數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行復(fù)制,后面復(fù)制的數(shù)據(jù)庫(kù)也稱從數(shù)據(jù)庫(kù)。 MySQL 支持單向、異步復(fù)制,復(fù)制過(guò)程中一個(gè)服務(wù)器充當(dāng)主服務(wù)器,而一個(gè)或多個(gè)?其它服務(wù)器充當(dāng)從服務(wù)器。

在設(shè)置鏈?zhǔn)綇?fù)制服務(wù)器時(shí),從服務(wù)器本身也可以充當(dāng)主服務(wù)器,如: a->b->c , b 對(duì)于 a 來(lái)說(shuō)是從服務(wù)器,但是它又?是 c 的主服務(wù)器。
Mysql?Replication MySQL 主從復(fù)制)主要用于:

1. 使用一個(gè)從服務(wù)器執(zhí)行備份,而不會(huì)干擾主服務(wù)器。在備份過(guò)程中主服務(wù)器可以繼續(xù)處理更新;

2. 解決數(shù)據(jù)庫(kù)讀需求很高 ( 讀寫分離 ),? 通常使用 amoeba 或者 mysqlproxy 作為中間代理層 .


Mysql?Replication MySQL 主從復(fù)制)的原理:

Mysql 的復(fù)制( replication )是一個(gè)異步的復(fù)制,從一個(gè) Mysql?instace (稱之為 Master )復(fù)制到另一個(gè) Mysql?instance (稱之 Slave )。實(shí)現(xiàn)整個(gè)復(fù)制操作主要由三個(gè)進(jìn)程完成的,其中兩個(gè)進(jìn)程在 Slave Sql 進(jìn)程和 IO 進(jìn)程),另外一個(gè)進(jìn)程在? Master IO 進(jìn)程)上。

要實(shí)施復(fù)制,首先必須打開 Master 端的 binary?log bin-log )功能,否則無(wú)法實(shí)現(xiàn)。因?yàn)檎麄€(gè)復(fù)制過(guò)程實(shí)際上就是 Slave Master 端獲取該日志然后再在自己身上完全順序的執(zhí)行日志中所記錄的各種操作。
復(fù)制的基本過(guò)程如下:
1) 、

Slave 上面的 IO 進(jìn)程連接上 Master ,并請(qǐng)求從指定日志文件的指定位置(或者從最開始的日志)之后的日志內(nèi)容;
2) 、

Master 接收到來(lái)自 Slave IO 進(jìn)程的請(qǐng)求后,通過(guò)負(fù)責(zé)復(fù)制的 IO 進(jìn)程根據(jù)請(qǐng)求信息讀取制定日志指定位置之后的日志信息,返回給 Slave? IO 進(jìn)程。返回信息中除了日志所包含的信息之外,還包括本次返回的信息已經(jīng)到 Master 端的 bin-log 文件的名稱以及 bin-log 的位置;
3) 、

Slave IO 進(jìn)程接收到信息后,將接收到的日志內(nèi)容依次添加到 Slave 端的 relay-log 文件的最末端,并將讀取到的 Master 端的? bin-log 的文件名和位置記錄到 master-info 文件中,以便在下一次讀取的時(shí)候能夠清楚的高速 Master“ 我需要從某個(gè) bin-log 的哪個(gè)位置開始往后的日志內(nèi)容,請(qǐng)發(fā)給我 ;
4)

Slave Sql 進(jìn)程檢測(cè)到 relay-log 中新增加了內(nèi)容后,會(huì)馬上解析 relay-log 的內(nèi)容成為在 Master 端真實(shí)執(zhí)行時(shí)候的那些可執(zhí)行的內(nèi)容,并在自身執(zhí)行。

如果要實(shí)現(xiàn) Slave Master 為同一個(gè) mysqld,? 需要添加 log-slave-updates?=?1

參數(shù)到 my.cnf- à[mysqld]

服務(wù)器結(jié)構(gòu):

A 、 B 、 C 三臺(tái)服務(wù)器;?其中 A 為新聞數(shù)據(jù)源, A B Master , B A Slave , 同時(shí)也是 C Master

B 服務(wù)器從 A 復(fù)制部分?jǐn)?shù)據(jù), C 備份 A 的所有數(shù)據(jù);

注意 :

如果數(shù)據(jù)庫(kù)在做主從的時(shí)候已經(jīng)有數(shù)據(jù)了 ,? 則需要進(jìn)行鎖表操作 .

mysql>?flush?tables?with?read?lock;

記住數(shù)據(jù)導(dǎo)完后要解鎖:

mysql>?unloclk?tables;

?

Master?A 的配置

?

sudo?vi?/etc/mysql/my.cnf

?

刪除以下參數(shù)前的注釋并修改

server-id???????=?1?// 分配 server-id

log-bin?????????=?master-bin?// 默認(rèn) mysql-bin, 可以不修改

log-bin-index???=?master-bin.index??// 非必須

bind-adress?????=?0.0.0.0?// 默認(rèn) 127.0.0.1? 不修改可能導(dǎo)致無(wú)法訪問(wèn)

?

修改系統(tǒng)防火墻使 B 服務(wù)器可以訪問(wèn) 3306 端口,(詳查 ufw 命令)??

重啟 mysql

sudo?/init.d/mysql?restart

?

通過(guò)語(yǔ)句:

GRANT?REPLICATION?SLAVE,REPLICATION?CLIENT?ON?*.*?TO?user@'ip?B'?IDENTIFIED?BY?'password';

?

B 服務(wù)器建立一個(gè)可以連接到 A 的帳號(hào)

進(jìn)入 mysql ,通過(guò):

show?master?status;

查看 A 的狀態(tài),記錄下 file 的位置和 postion 的參數(shù)

?

?

?

Slave?B 的配置

sudo?vi?/etc/mysql/my.cnf

?

server-id???????=?2

log-bin?????????=?slave-bin

bind-address????=?0.0.0.0

relay-log-index?=??slave-relay-bin.index?// 非必須

relay-log???????=?slave-relay-bin???// 非必須

?

添加參數(shù):

log-slave-updates?=?1???

// 通常情況,從服務(wù)器從主服務(wù)器接收到的更新不記入它的二進(jìn)制日志。

// 該選項(xiàng)告訴從服務(wù)器將其 SQL 線程執(zhí)行的更新記入到從服務(wù)器自己的二進(jìn)制日志。

?

replicate_wild_do_table?=?copy_db.copy_table?// 表示需要復(fù)制的庫(kù)中的表,可以善用 %

replicate_wild_ignore_table?=?ignore_db.ignore_table?// 不復(fù)制的表

?

至于為什么不使用 replicate_do_db replicate_ignore_db 參數(shù),

是為了方式跨庫(kù)更新時(shí)出錯(cuò),如果能確保不會(huì)跨庫(kù)更新可考慮

?

重啟 mysql ,進(jìn)入本機(jī) mysql

?

執(zhí)行以下語(yǔ)句:

CHANGE?MASTER?TO?MASTER_HOST='server?A?ip',

MASTER_PORT=3306,

MASTER_USER='user',

MASTER_PASSWORD='password',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=0;

?

//MASTER_LOG_FILE MASTER_LOG_POS 對(duì)應(yīng) A 中的 file 位置和 postion 參數(shù),表示開始復(fù)制的 bin 文件和位置

?

start?slave;????// 啟動(dòng) Slave

show?slave?status ;?? // 查看 Slave_IO_State 參數(shù),如果是 Waiting?for?master?to?send?event, 則正常

// 正常狀態(tài)下 Slave_IO_Running Slave_SQL_Running 均為 yes

?

// 如不能正常鏈接,根據(jù) Slave_IO_State Slave_IO_Running , Slave_SQL_Running , Last_IO_Error

// 等參數(shù)查找失敗原因

?

通過(guò):

show?master?status;

命令記錄 file 位置和 postion 參數(shù);

?

C 服務(wù)器分配一個(gè)帳號(hào)用于同步;

方法參照 A ,防火墻設(shè)置參照 A ;

?

?

?

?

Slave?C 的配置

sudo?vi?/etc/mysql/my.cnf

server-id??=?3

relay-log-index?=??slave-relay-bin.index?// 非必須

relay-log???????=?slave-relay-bin???// 非必須

?

通過(guò) CHANGE?MASTER?TO 語(yǔ)句來(lái)修改 master 的參數(shù),參照 B 的配置;

通過(guò)

show?slave?status;

檢查 C 的狀態(tài),參照 B

?

?

?

?

?

讀寫分離配置 :

推薦使用 amoeba,?amoeba? 相比較 mysqlproxy,? 優(yōu)點(diǎn)在于中文文檔齊全 ( 國(guó)人編寫 ) ,穩(wěn)定性高,免除了 mysqlproxy lua 配置的復(fù)雜性 .

Amoeba 讀寫分離:

http://docs.hexnova.com/amoeba/rw-splitting.html

高可用性

可以制作兩個(gè) master, 它們兩個(gè)為雙熱備主機(jī),然后通過(guò) keepalive 整合 master? 變?yōu)橐粋€(gè) VIP ,?最后? amoeba slave 都是通過(guò)這個(gè) VIP? 來(lái)進(jìn)行操作, amoeba insert 等操作發(fā)送到這個(gè) VIP ,? slave 通過(guò) VIP 獲得具體的 bin 日志,然后進(jìn)行更新

Keepalive 在使用的時(shí)候,通常只有一臺(tái) master 會(huì)進(jìn)行工作,另外一臺(tái)進(jìn)行主從復(fù)制,當(dāng) query 發(fā)送到 VIP 的時(shí)候,就會(huì)進(jìn)入工作的 master 運(yùn)行。當(dāng)工作 master 宕機(jī)后, keepaliave 會(huì)自動(dòng)切換 VIP 指向空閑 master 進(jìn)行工作,?這樣子就實(shí)現(xiàn)了高可用性。

所以在雙擊熱備的環(huán)境中?,總共會(huì)占用 3+ 個(gè) IP 地址。

?

負(fù)載均衡

負(fù)載均衡在 IP 層上,通常使用 LVS 軟件,在 HTTP 層面上可以使用 Nginx lighttpd apache?web?server? 等軟件。

現(xiàn)在為了實(shí)現(xiàn) MySql master 的負(fù)載均衡,可以使用 LVS ,?在 IP 層面上進(jìn)行負(fù)載均衡,

也可以使用 MySql-Cluster(NDB) 產(chǎn)品,?它已經(jīng)實(shí)現(xiàn)了高可用性以及負(fù)載均衡 .

高可用性和負(fù)載均衡都可以直接通過(guò) NDB 來(lái)實(shí)現(xiàn) , 上面提及的是一般方法

?

MySql 集群配置


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論