mysql讀寫(xiě)分離 集群

主:192.168.122.11
從:192.168.122.22
代理:192.168.122.33

主和從上分別
是遠(yuǎn)程連接昭齐,要授予遠(yuǎn)程連接的權(quán)限
mysql> create database db;
mysql> use db;
mysql> create table test(id int);
mysql> insert into test values(1),(2);
mysql> select * from test;

mysql> grant all on db_1.* to proxy@'%' identified by '123';

代理服務(wù)器上要測(cè)試
[root@node3 ~]# /usr/local/mysql/bin/mysql -h 192.168.122.11 -u proxy -p123
[root@node3 ~]# /usr/local/mysql/bin/mysql -h 192.168.122.22 -u proxy -p123

[root@node3 tmp]# tar xf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
[root@node3 tmp]# mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy
[root@node3 tmp]# cd /usr/local/mysql-proxy/share/doc/mysql-proxy/
[root@proxy mysql-proxy]# vim rw-splitting.lua 更改鏈接數(shù),分離
[root@node3 mysql-proxy]# cd /usr/local/mysql-proxy/bin/
[root@localhost bin]# killall mysqld
[root@localhost bin]# killall mysqld
[root@node3 bin]# ./mysql-proxy -P 192.168.122.33:3306 -r 192.168.122.22:3306 -b 192.168.122.11:3306 -s /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon --user=nobody --log-level=debug --log-use-syslog

[root@node3 mysql-proxy]# cd /usr/local/mysql-proxy/bin/
[root@node3 bin]# ./mysql-proxy --help
[root@node3 bin]# ./mysql-proxy --proxy-address=192.168.122.33:3306 --proxy-read-only-backend-addresses=192.168.122.22:3306 --proxy-backend-addresses=192.168.122.11:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon --user=nobody --log-level=debug --log-use-syslog

==========================================================================================================================================

使用代理軟件
mysql-proxy實(shí)現(xiàn)mysql的讀寫(xiě)分離
實(shí)驗(yàn):
192.168.1.14
客戶端請(qǐng)求mysql-proxy,判斷是寫(xiě)還是讀
建立兩次連接
是遠(yuǎn)程連接舔亭,要授予遠(yuǎn)程連接的權(quán)限

use db;
create table test (id int);
insert into test values (10),(100);
grant all on db.* to proxy@'%' identified by '123';

192.168.1.140
在打開(kāi)一個(gè)終端設(shè)置從服務(wù)器
和主服務(wù)器一樣悲没,只是值不一樣
mysql

create database dn;
use db
create table test (id int);
insert into test values (10),(200);
grant all on db.* to proxy@'%' identified by '123'; 密碼和主服務(wù)器必須一樣

指定一個(gè)代理服務(wù)器;192.168.1.15
測(cè)試
mysql -h 192.168.1.140 -u proxy -p123
mysql -h 192.168.1.14 -u proxy -p123
使用lva的腳本語(yǔ)言料滥,把lva的解釋起和lvadevell裝上淳梦,day4里面有mysql-proxy
把兩個(gè)包裝上 rpm
mysql-proxy-0.8.0.........
rpm -ivh lua-5.0.2-1.el5.rf.i386.rpm
rpm -ivh lua-devel-5.0.2-1.el5.rf.i386.rpm
tar zxvf mysql-proxy-0.8.0-linux-rhel5-x86-32bit.tar.gz -C /usr/local/src

cp -r mysql-proxy-0.8.0-linux-rhel5-x86-32bit /usr/local/mysql-proxy

