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