欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫中間件Mycat介紹詳解

柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫中間件Mycat介紹詳解

http://yzkb.51969.com/

1. Mycat介紹1.1. 什么是Mycat1.2. 使用Mycat后的結(jié)構(gòu)圖1.3. 為什么要用Mycat?1.4. Mycat能干什么?1.4.1. 讀寫分離1.4.2. 數(shù)據(jù)分片1.4.3. 多數(shù)據(jù)源整合

1.5. Mycat原理1.6. 默認(rèn)端口1.7. MySQL主從模式搭建實(shí)例(重)1.7.1. 基于Docker的MySQL主從復(fù)制搭建1.7.1.1. 拉取MySQL 5.7鏡像文件1.7.1.2. 創(chuàng)建和啟動(dòng)主從容器1.7.1.3. 配置Master(主)1.7.1.4. 配置Slave(從)1.7.1.5. 鏈接Master(主)和Slave(從)1.7.1.6.主從復(fù)制排錯(cuò)1.7.1.7. 測(cè)試主從復(fù)制

1.7.2. 準(zhǔn)備:在Master主庫和Slave從庫都需要完成

下一篇:

Mycat安裝與啟動(dòng)

1. Mycat介紹

1.1. 什么是Mycat

Mycat 是基于Java語言編寫的數(shù)據(jù)庫中間件。 Mycat也是基于阿里開源的Cobar產(chǎn)品而研發(fā),具有穩(wěn)定性,可靠性。 其核心功能就是分庫分表,配合數(shù)據(jù)庫的主從模式還可以實(shí)現(xiàn)讀寫分離。 Mycat官網(wǎng):http://www.Mycat.org.cn/ Mycat下載:http://dl.Mycat.org.cn/ 注:互聯(lián)網(wǎng)大多數(shù)應(yīng)用的性能瓶頸都是數(shù)據(jù)庫的瓶頸,數(shù)據(jù)庫要承擔(dān)大量的數(shù)據(jù)交互。特別是我們的數(shù)據(jù)庫還是關(guān)系型數(shù)據(jù)庫,性能比較差,大數(shù)據(jù)量下性能還是非常差。(十萬級(jí)別數(shù)據(jù)性能)

1.2. 使用Mycat后的結(jié)構(gòu)圖

1.3. 為什么要用Mycat?

Java與數(shù)據(jù)庫緊耦合;高訪問量高并發(fā)對(duì)數(shù)據(jù)庫的壓力;讀寫請(qǐng)求數(shù)據(jù)不一致。

1.4. Mycat能干什么?

1.4.1. 讀寫分離

原理: 需要搭建主從模式,讓主數(shù)據(jù)庫(Master)處理事務(wù)性增、刪、改操作(INSERT、DELETE、UPDATE),而從數(shù)據(jù)庫(Slave)處理查詢(SELECT)操作。 Mycat配合數(shù)據(jù)庫本身的復(fù)制功能,可以解決讀寫分離的問題。

1.4.2. 數(shù)據(jù)分片

數(shù)據(jù)庫分布式。 分庫: 分表: 一張表的數(shù)據(jù)量太大,將表中的數(shù)據(jù)進(jìn)行拆分,如user表拆分成:user_1、user_2、user_3等表。這些表也不一定存放在一個(gè)數(shù)據(jù)庫中,可以將它們存放在不同的數(shù)據(jù)庫中。這樣做也形成了新的問題,怎么去哪個(gè)數(shù)據(jù)庫表中查詢用戶?這就需要Mycat了,我們Java代碼只要訪問Mycat就行,Mycat通過配置(分配規(guī)則)去處理。 垂直拆分(分庫)、水平拆分(分表)、垂直+水平拆分(分庫分表)

1.4.3. 多數(shù)據(jù)源整合

1.5. Mycat原理

Mycat 的原理中最重要的一個(gè)動(dòng)詞是“攔截”,它攔截了用戶發(fā)送過來的 SQL 語句,首先對(duì) SQL語句做了一些特定的分析:如分片分析、路由分析、讀寫分離分析、緩存分析等,然后將此 SQL 發(fā)往后端的真實(shí)數(shù)據(jù)庫,并將返回的結(jié)果做適當(dāng)?shù)奶幚?,最終再返回給用戶。 原理: 應(yīng)用向Mycat發(fā)送SQL, Mycat攔截SQL,經(jīng)過各種分析,然后發(fā)給相應(yīng)的數(shù)據(jù)源進(jìn)行處理。 數(shù)據(jù)源將處理結(jié)果再響應(yīng)給Mycat,Mycat經(jīng)過各種處理,最后響應(yīng)給應(yīng)用。 上圖分析: (1)應(yīng)用向Mycat發(fā)送查詢orders訂單的SQL,條件是prov=zhejiang。 (2)Mycat經(jīng)過條件分析查找滿足條件的數(shù)據(jù)源dn1。 (3)dn1處理完SQL后,將處理結(jié)果響應(yīng)給Mycat,Mycat再經(jīng)過處理響應(yīng)給應(yīng)用。

