数据库备份策略

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 装置数据库从库

具体参见 博客文档.
https://blog.csdn.net/qq_1680...

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    /*查看报错信息 依据报错批改记录*//*从新搭建主从关系*/` *   1*   2*   3*   4*   5*   6*   7*   8*   9*   10*   11*   12*   13*   14*   15*   16*   17*   18*   19

3).主从状态的校验

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` *   1

挪动安装文件:

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>` *   1*   2*   3*   4*   5*   6*   7*   8*   9*   10*   11

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>` *   1*   2*   3*   4*   5*   6*   7*   8*   9*   10*   11*   12*   13*   14*   15*   16*   17*   18*   19*   20*   21*   22*   23*   24*   25*   26*   27*   28*   29*   30*   31*   32*   33*   34*   35*   36*   37*   38*   39*   40*   41*   42*   43*   44*   45*   46*   47*   48

2.5.4 实现配置文件上传

2.5.5 Mycat命令

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

2.5.6 查看mycat日志

2.5.7 Mycat负载平衡测试

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