數據庫常遇到的問題:
1.向上拓展 scale up( 個體本身 硬件的拓展) 缺點:容易達到極限
2.向外拓展 scale out(計算機的個數,組合成集群)
摩爾定律:每18個月芯片的技術翻一倍,價格增長一倍,體積減少一倍
mysql的主從實現:
企業級數據庫高可用構架圖:
mysql內建的復制功能是構建大型,高性能應用程序的基礎。
mysql復制的特點:
*mysql復制工作如何進行:
mysql的主從復制是異步的
binlog二進制日志
dump:主mysql中的線程,它會把二進制日志
I/O線程:在主的mysql上拉二進制文件,記錄在relaylog中
SQL線程:從relaylog中拉出日志內容,去往數據庫中寫
mysql的主從復制解決高可用的問題
實戰演練:
mysql的主從實現
主:
vim /etc/my.cnf
server-id=1 讓服務器有唯一的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';授權
// >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 查看是否生成二進制日志
啟動復制線程之前,指定服務器的配置
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)); 在從服務器上插表
>select * from m26;
show slave status\G 查看是否成功
實現主從從構架:
從節點需要開啟二進制日志,可以搭建主從從構架,
mysql的復制過濾器:僅限有一個或幾個數據相關的數據,而非所有,由復制過濾器進行
什么是自增長ID:
什么是主鍵:關系型數據中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能夠唯一標識一條記錄,該屬性組就可以成為一個主鍵
主鍵的作用:1.可以保證數據的唯一,不會產生冗余的數據 2.可以加快數據的操作速度
外鍵:用來鏈表查詢
索引:它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單
索引的作用:是快速幫助查詢數據
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;
半同步復制:基于互為主從復制進行的操作
主節點:
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高可用構架之MHA:
1.安裝配置MHA
2.準備基于SSH互信通信環境
3.進行安裝包安裝 yum install mha4mysql..... 在ftp上 n裝ode 包也需要
4.初始化MHA,進行配置
mysql主從復制技術有哪些好處:提高性能,實現高可用
I/O線程和SQL線程
ysql讀寫分離,分庫分表和優化介紹
select for update
中間件:mysql proxy實現mysql的代理,one proxy(mysql的代理)aliSQL proxySQL
動態請求:php-->server node1
靜態請求:css images js html-->server node2
分庫分表:
1.水平拆分
2.垂直拆分
mysql優化:
1.可以用數據緩存 常見的memcached
2.數據庫生身有很多的緩存機制,可使用對應的緩存策略
3.對數據來說,盡可能使用索引
4.對請求而言,可以實現讀寫分離,對讀請求進行負載均衡
5.對大數據庫,可根據業務邏輯進行分庫分表
6.所有的優化,盡可能往內存中存放
Tomcat和servlet
編程語言分類:
硬件級:微碼編程,匯編語言
系統級:C C++...... (C語言性能高)
應用級:JAVA,PHP,Python,Ruby,Perl,C#,.......
面向對象:對象就是對事物的一種抽象描述
面向過程:按照事情發展的順序一步一步的進行操作
JAVA使用的是面向對象的系統設計方法,并且JAVA可以實現多層構架對于跨平臺的大型企業應用系統來講,JAVA幾乎已經成為唯一的選擇
PHP:PHP適合于快速開發,中小型應用系統,開發成本低,能夠對變動的需求作出快速的反應
JAVA編譯器(字節碼)-》虛擬機(解釋器)-》解釋器(翻譯)-》機器碼
.java->.class->機器碼
JAVA運行原理:
編程語言編譯類型大致可以分為三種:
1.源代碼-編譯器-本機代碼-運行
2.源代碼-解釋器-本機代碼-運行
3.源代碼-中間語言-虛擬機(相當于解釋器)-本機代碼-運行
可以發現最后都需要變成本機代碼才能執行
JAVA三大分支:
1.J2SE--java standard edition 標準版本
2.J2ME--java Micro edition 一般 位于嵌入式應用
3.J2EE--java Enterprise Edition 一般為服務器端程序的應用
servlet完全依賴于服務器端
servlet的本質是一個幫助程序
靜態網站技術和動態網站技術:
servlet技術是什么:作為Java正營的CGI解決方案
servlet容器的作用:Servlet容器也叫做servlet引擎,是web服務器或應用程序服務器的一部分,用于在發送的請求和響應之上提供網絡服務,解碼基于MIME的請求,格式化基于MIME的響應
有了servlet之后用戶通過單擊某個鏈接或者直接在瀏覽器的地址中輸入URL來訪問servlet
servlet容器能提供什么:
1.通信支持:利用容器提供的方法,你能輕松的讓servlet與web服務器對話,而不用自己建立serversocket,監聽端口
2.生命周期管理
3.多線程支持
4.JSP支持
Tomcat是Apache軟件基金會
Tomcat的核心分為三個部分:
1.web容器--處理靜態的頁面
2.catalina--一個servlet容器---處理servlet
3.還有有就是JSP容器,它就是把JSP頁面翻譯成為一個servlet
JSP和servlet的區別:JSP就是在HTML里面寫Java代碼,servlet就是在Java里面寫HTML代碼...其實JSP經過容器解釋器之后就是servlet
JSEE-->sevlet--->CGI
java寫的sevlet程序
Java容器過來調用
JSP html-->java標簽-->sevlet
tomcat和servlet的關系:tomcat實際上就是servlet用Java編寫的程序
JRE顧名思義是Java運行時的環境,包含了Java虛擬機,Java基礎類庫
JDK顧名思義是Java開發工具包,是程序使用Java語言編寫Java程序所開發的工具包,是提供給程序員使用的。
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......
默認路徑
cd /usr/lib/jvm
cd /usr/java/jdk1.8.0_144/bin
cd .. java]
2.設置環境變量
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內部的中間組件
3.Connector組件:連接器處理與客戶端的通信
4.Engine組件:在tomcat中,每個service只能包含一個servlet引擎
5.Host組件:位于engine內部用于接收請求并進行相應處理的主機或虛擬主機類似Nginx server
6.Context組件:一個context表示了一個web應用程序,運行在特定的虛擬主機中,一個host可以包含多個context(代表web應用程序)
類似Nginx location
web.xml web應用程序描述文件
context.xml 可以用來配置數據庫之類的信息
logging.properties日志系統相關的配置
tomcat頁面: manmger
admin
測試jsp腳本
cd webapps
mkdir test
cd test
vim index.jsp
tomcat相關配置:
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:相當于location ,也就是相當于路由,也可做匹配
servlet:就是程序
JSP webapp的組織結構:
/:webapps的根目錄;
index.jsp主頁; cd /manager
maven 項目管理工具 www.oschina.net java開源項目
mysql -uroot -p -D magedu < jeesns.sql 在magedu數據庫中導文件
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。