這種方式把數(shù)據(jù)庫的分布式從代碼中解耦出來,程序員察覺不出來后臺(tái)使用 Mycat 還是MySQL。

1.6. 默認(rèn)端口

MySQL默認(rèn)端口是:3306 Mycat默認(rèn)端口是:8066 Tomcat默認(rèn)端口是:8080 Oracle默認(rèn)端口是:1521 nginx默認(rèn)端口是:80 http協(xié)議默認(rèn)端口是:80 Redis默認(rèn)端口是:6379

1.7. MySQL主從模式搭建實(shí)例(重)

1.7.1. 基于Docker的MySQL主從復(fù)制搭建

為什么基于Docker搭建?

資源有限;虛擬機(jī)搭建對(duì)機(jī)器配置有要求,并且安裝MySQL步驟繁瑣;一臺(tái)機(jī)器上可以運(yùn)行多個(gè)Docker容器;Docker容器之間相互獨(dú)立,有獨(dú)立IP,互不沖突;Docker使用步驟簡(jiǎn)單,啟動(dòng)容器在秒級(jí)別。

1.7.1.1. 拉取MySQL 5.7鏡像文件

docker pull mysql:5.7

1.7.1.2. 創(chuàng)建和啟動(dòng)主從容器

設(shè)置目錄: 為了使MySQL的數(shù)據(jù)保持在宿主機(jī)上,先建立數(shù)據(jù)庫存儲(chǔ)目錄:

mkdir -pv /root/docker/mysql/data

建立主服務(wù)器的配置目錄

mkdir -pv /root/docker/mysql/data/master

建立從服務(wù)器的配置目錄

mkdir -pv /root/docker/mysql/data/slave

Master(主):

docker run -p 3306:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

Slave(從):

docker run -p 3307:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

注: Master對(duì)外映射的端口是3306,Slave對(duì)外映射的端口是3307。因?yàn)镈ocker容器是相互獨(dú)立的,每個(gè)容器有其獨(dú)立的IP,所以不同容器使用相同的端口并不會(huì)沖突。這里我們應(yīng)該盡量使用MySQL默認(rèn)的3306端口,否則可能會(huì)出現(xiàn)無法通過IP連接Docker容器內(nèi)MySQL的問題。

開放3306端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

測(cè)試: Docker ps查看主從MySQL,并用Navicat等工具測(cè)試連接主從MySQL。

1.7.1.3. 配置Master(主)

進(jìn)入主容器:

docker exec -it mysql-master /bin/bash

切換到/etc/mysql目錄下

cd /etc/mysql

對(duì)my.cnf進(jìn)行編輯

vi my.cnf

此時(shí)會(huì)報(bào)出bash: vi: command not found,需要我們?cè)赿ocker容器內(nèi)部自行安裝vim。

apt-get install vim

需要先執(zhí)行 apt-get update命令,這個(gè)命令的作用是:同步/etc/apt/sources.list和/etc/apt/sources.list.d中列出的源的索引,這樣才能獲取到最新的軟件包。 再執(zhí)行apt-get install vim,就可以安裝vim了: 在my.cnf中添加如下配置:

[mysqld]

server-id=100 ## 同一局域網(wǎng)內(nèi)要唯一,且要小于Slave的server_id

log-bin=mysql-bin ## 開啟二進(jìn)制日志功能,可以隨便?。P(guān)鍵),會(huì)生成一個(gè)

mysql-bin.000001的日志文件,Slave就是來讀取該日志文件進(jìn)行同步。

重啟服務(wù): 配置完成之后,需要重啟MySQL服務(wù)使配置生效。

systemctl restart mysqld

或者

service mysql restart

重啟mysql服務(wù)時(shí)會(huì)使得docker容器停止,我們還需要啟動(dòng)容器

docker start mysql-master

對(duì)Slave授權(quán)同步 在Master數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)同步用戶,授予用戶slave的REPLICATION SLAVE權(quán)限和REPLICATION CLIENT權(quán)限(必須嗎?),用于在主從庫之間同步數(shù)據(jù)。 #創(chuàng)建slave用戶及密碼

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

#授權(quán)

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

#二合一

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';

在mysql-master中查看日志:/var/lib/mysql

1.7.1.4. 配置Slave(從)

和配置Master(主)一樣,在Slave配置文件my.cnf中添加如下配置:

[mysqld]

server-id=101 ## 設(shè)置server_id,且要大于主庫的server_id,注意要唯一

log-bin=mysql-slave-bin ## 開啟二進(jìn)制日志功能,以備Slave作為其它Slave的Master時(shí)使用

relay-log=edu-mysql-relay-bin ## relay_log配置中繼日志

