• ADADADADAD

    Mysql主从复制及Tomcat的相关介绍[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:58:38

    作者:文/会员上传

    简介:

    数据库常遇到的问题:1.向上拓展 scale up( 个体本身 硬件的拓展)缺点:容易达到极限2.向外拓展 scale out(计算机的个数,组合成集群)摩尔定律:每18个月芯片的技术翻一倍,价格增长

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    数据库常遇到的问题:
    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.cnfserver-id=1让服务器有唯一的ID号log_bin=mysql-bin开启二进制文件skip-name-resolve 名字解析hostname mysql-master 修改主机名systemctl start mariadbcd /var/lib/mysqlls 查看是否生成二进制日志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/mysqlserver-id=2relay-log=mysql-relay-binread_only =1log_bin =mysql-binlog_slave_updates=1systemctl start mariadbcd /var/lib/mysqlls 查看是否生成二进制日志 启动复制线程之前,指定服务器的配置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.cnfserver-id=1skip-name-resolverelay-log=mysql-relay-binlog-bin=mysql-binlog_slave_updates=1auto_increment_increment=2auto_increment_offset=1 # replicate_do_db=magedusystemctl restart mariadbmysql -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.cnfserver-id=2relay-log=mysql-relay-binlog-bin=mysql-binlog_:wqslave_updates=1auto_increment_increment=2auto_increment_offset=2 # replicate_do_db=magedusystemctl restart mariadbmysql -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/mysqlcd /var/log/mariadbtail -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.1cd pubcd sourcescd 7.x86_64cd tomcatmget 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 /confserver.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 locationweb.xml web应用程序描述文件context.xml 可以用来配置数据库之类的信息logging.properties日志系统相关的配置

    tomcat页面: manmger

     admin

    测试jsp脚本
    cd webapps
    mkdir test
    cd test
    vimindex.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.netjava开源项目

    mysql -uroot -p -D magedu < jeesns.sql 在magedu数据库中导文件

    Mysql主从复制及Tomcat的相关介绍.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载