您好,登錄后才能下訂單哦!
數(shù)據(jù)庫(kù)常遇到的問(wèn)題:
1.向上拓展 scale up( 個(gè)體本身 硬件的拓展) 缺點(diǎn):容易達(dá)到極限
2.向外拓展 scale out(計(jì)算機(jī)的個(gè)數(shù),組合成集群)
摩爾定律:每18個(gè)月芯片的技術(shù)翻一倍,價(jià)格增長(zhǎng)一倍,體積減少一倍
mysql的主從實(shí)現(xiàn):
企業(yè)級(jí)數(shù)據(jù)庫(kù)高可用構(gòu)架圖:
mysql內(nèi)建的復(fù)制功能是構(gòu)建大型,高性能應(yīng)用程序的基礎(chǔ)。
mysql復(fù)制的特點(diǎn):
*mysql復(fù)制工作如何進(jìn)行:
mysql的主從復(fù)制是異步的
binlog二進(jìn)制日志
dump:主mysql中的線程,它會(huì)把二進(jìn)制日志
I/O線程:在主的mysql上拉二進(jìn)制文件,記錄在relaylog中
SQL線程:從relaylog中拉出日志內(nèi)容,去往數(shù)據(jù)庫(kù)中寫
mysql的主從復(fù)制解決高可用的問(wèn)題
實(shí)戰(zhàn)演練:
mysql的主從實(shí)現(xiàn)
主:
vim /etc/my.cnf
server-id=1 讓服務(wù)器有唯一的ID號(hào)
log_bin=mysql-bin 開(kāi)啟二進(jìn)制文件
skip-name-resolve 名字解析
hostname mysql-master 修改主機(jī)名
systemctl start mariadb
cd /var/lib/mysql ls 查看是否生成二進(jìn)制日志
mysql -uroot -p
>GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO slave@'172.17./%.%' IDENTIFIED BY 'magedu';授權(quán)
// >flush tables with read lock 給表加鎖
// >unlocak tables 解鎖
>create database magedu;
>use magedu;
>create table m26(id int not null,name char(20));
>show create table m26 \G;
>insert into m26 values(1,'laowang');
> show binlog events;
> show master status;
從:
vim /etc/mysql
server-id=2
relay-log=mysql-relay-bin
read_only =1
log_bin =mysql-bin
log_slave_updates=1
systemctl start mariadb
cd /var/lib/mysql ls 查看是否生成二進(jìn)制日志
啟動(dòng)復(fù)制線程之前,指定服務(wù)器的配置
mysql -uroot -p
>CHANGE MASTER TO MASTER_HOST='172.17.0.159',
MASTER_USER='SLAVE',
MASTER_PASSWORD='magedu',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=811;
> start slave;
> show tabless;
>create tables m27(id int not null,name char(20)); 在從服務(wù)器上插表
>select * from m26;
show slave status\G 查看是否成功
實(shí)現(xiàn)主從從構(gòu)架:
從節(jié)點(diǎn)需要開(kāi)啟二進(jìn)制日志,可以搭建主從從構(gòu)架,
mysql的復(fù)制過(guò)濾器:僅限有一個(gè)或幾個(gè)數(shù)據(jù)相關(guān)的數(shù)據(jù),而非所有,由復(fù)制過(guò)濾器進(jìn)行
什么是自增長(zhǎng)ID:
什么是主鍵:關(guān)系型數(shù)據(jù)中的一條記錄中有若干個(gè)屬性,若其中某一個(gè)屬性組(注意是組)能夠唯一標(biāo)識(shí)一條記錄,該屬性組就可以成為一個(gè)主鍵
主鍵的作用:1.可以保證數(shù)據(jù)的唯一,不會(huì)產(chǎn)生冗余的數(shù)據(jù) 2.可以加快數(shù)據(jù)的操作速度
外鍵:用來(lái)鏈表查詢
索引:它是某個(gè)表中一列或若干列值的集合和相應(yīng)的指向表中物理標(biāo)識(shí)這些值的數(shù)據(jù)頁(yè)的邏輯指針清單
索引的作用:是快速幫助查詢數(shù)據(jù)
mysql互為主從:
1.vim /etc/my.cnf
server-id=1
skip-name-resolve
relay-log=mysql-relay-bin
log-bin=mysql-bin
log_slave_updates=1
auto_increment_increment=2
auto_increment_offset=1
# replicate_do_db=magedu
systemctl restart mariadb
mysql -uroot -p
>show databases
>show master status;
>CHANGE MASTER TO MASTER_HOST='172.17.0.170',
MASTER_USER='SLAVE',
MASTER_PASSWORD='magedu',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=245;
>start slave;
>show slave status;
>use magedu
>create table userinfo(id int PRIMARY KEY AUTO_INCREMENT, name varchar(50) NOT NULL);
>show tables;
>desc userinfo;查看表
>insert into userinfo(name)value('xiao'),('da'),('lao');
>select * from userinfo;
2.vim /etc/my.cnf
server-id=2
relay-log=mysql-relay-bin
log-bin=mysql-bin
log_:wqslave_updates=1
auto_increment_increment=2
auto_increment_offset=2
# replicate_do_db=magedu
systemctl restart mariadb
mysql -uroot -p
>show databases
>show slave status\G;
>CHANGE MASTER TO MASTER_HOST='172.17.0.159',
MASTER_USER='SLAVE',
MASTER_PASSWORD='magedu',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=245;
>start slave;
>show slave status;
>use magedu;
>show tables;
>insert into userinfo(name)value('ni'),('wo'),('ta');
>select * from userinfo;
半同步復(fù)制:基于互為主從復(fù)制進(jìn)行的操作
主節(jié)點(diǎn):
1. > INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
>SHOW GLOBA VARIABLES LIKE 'rpl_semi%';
>set global rpl_semi_sync_master_enabled =1;
>stop slave;
>start slave;
cd /var/lib/mysql
cd /var/log/mariadb
tail -200 mariadb.log 查看日志
2. >INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_slave.so';
>SHOW GLOBA VARIABLES LIKE 'rpl_semi%';
>set global rpl_semi_sync_master_enabled =1;
mysql高可用構(gòu)架之MHA:
1.安裝配置MHA
2.準(zhǔn)備基于SSH互信通信環(huán)境
3.進(jìn)行安裝包安裝 yum install mha4mysql..... 在ftp上 n裝ode 包也需要
4.初始化MHA,進(jìn)行配置
mysql主從復(fù)制技術(shù)有哪些好處:提高性能,實(shí)現(xiàn)高可用
I/O線程和SQL線程
ysql讀寫分離,分庫(kù)分表和優(yōu)化介紹
select for update
中間件:mysql proxy實(shí)現(xiàn)mysql的代理,one proxy(mysql的代理)aliSQL proxySQL
動(dòng)態(tài)請(qǐng)求:php-->server node1
靜態(tài)請(qǐng)求:css images js html-->server node2
分庫(kù)分表:
1.水平拆分
2.垂直拆分
mysql優(yōu)化:
1.可以用數(shù)據(jù)緩存 常見(jiàn)的memcached
2.數(shù)據(jù)庫(kù)生身有很多的緩存機(jī)制,可使用對(duì)應(yīng)的緩存策略
3.對(duì)數(shù)據(jù)來(lái)說(shuō),盡可能使用索引
4.對(duì)請(qǐng)求而言,可以實(shí)現(xiàn)讀寫分離,對(duì)讀請(qǐng)求進(jìn)行負(fù)載均衡
5.對(duì)大數(shù)據(jù)庫(kù),可根據(jù)業(yè)務(wù)邏輯進(jìn)行分庫(kù)分表
6.所有的優(yōu)化,盡可能往內(nèi)存中存放
Tomcat和servlet
編程語(yǔ)言分類:
硬件級(jí):微碼編程,匯編語(yǔ)言
系統(tǒng)級(jí):C C++...... (C語(yǔ)言性能高)
應(yīng)用級(jí):JAVA,PHP,Python,Ruby,Perl,C#,.......
面向?qū)ο螅簩?duì)象就是對(duì)事物的一種抽象描述
面向過(guò)程:按照事情發(fā)展的順序一步一步的進(jìn)行操作
JAVA使用的是面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)方法,并且JAVA可以實(shí)現(xiàn)多層構(gòu)架對(duì)于跨平臺(tái)的大型企業(yè)應(yīng)用系統(tǒng)來(lái)講,JAVA幾乎已經(jīng)成為唯一的選擇
PHP:PHP適合于快速開(kāi)發(fā),中小型應(yīng)用系統(tǒng),開(kāi)發(fā)成本低,能夠?qū)ψ儎?dòng)的需求作出快速的反應(yīng)
JAVA編譯器(字節(jié)碼)-》虛擬機(jī)(解釋器)-》解釋器(翻譯)-》機(jī)器碼
.java->.class->機(jī)器碼
JAVA運(yùn)行原理:
編程語(yǔ)言編譯類型大致可以分為三種:
1.源代碼-編譯器-本機(jī)代碼-運(yùn)行
2.源代碼-解釋器-本機(jī)代碼-運(yùn)行
3.源代碼-中間語(yǔ)言-虛擬機(jī)(相當(dāng)于解釋器)-本機(jī)代碼-運(yùn)行
可以發(fā)現(xiàn)最后都需要變成本機(jī)代碼才能執(zhí)行
JAVA三大分支:
1.J2SE--java standard edition 標(biāo)準(zhǔn)版本
2.J2ME--java Micro edition 一般 位于嵌入式應(yīng)用
3.J2EE--java Enterprise Edition 一般為服務(wù)器端程序的應(yīng)用
servlet完全依賴于服務(wù)器端
servlet的本質(zhì)是一個(gè)幫助程序
靜態(tài)網(wǎng)站技術(shù)和動(dòng)態(tài)網(wǎng)站技術(shù):
servlet技術(shù)是什么:作為Java正營(yíng)的CGI解決方案
servlet容器的作用:Servlet容器也叫做servlet引擎,是web服務(wù)器或應(yīng)用程序服務(wù)器的一部分,用于在發(fā)送的請(qǐng)求和響應(yīng)之上提供網(wǎng)絡(luò)服務(wù),解碼基于MIME的請(qǐng)求,格式化基于MIME的響應(yīng)
有了servlet之后用戶通過(guò)單擊某個(gè)鏈接或者直接在瀏覽器的地址中輸入U(xiǎn)RL來(lái)訪問(wèn)servlet
servlet容器能提供什么:
1.通信支持:利用容器提供的方法,你能輕松的讓servlet與web服務(wù)器對(duì)話,而不用自己建立serversocket,監(jiān)聽(tīng)端口
2.生命周期管理
3.多線程支持
4.JSP支持
Tomcat是Apache軟件基金會(huì)
Tomcat的核心分為三個(gè)部分:
1.web容器--處理靜態(tài)的頁(yè)面
2.catalina--一個(gè)servlet容器---處理servlet
3.還有有就是JSP容器,它就是把JSP頁(yè)面翻譯成為一個(gè)servlet
JSP和servlet的區(qū)別:JSP就是在HTML里面寫Java代碼,servlet就是在Java里面寫HTML代碼...其實(shí)JSP經(jīng)過(guò)容器解釋器之后就是servlet
JSEE-->sevlet--->CGI
java寫的sevlet程序
Java容器過(guò)來(lái)調(diào)用
JSP html-->java標(biāo)簽-->sevlet
tomcat和servlet的關(guān)系:tomcat實(shí)際上就是servlet用Java編寫的程序
JRE顧名思義是Java運(yùn)行時(shí)的環(huán)境,包含了Java虛擬機(jī),Java基礎(chǔ)類庫(kù)
JDK顧名思義是Java開(kāi)發(fā)工具包,是程序使用Java語(yǔ)言編寫Java程序所開(kāi)發(fā)的工具包,是提供給程序員使用的。
JDK:yum install jdk-8u144-linux
Java -version可以查看
tomcat安裝方式:
1.lftp 172.17.0.1
>cd pub
>cd sources
>ls
>cd 7.x86_64
>cd jdk
>ls
>get jdk-8u144-linux 下載
yum localinstall jdk......
默認(rèn)路徑
cd /usr/lib/jvm
cd /usr/java/jdk1.8.0_144/bin
cd .. java]
2.設(shè)置環(huán)境變量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
chmod +x /etc/profile.d/java.sh
. /etc/profile.d/java.sh 進(jìn)行讀取
echo $JAVA_HOME 查看 Jdk
Java -version再次可以查看,版本是否改變
3.lftp 172.17.0.1
cd pub
cd sources
cd 7.x86_64
cd tomcat
mget apache-tomcat-7.0.78.tar.gz solo-2.2.0.war(部署文件)
tar -xvf apache.....
cd apache-tomcat-7.0.78
ls 查看
cd ..
mv apache-tomcat-7.0.78 /usr/local/tomcat
cd /usr/local/tomcat
ls
cd bin
./catalina.sh start 運(yùn)行tomcat
netstat -tunlp
172.17....:8080 訪問(wèn)測(cè)試
cd /conf server.xml 主配置配置文件
1.server:server表示整個(gè)的Catalina servlet容器。
2.service :service是存活在server內(nèi)部的中間組件
3.Connector組件:連接器處理與客戶端的通信
4.Engine組件:在tomcat中,每個(gè)service只能包含一個(gè)servlet引擎
5.Host組件:位于engine內(nèi)部用于接收請(qǐng)求并進(jìn)行相應(yīng)處理的主機(jī)或虛擬主機(jī)類似Nginx server
6.Context組件:一個(gè)context表示了一個(gè)web應(yīng)用程序,運(yùn)行在特定的虛擬主機(jī)中,一個(gè)host可以包含多個(gè)context(代表web應(yīng)用程序)
類似Nginx location
web.xml web應(yīng)用程序描述文件
context.xml 可以用來(lái)配置數(shù)據(jù)庫(kù)之類的信息
logging.properties日志系統(tǒng)相關(guān)的配置
tomcat頁(yè)面: manmger
admin
測(cè)試jsp腳本
cd webapps
mkdir test
cd test
vim index.jsp
tomcat相關(guān)配置:
cd /usr/local/tomcat
cd conf
vim tomcat-users.xml
< role rolename="manager-gui"
< role rolename="admin-gui"
< user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
./bin/catalina.sh stop
./bin/catalina.sh start
Tomcat的部署:
將ftp上的solo包部署到Tomcat上
cp sols-2.2.0.war /usr/local/tomcat/webapps
cd webapps
mv solo-2.2.0.war /tmp
cd webapps
mv /tmp/solo-2.2.0.war ./
cd logs日志存放路徑
tomcat組成原理:
service:就是連接器與引擎組合在一起
connector:連接器用來(lái)接收用戶的請(qǐng)求
engine:引擎是用來(lái)處理用戶的請(qǐng)求
host:就是虛擬主機(jī)
context:相當(dāng)于location ,也就是相當(dāng)于路由,也可做匹配
servlet:就是程序
JSP webapp的組織結(jié)構(gòu):
/:webapps的根目錄;
index.jsp主頁(yè); cd /manager
maven 項(xiàng)目管理工具 www.oschina.net java開(kāi)源項(xiàng)目
mysql -uroot -p -D magedu < jeesns.sql 在magedu數(shù)據(jù)庫(kù)中導(dǎo)文件
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。