JT-day11

微信扫一扫,分享到朋友圈

JT-day11

1、代码还原

1.1 IP地址问题

问题描述: windows的IP链接不通Linux中的IP地址

问题说明:当虚拟机启动时,虚拟网卡没有正常的工作导致的,只需要重启网卡即可

重启网卡命令:

service NetwordManager 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-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 安装数据库从库

1、重新下载数据库

yum install mariadb-server 安装mariadb数据库

systemctl start mariadb 启动数据库

2、关闭防火墙

firewall-cmd –state 查看防火墙状态

systemctl stop firewalld.service 关闭防火墙

3、设置权限

将host=“localhost” 改为 “%”

4、刷新权限

flush privileges

2.3 数据库主从搭建

2.3.1 开启主库二进制文件

说明:主库的二进制日志文件,默认条件下是关闭的,需要手动的开启

命令:vim /etc/my.cnf

编辑二进制日志文件:

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

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

systemctl restart mariadb

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

修改文件:vim /etc/my.cnf

添加的操作和主库一致,之后重启数据库服务器,效果如下

2.3.3 数据库主从搭建

1、检查主库的状态

/*我是129 我是主库*/
/*1、检查主库状态*/
SHOW MASTER STATUS;

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;            /*关闭主从服务*/
/*检查报错信息,根据报错修改记录*/
/*重新搭建主从关系*/

成功搭建

2.3.4 数据库主从测试

注意事项:

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.4 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.5 实现配置文件的上传

2.5.6 MyCat命令

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

2.5.7 检查mycat日志

2.5.8 Mycat负载均衡测试

修改从库中的数据库.刷新列表页面.检查是否有负载均衡的效果

注意事项: 如果测试完成,记得将数据修改 保证一致

微信扫一扫,分享到朋友圈

JT-day11

科学家首次通过射电望远镜探测到了褐矮星

上一篇

细数软件架构中的解耦

下一篇

你也可能喜欢

JT-day11

长按储存图像,分享给朋友