配置完成后也需要重啟mysql服務(wù)和docker容器,操作和配置Master(主)一致。 注:不需要開放Slave訪問授權(quán)

1.7.1.5. 鏈接Master(主)和Slave(從)

(1)在Master進(jìn)入mysql,執(zhí)行:

show master status;

說明:File和Position字段的值后面將會(huì)用到,在后面的操作完成之前,需要保證Master庫不能做任何操作,否則將會(huì)引起狀態(tài)變化,F(xiàn)ile和Position字段的值變化。

(2)在Slave中進(jìn)入mysql,執(zhí)行:

change master to master_host='192.168.26.130', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=30;

簡(jiǎn)化:

change master to master_host='192.168.186.129',

master_user='slave',

master_password='123456',

master_log_file='mysql-bin.000001';

說明: master_host=‘192.168.26.130’ 對(duì)應(yīng)主庫地址 master_user=‘slave’ 訪問主庫的用戶名 master_password=‘123456’ 密碼 master_port=3306 端口號(hào) master_log_file=‘mysql-bin.000002’ 讀取的日志文件(對(duì)應(yīng)Master主機(jī)中的日志文件)

命令說明: master_host :Master的地址,指的是容器的獨(dú)立ip,可以通過docker inspect –format=‘{{.NetworkSettings.IPAddress}}’ 容器名稱|容器id查詢?nèi)萜鞯膇p master_port:Master的端口號(hào),指的是容器的端口號(hào) master_user:用于數(shù)據(jù)同步的用戶 master_password:用于同步的用戶的密碼 master_log_file:指定 Slave 從哪個(gè)日志文件開始復(fù)制數(shù)據(jù),即上文中提到的 File 字段的值 master_log_pos:從哪個(gè) Position 開始讀,即上文中提到的 Position 字段的值 master_connect_retry:如果連接失敗,重試的時(shí)間間隔,單位是秒,默認(rèn)是60秒。

(3)在Slave 中的mysql終端執(zhí)行:

show slave status \G; #查看主從同步狀態(tài),\G格式

正常情況下,SlaveIORunning 和 SlaveSQLRunning 都是No,因?yàn)槲覀冞€沒有開啟主從復(fù)制過程。 (4)開啟主從復(fù)制命令 start slave; #關(guān)閉主從復(fù)制:stop slave; 然后再次查詢主從同步狀態(tài):show slave status \G;。 說明: SlaveIORunning 和 SlaveSQLRunning 都是Yes,說明主從復(fù)制已經(jīng)開啟。 此時(shí)可以測(cè)試數(shù)據(jù)同步是否成功。

1.7.1.6.主從復(fù)制排錯(cuò)

使用start slave;開啟主從復(fù)制過程后,如果SlaveIORunning一直是Connecting,則說明主從復(fù)制一直處于連接狀態(tài),這種情況一般是下面幾種原因造成的,我們可以根據(jù)Last_IO_Error提示予以排除。

網(wǎng)絡(luò)不通——檢查ip,端口密碼不對(duì)——檢查是否創(chuàng)建用于同步的用戶和用戶密碼是否正確pos不對(duì)——檢查Master的 Position

注意: 如果在排錯(cuò)中出現(xiàn)Error錯(cuò)誤是UUIDs錯(cuò)誤,則表示主從UUIDs是相同的,最大可能性就是文件是復(fù)制的,所以產(chǎn)生的UUIDs是相同的。 解決:先退出mysql,再編輯:vim /var/lib/mysql/auto.cnf,修改里面的編碼即可。

1.7.1.7. 測(cè)試主從復(fù)制

測(cè)試主從復(fù)制方式就十分多了,最簡(jiǎn)單的是在Master創(chuàng)建一個(gè)數(shù)據(jù)庫,然后檢查Slave是否存在此數(shù)據(jù)庫。 (1)在Master主庫中創(chuàng)建db_abc庫: (2)在Slave從庫中查看所有數(shù)據(jù)庫: 以上我們就實(shí)現(xiàn)了MySQL的主從備份功能,接下來我們開始安裝Mycat。

1.7.2. 準(zhǔn)備:在Master主庫和Slave從庫都需要完成

防火墻都開放3306端口;(或關(guān)閉防火墻) #將3306加入防火墻

firewall-cmd --zone=public --add-port=3306/tcp --permanent

#關(guān)閉防火墻

systemctl stop firewalld;

保證root用戶可以被Mycat訪問(給權(quán)限);在Mycat中通過Master主庫的root用戶訪問Master主庫。

Grant all privileges on *.* to ‘root’@’%’ identified by ‘root’ with grant option;

Flush privileges;

下一篇:Mycat安裝與啟動(dòng)

柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫中間件Mycat介紹詳解

http://yzkb.51969.com/

相關(guān)閱讀

評(píng)論可見,查看隱藏內(nèi)容
大家都在看:

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18845905.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