乐趣区

关于java:京淘项目day11

1. 代码还原

1.1 IP 地址问题

问题形容:windows 的 IP 链接不同 Linux 中的 IP 地址

问题阐明: 当虚拟机在启动时, 虚构网卡没有失常工作导致的, 只须要重启网卡即可.

问题阐明: 当虚构起启动时, 虚构网卡没有失常的工作导致的. 只须要重启网卡即可.

重启网卡命令

service NetworkManager stop
chkconfig NetworkManager off    永恒敞开 Manager 网卡
service network restart         重启 network 网卡

1.2 还原 hosts 文件

1.3 还原图片门路

1.4 还原 nginx 配置

让域名拜访 8091 服务器.

2 数据库相干学习

2.1 数据库备份规定

2.1.1 数据库备份策略

2.1.1 数据库冷备份

阐明: 通过数据库工具,定期将数据库文件进行转储, 保证数据的安全性(个别 2 - 3 天)

毛病:
    1. 备份时因为突发状况, 可能导致备份失败, 须要重复备份.
    2. 因为冷备份是定期备份, 所以可能导致数据的失落.
    
外围:
    数据必须备份, 备份的数据时复原的最初无效的伎俩
    

2.1.2 数据库热备份

阐明: 能够通过数据库机制, 主动的实现数据的备份操作.
长处: 能够实现自动化的操作, 并且是实时备份

备份实现原理:
    1. 当数据主机发生变化时, 会将批改的数据写入二进制日志文件中.
    2. 从库通过 IO 线程, 读取主库的二进制日志文件, 获取之后, 将数据保留到中继 (长期存储) 日志中.
    3. 从库中开启 Sql 线程. 之后读取中继日志中的数据, 之后将数据同步到从库中

2.2 筹备多台服务器

2.2.1 批改虚拟机名称

阐明: 复制课前材料中的虚拟机, 并且改名为 JT_LINUX_S. 之后启动即可.

2.2.2 批改 Linux 从机的 mac 地址

为了保障 2 台虚拟机失常稳固的运行, 须要批改 mac 地址.

2.2.3 装置数据库

具体参见博客文档

2.3 数据库主从搭建

2.3.1 开启主库二进制文件

阐明: 主库的二进制日志文件, 默认条件小
命令:vim /etc/my.cnf
编辑二进制文件:

重启数据库, 查看二进制日志文件是否可用

重启之后, 生成二进制文件

2.3.2 开启从库二进制配置文件

批改文件: vim /etc/my.cnf
增加的操作和主库统一, 之后重启数据库服务器, 成果如下:

2.3.3 数据库主从搭建

1). 查看主库的状态

2). 实现数据库主从挂载

/* 我是 130 我是从库 */
/*1. 实现数据库主从挂载 host/port/user/password/ 二进制日志 /pos*/
CHANGE MASTER TO MASTER_HOST="192.168.126.129",
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=245;

/*2. 启动数据库主从服务 */
START SLAVE;

/*3. 查看数据库启动状态 */
SHOW SLAVE STATUS;

/*4. 如果呈现数据库问题  1. 敞开主从服务, 2. 查看报错状态  3. 从新搭建服务 */
STOP SLAVE    
/* 查看报错信息 依据报错批改记录 */
/* 从新搭建主从关系 */

3). 主从状态的校验

2.3.4 数据库主从测试

1. 注意事项:
    1. 批改主库的数据, 从库会跟着同步数据.
    2. 如果批改从库数据, 则主从的关系将会终止

2.4 数据库读写拆散 / 负载平衡实现

2.4.1 数据库优化策略

阐明: 通过代理数据库能够实现数据库的读写拆散, 数据库负载平衡操作, 进一步的晋升了整体架构的能力

2.4.2 Mycat

2.4.3 Mycat 个性

  • 反对 SQL92 规范
  • 反对 MySQL、Oracle、DB2、SQL Server、PostgreSQL 等 DB 的常见 SQL 语法
  • 恪守 Mysql 原生协定,跨语言,跨平台,跨数据库的通用中间件代理。
  • 基于心跳的主动故障切换,反对读写拆散,反对 MySQL 主从,以及 galera cluster 集群。
  • 反对 Galera for MySQL 集群,Percona Cluster 或者 MariaDB cluster
  • 基于 Nio 实现,无效治理线程,解决高并发问题。
  • 反对数据的多片主动路由与聚合,反对 sum,count,max 等罕用的聚合函数, 反对跨库分页。
  • 反对单库外部任意 join,反对跨库 2 表 join,甚至基于 caltlet 的多表 join。
  • 反对通过全局表,ER 关系的分片策略,实现了高效的多表 join 查问。
  • 反对多租户计划。
  • 反对分布式事务(弱 xa)。
  • 反对 XA 分布式事务(1.6.5)。
  • 反对全局序列号,解决分布式下的主键生成问题。
  • 分片规定丰盛,插件化开发,易于扩大。
  • 弱小的 web,命令行监控。
  • 反对前端作为 MySQL 通用代理,后端 JDBC 形式反对 Oracle、DB2、SQL Server、mongodb、巨杉。
  • 反对明码加密
  • 反对服务降级
  • 反对 IP 白名单
  • 反对 SQL 黑名单、sql 注入攻打拦挡
  • 反对 prepare 预编译指令(1.6)
  • 反对非堆内存 (Direct Memory) 聚合计算(1.6)
  • 反对 PostgreSQL 的 native 协定(1.6)
  • 反对 mysql 和 oracle 存储过程,out 参数、多后果集返回(1.6)
  • 反对 zookeeper 协调主从切换、zk 序列、配置 zk 化(1.6)
  • 反对库内分表(1.6)
  • 集群基于 ZooKeeper 治理,在线降级,扩容,智能优化,大数据处理(2.0 开发版)。

