重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
數(shù)據(jù)庫常遇到的問題:
1.向上拓展 scale up( 個體本身 硬件的拓展) 缺點:容易達(dá)到極限
2.向外拓展 scale out(計算機的個數(shù),組合成集群)
摩爾定律:每18個月芯片的技術(shù)翻一倍,價格增長一倍,體積減少一倍
MySQL的主從實現(xiàn):
企業(yè)級數(shù)據(jù)庫高可用構(gòu)架圖:
mysql內(nèi)建的復(fù)制功能是構(gòu)建大型,高性能應(yīng)用程序的基礎(chǔ)。
成都創(chuàng)新互聯(lián)公司服務(wù)電話:13518219792,為您提供成都網(wǎng)站建設(shè)網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù),成都創(chuàng)新互聯(lián)公司網(wǎng)頁制作領(lǐng)域十載,包括成都服務(wù)器托管等多個方面擁有多年的網(wǎng)站維護經(jīng)驗,選擇成都創(chuàng)新互聯(lián)公司,為網(wǎng)站保駕護航。
mysql復(fù)制的特點:
*mysql復(fù)制工作如何進行:
mysql的主從復(fù)制是異步的
binlog二進制日志
dump:主mysql中的線程,它會把二進制日志
I/O線程:在主的mysql上拉二進制文件,記錄在relaylog中
SQL線程:從relaylog中拉出日志內(nèi)容,去往數(shù)據(jù)庫中寫
mysql的主從復(fù)制解決高可用的問題
實戰(zhàn)演練:
mysql的主從實現(xiàn)
主:
vim /etc/my.cnf
server-id=1 讓服務(wù)器有唯一的ID號
log_bin=mysql-bin 開啟二進制文件
skip-name-resolve 名字解析
hostname mysql-master 修改主機名
systemctl start mariadb
cd /var/lib/mysql ls 查看是否生成二進制日志
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 查看是否生成二進制日志
啟動復(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 查看是否成功
實現(xiàn)主從從構(gòu)架:
從節(jié)點需要開啟二進制日志,可以搭建主從從構(gòu)架,
mysql的復(fù)制過濾器:僅限有一個或幾個數(shù)據(jù)相關(guān)的數(shù)據(jù),而非所有,由復(fù)制過濾器進行
什么是自增長ID:
什么是主鍵:關(guān)系型數(shù)據(jù)中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能夠唯一標(biāo)識一條記錄,該屬性組就可以成為一個主鍵
主鍵的作用:1.可以保證數(shù)據(jù)的唯一,不會產(chǎn)生冗余的數(shù)據(jù) 2.可以加快數(shù)據(jù)的操作速度
外鍵:用來鏈表查詢
索引:它是某個表中一列或若干列值的集合和相應(yīng)的指向表中物理標(biāo)識這些值的數(shù)據(jù)頁的邏輯指針清單
索引的作用:是快速幫助查詢數(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ù)制進行的操作
主節(jié)點:
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.進行安裝包安裝 yum install mha4mysql..... 在ftp上 n裝ode 包也需要
4.初始化MHA,進行配置
mysql主從復(fù)制技術(shù)有哪些好處:提高性能,實現(xiàn)高可用
I/O線程和SQL線程
ysql讀寫分離,分庫分表和優(yōu)化介紹
select for update
中間件:mysql proxy實現(xiàn)mysql的代理,one proxy(mysql的代理)aliSQL proxySQL
動態(tài)請求:php-->server node1
靜態(tài)請求:css images js html-->server node2
分庫分表:
1.水平拆分
2.垂直拆分
mysql優(yōu)化:
1.可以用數(shù)據(jù)緩存 常見的memcached
2.數(shù)據(jù)庫生身有很多的緩存機制,可使用對應(yīng)的緩存策略
3.對數(shù)據(jù)來說,盡可能使用索引
4.對請求而言,可以實現(xiàn)讀寫分離,對讀請求進行負(fù)載均衡
5.對大數(shù)據(jù)庫,可根據(jù)業(yè)務(wù)邏輯進行分庫分表
6.所有的優(yōu)化,盡可能往內(nèi)存中存放
Tomcat和servlet
編程語言分類:
硬件級:微碼編程,匯編語言
系統(tǒng)級:C C++...... (C語言性能高)
應(yīng)用級:JAVA,PHP,Python,Ruby,Perl,C#,.......
面向?qū)ο螅簩ο缶褪菍κ挛锏囊环N抽象描述
面向過程:按照事情發(fā)展的順序一步一步的進行操作
JAVA使用的是面向?qū)ο蟮南到y(tǒng)設(shè)計方法,并且JAVA可以實現(xiàn)多層構(gòu)架對于跨平臺的大型企業(yè)應(yīng)用系統(tǒng)來講,JAVA幾乎已經(jīng)成為唯一的選擇
PHP:PHP適合于快速開發(fā),中小型應(yīng)用系統(tǒng),開發(fā)成本低,能夠?qū)ψ儎拥男枨笞鞒隹焖俚姆磻?yīng)
JAVA編譯器(字節(jié)碼)-》虛擬機(解釋器)-》解釋器(翻譯)-》機器碼
.java->.class->機器碼
JAVA運行原理:
編程語言編譯類型大致可以分為三種:
1.源代碼-編譯器-本機代碼-運行
2.源代碼-解釋器-本機代碼-運行
3.源代碼-中間語言-虛擬機(相當(dāng)于解釋器)-本機代碼-運行
可以發(fā)現(xiàn)最后都需要變成本機代碼才能執(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ì)是一個幫助程序
靜態(tài)網(wǎng)站技術(shù)和動態(tài)網(wǎng)站技術(shù):
servlet技術(shù)是什么:作為Java正營的CGI解決方案
servlet容器的作用:Servlet容器也叫做servlet引擎,是web服務(wù)器或應(yīng)用程序服務(wù)器的一部分,用于在發(fā)送的請求和響應(yīng)之上提供網(wǎng)絡(luò)服務(wù),解碼基于MIME的請求,格式化基于MIME的響應(yīng)
有了servlet之后用戶通過單擊某個鏈接或者直接在瀏覽器的地址中輸入URL來訪問servlet
servlet容器能提供什么:
1.通信支持:利用容器提供的方法,你能輕松的讓servlet與web服務(wù)器對話,而不用自己建立serversocket,監(jiān)聽端口
2.生命周期管理
3.多線程支持
4.JSP支持
Tomcat是Apache軟件基金會
Tomcat的核心分為三個部分:
1.web容器--處理靜態(tài)的頁面
2.catalina--一個servlet容器---處理servlet
3.還有有就是JSP容器,它就是把JSP頁面翻譯成為一個servlet
JSP和servlet的區(qū)別:JSP就是在HTML里面寫Java代碼,servlet就是在Java里面寫HTML代碼...其實JSP經(jīng)過容器解釋器之后就是servlet
JSEE-->sevlet--->CGI
java寫的sevlet程序
Java容器過來調(diào)用
JSP html-->java標(biāo)簽-->sevlet
tomcat和servlet的關(guān)系:tomcat實際上就是servlet用Java編寫的程序
JRE顧名思義是Java運行時的環(huán)境,包含了Java虛擬機,Java基礎(chǔ)類庫
JDK顧名思義是Java開發(fā)工具包,是程序使用Java語言編寫Java程序所開發(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 進行讀取
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 運行tomcat
netstat -tunlp
172.17....:8080 訪問測試
cd /conf server.xml 主配置配置文件
1.server:server表示整個的Catalina servlet容器。
2.service :service是存活在server內(nèi)部的中間組件
3.Connector組件:連接器處理與客戶端的通信
4.Engine組件:在tomcat中,每個service只能包含一個servlet引擎
5.Host組件:位于engine內(nèi)部用于接收請求并進行相應(yīng)處理的主機或虛擬主機類似Nginx server
6.Context組件:一個context表示了一個web應(yīng)用程序,運行在特定的虛擬主機中,一個host可以包含多個context(代表web應(yīng)用程序)
類似Nginx location
web.xml web應(yīng)用程序描述文件
context.xml 可以用來配置數(shù)據(jù)庫之類的信息
logging.properties日志系統(tǒng)相關(guān)的配置
tomcat頁面: manmger
admin
測試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:連接器用來接收用戶的請求
engine:引擎是用來處理用戶的請求
host:就是虛擬主機
context:相當(dāng)于location ,也就是相當(dāng)于路由,也可做匹配
servlet:就是程序
JSP webapp的組織結(jié)構(gòu):
/:webapps的根目錄;
index.jsp主頁; cd /manager
maven 項目管理工具 www.oschina.net java開源項目
mysql -uroot -p -D magedu < jeesns.sql 在magedu數(shù)據(jù)庫中導(dǎo)文件