cd /usr/local/mysql-proxy/share/doc/mysql-proxy
vim rw-splitting.lua
36 if not proxy.global.config.rwsplit then
37 proxy.global.config.rwsplit = {
38 min_idle_connections = 1, 最小空閑線程連接
39 max_idle_connections = 1, 最大線程連接,基本沒(méi)用

mysqlproxy的啟動(dòng)方法
cd bin
./mysql-proxy --help-proxy 查看幫助
mysql-proxy --proxy-read-only-backend-addresses=192.168.0.5:3306 --proxy-backend-addresses=192.168.0.3:3306 --proxy-lua-script=/usr/share/doc/mysql-prox[root@node3 bin]# ./mysql-proxy --proxy-address=192.168.122.33:3306 --proxy-read-only-backend-addresses=192.168.122.22:3306 --proxy-backend-addresses=192.168.122.11:3306 --proxy-lua-script=/usr/share/doc/mysql-proxy/rw-splitting.lua --daemon --user=nobody --log-level=debug --log-use-syslog
y/rw-splitting.lua --daemon --user=nobody --log-level=debug --log-use-syslog
-P 決定mysql用那個(gè)接口進(jìn)行連接砂竖,指定mysql-proxy工作的時(shí)候允許訪問(wèn)的IP和接口 模擬成mysql真椿,端口用3306,要保證自己本地的mysql不要運(yùn)行乎澄,打開(kāi)后端口沖突突硝,mysql-proxy運(yùn)行不起來(lái)
-r 只讀的后端服務(wù)器 192.168.1.140
-b 讀寫(xiě)的后端服務(wù)器 192.168.1.14
-s 工作的時(shí)候指定腳本的位置和名稱,默認(rèn)是沒(méi)有的
版本小于5.1.12置济,會(huì)出現(xiàn)bug解恰,要加上-bug
--deamon 以一個(gè)服務(wù)的形式去啟動(dòng)
什么算服務(wù):被定義為服務(wù)的進(jìn)程是沒(méi)有終端的,不依賴于用戶的終端浙于。終端關(guān)掉护盈,服務(wù)還是可以正常運(yùn)行的

運(yùn)行mysql-proxy
./mysql-proxy -P 192.168.1.15:3306 -b 192.168.1.14:3306 -r 192.168.1.140:3306 -s /usr/local/mysqlproxy/shaer/doc/mysql-proxy/rw-splitting.lua --daemon &

改變:#ulimit -n 10240 臨時(shí)改變,永久改變羞酗,要改PAM
(ulimit -n 1
cat /etc/passwd /etc/shadow
會(huì)出錯(cuò))

測(cè)試:
模擬客戶端腐宋,利用mysql命令往mysql-proxy發(fā)起連接
mysql -h 192.168.1.15 -u proxy -p123

use db;
select * from test;

另一個(gè)標(biāo)簽
mysql -h 192.168.1.15 -u proxy -p123

use db;
select * from test;

可以增大連接數(shù)目

update test set id=300; 改變數(shù)據(jù)

然后可以把140 14 搭建成主從的模式

錯(cuò)誤
1.iptables 防火墻 selinux
2.啟動(dòng)腳本 參數(shù)錯(cuò)誤
3.用戶錯(cuò)誤
4.proxy啟動(dòng)mysql服務(wù)


mysql-cluster

1、準(zhǔn)備5臺(tái)服務(wù)器檀轨,為五臺(tái)機(jī)器分別安裝Linux操作系統(tǒng)(RHEL 6.5 x86_64bit)胸竞,并分配IP地址

Management Node 1.1.1.6 (負(fù)責(zé)管理整個(gè)集群)
SQL Node 1.1.1.7 (負(fù)責(zé)操作數(shù)據(jù)庫(kù))
SQL Node 1.1.1.8 (負(fù)責(zé)操作數(shù)據(jù)庫(kù))
Data Node 1.1.1.9 (負(fù)責(zé)存儲(chǔ)數(shù)據(jù))
Data Node 1.1.1.10 (負(fù)責(zé)存儲(chǔ)數(shù)據(jù))

(SQL節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)可以同在一臺(tái)機(jī)器上)

2、修改5臺(tái)服務(wù)器的/etc/hosts文件参萄,修改完后的內(nèi)容如下:

1.1.1.6 node1.manager.com
1.1.1.7 node2.sql1.com
1.1.1.8 node3.sql2.com
1.1.1.9 node4.data1.com
1.1.1.10 node5.data2.com

3.分別在5臺(tái)服務(wù)器上解壓 mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64.tar.gz

[root@node5 ~]# cd /tmp
[root@node5 tmp]# tar xf mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64.tar.gz
[root@node5 tmp]# mv mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64 /usr/local/mysql-cluster
[root@node5 tmp]# chown -R mysql.mysql /usr/local/mysql-cluster

注意:管理節(jié)點(diǎn)只需要建立/usr/local/mysql-cluster/目錄
將ndb_mgm ndb_mgmd兩個(gè)可執(zhí)行程序拷貝到/usr/local/mysql-cluster/下(從任意節(jié)點(diǎn)拷貝)

4.管理節(jié)點(diǎn)的配置
vim /usr/local/mysql-cluster/config.ini
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M