2.5 部署步骤

2.5.1 上传 myCat 服务器

上传门路: /usr/local/src

2.5.2 解压 Mycat

tar -xvf  Mycat-server-1.7.0-DEV-20170416134921-linux.tar.gz

挪动装置门路:

2.5.3 server.xml 配置文件阐明

注意事项: 默认条件下的端口号 8066 端口

<user name="root">
        <property name="password">root</property>
        <!-- 与 schema.xml 中的配置雷同 留神数据库的大小写 -->
        <property name="schemas">jtdb</property>
    </user>
    
    <user name="user">
        <property name="password">user</property>
        <property name="schemas">jtdb</property>
        <property name="readOnly">true</property>
    </user>

2.5.3 schema.xml 配置

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
    
    <!--name 属性是自定义的  dataNode 示意数据库的节点信息  jtdb 示意逻辑库 -->
    <schema name="jtdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="jtdb"/>

    <!-- 定义节点名称 / 节点主机 / 数据名称 -->
    <dataNode name="jtdb" dataHost="localhost1" database="jtdb" />
        <!-- 参数介绍 UTF-8 中文报错 -->
        <!--balance 0 示意所有的读操作都会发往 writeHost 主机 -->  
        <!-- 1 示意所有的读操作发往 readHost 和闲置的主节点中 -->
        <!--writeType=0 所有的写操作都发往第一个 writeHost 主机 -->    
        <!--writeType=1 所有的写操作随机发往 writeHost 中 -->
        <!--dbType 示意数据库类型 mysql/oracle-->
        <!--dbDriver="native"  固定参数 不变 -->
        <!--switchType=-1 示意不主动切换, 主机宕机后不会主动切换从节点 -->
        <!--switchType=1  示意会主动切换 (默认值) 如果第一个主节点宕机后,Mycat 会进行 3 次心跳检测, 如果 3 次都没有响应, 则会主动切换到第二个主节点 -->
        <!-- 并且会更新 /conf/dnindex.properties 文件的主节点信息 localhost1=0 示意第一个节点. 该文件不要随便批改否则会呈现大问题 -->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select 1</heartbeat>

        <!-- 配置第一台主机次要进行写库操作, 在默认的条件下 Mycat 次要操作第一台主机在第一台主机中曾经实现了读写拆散. 因为默认写操作会发往 137 的数据库. 读的操作默认发往 141. 如果从节点比较忙, 则主节点分担局部压力.
        -->
        <writeHost host="hostM1" url="192.168.126.129:3306" user="root" password="root">
            <!-- 读数据库 1 -->
            <readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
            <!-- 读数据库 2 -->
            <readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
            
        </writeHost>

            <!-- 定义第二台主机 因为数据库外部曾经实现了双机热备.-->
            <!--Mycat 实现高可用. 当第一个主机 137 宕机后.mycat 会主动收回心跳检测. 检测 3 次.-->
            <!-- 如果主机 137 没有给 Mycat 响应则判断主机死亡. 则回启东第二台主机持续为用户提供服务.-->
            <!-- 如果 137 主机复原之后则处于期待状态. 如果 141 宕机则 137 再次继续为用户提供服务.-->
            <!-- 前提: 实现双机热备.-->
        
        <!--<writeHost host="hostM2" url="192.168.126.130:3306" user="root" password="root">
            
            <readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
            
            <readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
        </writeHost>-->
        
    </dataHost>
</mycat:schema>

2.5.4 实现配置文件的上传

2.5.5 Mycat 命令

Usage: ./mycat {console | start | stop | restart | status | dump}

2.5.6 查看 mycat 日志

2.5.7 Mycat 负载平衡测试

批改从库中的数据库. 刷新列表页面. 查看是否有负载平衡的成果.
注意事项: 如果测试实现, 记得将数据批改 保障统一.

退出移动版