[ndb_mgmd]
hostname=1.1.1.6
datadir=/usr/local/mysql-cluster

[ndbd]
hostname=1.1.1.9
datadir=/usr/local/mysql-cluster/data

[ndbd]
hostname=1.1.1.10
datadir=/usr/local/mysql-cluster/data

[mysqld]
hostname=1.1.1.7

[mysqld]
hostname=1.1.1.8

啟動(dòng)管理節(jié)點(diǎn)
/usr/local/mysql-cluster/bin/ndb_mgmd -f /usr/local/mysql-cluster/config.ini --initial
(第一次啟動(dòng)時(shí)這樣執(zhí)行卫枝,如果后面新添加了數(shù)據(jù)節(jié)點(diǎn)。執(zhí)行此命令時(shí)讹挎,需要帶上--initital參數(shù)校赤,否則新添加的節(jié)點(diǎn)吆玖,無(wú)法被識(shí)別)

[root@node5 mysql-cluster]# ./ndb_mgm (查看啟動(dòng)后的集群狀態(tài),看看集群是否成功啟動(dòng)马篮,如果看到以下內(nèi)容沾乘,表示集群已經(jīng)成功配置并啟動(dòng))
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration


[ndbd(NDB)] 2 node(s)
id=2 @1.1.1.9 (mysql-5.6.21 ndb-7.3.7, Nodegroup: 0, *)
id=3 @1.1.1.10 (mysql-5.6.21 ndb-7.3.7, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @1.1.1.6 (mysql-5.6.21 ndb-7.3.7)

[mysqld(API)] 2 node(s)
id=4 @1.1.1.7 (mysql-5.6.21 ndb-7.3.7)
id=5 @1.1.1.8 (mysql-5.6.21 ndb-7.3.7)

5.數(shù)據(jù)節(jié)點(diǎn)(注意實(shí)驗(yàn)環(huán)境內(nèi)存盡量設(shè)置大于1G)
[root@node3 mysql-cluster]# vim /etc/my.cnf
[mysqld]
ndbcluster

[mysql_cluster]
ndb-connectstring=1.1.1.6

啟動(dòng)
/usr/local/mysql-cluster/bin/ndbd

6.SQL節(jié)點(diǎn)
vim /etc/my.cnf
[mysqld]
ndbcluster

[mysql_cluster]
ndb-connectstring=1.1.1.6

初始化(只SQL需要做)
cd /usr/local/mysql-cluster/
./scripts/mysql_install_db --user=mysql

啟動(dòng)sql節(jié)點(diǎn)(殺死其他mysql進(jìn)程)
./bin/mysqld_safe --user=mysql &

測(cè)試
1.測(cè)試數(shù)據(jù)同步讀取
create database king;
create table test(id int) engine=ndbcluster;
insert into test values(1);
select * from test;

2.測(cè)試數(shù)據(jù)節(jié)點(diǎn)失敗

3.測(cè)試SQL節(jié)點(diǎn)失敗


MySQL 5.1 AB 復(fù)制

ab復(fù)制(主從復(fù)制)
可以讓mysql實(shí)現(xiàn):
1.數(shù)據(jù)的備份(主服務(wù)器的數(shù)據(jù)全部同步到從服務(wù)器)
2.可以負(fù)載均衡減小主服務(wù)器的壓力
3.真正實(shí)現(xiàn)mysql的讀寫(xiě)分離

配置方法
主服務(wù)器:
1.cat /etc/my.cnf
[mysqld]
log-bin=mysql_bin
server-id=1 不允許重復(fù)
2.grant replication slave on . to ‘slave‘@‘192.168.1.140‘ identified by '123';授權(quán),指定從服務(wù)器只能復(fù)制binlog积蔚,從服務(wù)器的ip
mysql>show master status查看主服務(wù)器的運(yùn)行狀態(tài)

在從上使用slave用戶登錄測(cè)試:
3.mysql -u slave -p123 -h 192.168.1.14
4.mysqldump --all-database > db_backup.sql (主服務(wù)執(zhí)行全備)
5.mysql> show master status;找到當(dāng)前的日志文件和位置號(hào)

從:(可以不用開(kāi)啟binlog功能)
6.mysql -uroot -p123 < db_backup.sql 將主服務(wù)的全備腳本拷貝到主服務(wù)器并且導(dǎo)入主服務(wù)器
7.cat /etc/my.cnf
[mysqld]
server-id=2 和主服務(wù)器不重復(fù)就可以
master-host=192.168.1.131 主服務(wù)器ip
master-user=slave 登錄時(shí)賬號(hào)
master-password=123 mysql讀取配置文件時(shí)意鲸,知道是以從服務(wù)器的形式運(yùn)行

8.從服務(wù)器從主服務(wù)器讀取binlog產(chǎn)生問(wèn)題時(shí)
mysql -u root -p
mysql> change master to
mysql> master_host='192.168.1.131',
mysql> master_user='slave',
mysql> master_password='123',
mysql> master_log_file='',
mysql> master_log_pos=399;

9.啟動(dòng)從服務(wù)器
mysql> slave start 或者是start slave烦周,啟動(dòng)從服務(wù)器
mysql>show slave status 查看從服務(wù)器狀態(tài)

練習(xí):
主----從(主)------從
log-slave-updates 中間這臺(tái)作用:中繼日志內(nèi)容寫(xiě)入到binlog日志

互主
[mysqld]
log-bin=mysql_bin
server-id=1
master-host=192.168.100.130
master-user=slave2
master-password=123
auto-increment-increment=2
auto-increment-offset=1

[mysqld]
log-bin=slave
server-id=2
master-host=192.168.100.128
master-user=slave
master-password=123
auto-increment-increment=2
auto-increment-offset=2

主服務(wù)器
A ip 172.16.10.1
1.A全備份
mysqldump -u root -S /var/lib/mysql/mysql.sock --all-databases >> /tmp/all.sql
2.開(kāi)啟binlog日志
vim /etc/my.cnf
[mysqld]
log-bin=master
log-bin-index=master
server-id=1

service mysqld restart

3.授權(quán)B服務(wù)器 可以傳輸binlog日志
grant replication slave on . to slave@'172.16.10.2' identified by '123';

從服務(wù)器
B ip 172.16.10.2
1.測(cè)試slave是否能正常鏈接
mysql -u slave -p123 -h 172.16.10.1

2.拷貝A服務(wù)器的全備,并且恢復(fù)
scp 172.16.10.1:/backup/all.sql ./
mysql -u root < /root/all.sql

3.配置A服務(wù)器連接地址及用戶信息
vim /etc/my.cnf
[mysqld]
server-id=2
master-user=slave
master-password=123
master-host=172.16.10.1

測(cè)試
A服務(wù)器
mysql> show master status\G

B服務(wù)器
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

A服務(wù)器做出數(shù)據(jù)改動(dòng) 查看從服務(wù)器是否有同步的變化


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尽爆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子读慎,更是在濱河造成了極大的恐慌漱贱,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夭委,死亡現(xiàn)場(chǎng)離奇詭異幅狮,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)株灸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)崇摄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人慌烧,你說(shuō)我怎么就攤上這事逐抑。” “怎么了屹蚊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵厕氨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我汹粤,道長(zhǎng)命斧,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任嘱兼,我火速辦了婚禮国葬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芹壕。我一直安慰自己汇四,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布哪雕。 她就那樣靜靜地躺著船殉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斯嚎。 梳的紋絲不亂的頭發(fā)上利虫,一...
    開(kāi)封第一講書(shū)人閱讀 49,729評(píng)論 1 289
  • 那天挨厚,我揣著相機(jī)與錄音,去河邊找鬼糠惫。 笑死疫剃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的硼讽。 我是一名探鬼主播巢价,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼固阁!你這毒婦竟也來(lái)了壤躲?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤备燃,失蹤者是張志新(化名)和其女友劉穎碉克,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體并齐,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡漏麦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了况褪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撕贞。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖测垛,靈堂內(nèi)的尸體忽然破棺而出捏膨,到底是詐尸還是另有隱情,我是刑警寧澤赐纱,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布脊奋,位于F島的核電站,受9級(jí)特大地震影響疙描,放射性物質(zhì)發(fā)生泄漏诚隙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一起胰、第九天 我趴在偏房一處隱蔽的房頂上張望久又。 院中可真熱鬧,春花似錦效五、人聲如沸地消。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)脉执。三九已至,卻和暖如春戒劫,著一層夾襖步出監(jiān)牢的瞬間半夷,已是汗流浹背婆廊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留巫橄,地道東北人淘邻。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像湘换,于是被迫代替她去往敵國(guó)和親宾舅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容