有用教程收藏

一java

1.1 spring security
http://silentwu.iteye.com/blog/2214324 《Spring security 访问权限控制 》


1.2 spring boot
              1 使用springboot控制spring security 实现权限访问
http://blog.csdn.net/u012702547/article/details/54319508 《在Spring Boot中使用Spring Security实现权限控制 》

二 mysql
       2.1 优化方面
http://www.techweb.com.cn/network/system/2017-06-24/2545498.shtml 《Linux上MYSQL优化的三板斧》

CPU方面:

关闭电源保护模式

内存:

vm.swappiness = 0

关闭numa

文件系统:

用noatime,nobarrier挂载系统

IO调度策略修改为deadline。

http://blog.csdn.net/john_chang11/article/details/52400080 csdn mysql诊断问题列表


2.2 基础

1 http://blog.itpub.net/28602568/viewspace-1797619/ socket 文件作用
socket仅用于在本机使用localhost登陆系统时,使用socket方式登陆。
mysql登陆方式有两种,一种是tcpip,一种是socket方式

2 http://www.cnblogs.com/cchust/p/3914935.html mysql自增列导致主键重复问题分析
 【MySQL】replace into 浅析之一

3 mysql远程导入导出方法
 远程导出数据到本地的用法
C:\Program Files\MySQL\MySQL Server 5.7\bin>mysqldump -uroot -p dwsurvey policy_
       keywords_rel -h 127.0.0.1 > d:dochu.sql
       Enter password: ******
把本地数据导出到远程数据库
C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql -uroot -p -h127.0.0.1 diaowen<
       d:dochu.sql
       Enter password: ******
可参考网址
http://www.cnblogs.com/chenmh/p/5300370.html MySQL mysqldump数据导出详解
http://blog.itpub.net/15480802/viewspace-700454/ mysqldump导入导出表数据

4 死锁实验
MySQL死锁的两个小案例 http://blog.itpub.net/23718752/viewspace-2144727/

5 官网
https://dev.mysql.com/doc/refman/5.7/en/mysql-innodb-cluster-introduction.html

6 安装
http://blog.csdn.net/superchanon/article/details/8546254 Linux安装MySQL的两种方法
 可以搞明白 mysql安装分两种方式 源码安装和二进制安装
 源码安装 对应官网网页里的选择方式 是选择通用安装且source类型
 二进制安装 1 tar.gz形式安装 对应通用linux类型
           2 包安装 对应具体linux类型 不是通用generic

    
  2.3 架构
2.3.1 MHA
       MHA终极详解 http://blog.itpub.net/15480802/viewspace-1402945/

2.3.2 主从
Mysql GTID 模式详解 http://blog.csdn.net/wmq880204/article/details/53160078
快速搭建主从的脚本和问题排查 http://blog.itpub.net/23718752/viewspace-2144422/ 自动脚本搭建主从

2.3.3 MySQL Group Replication
     1 MySQL Group Replication 介绍 http://blog.csdn.net/d6619309/article/details/53691352
个人的小项目mysql_mgr_test开放了 http://blog.itpub.net/23718752/viewspace-2144349/

2.4 分库分表
Mycat分库分表的简单实践 http://blog.itpub.net/23718752/viewspace-2144552/

2.5 监控
1 一个慢查询报警的简单处理 http://blog.itpub.net/23718752/viewspace-1990312/
     log_queries_not_using_indexes = ON 这个参数开着的话说明没有使用索引的sql即便是没有性能
 问题的sql也记录到慢查询日志里

2.6 自动扩容问题
《MySQL数据库TDSQL架构分析及采用策略扩容流程》 http://blog.csdn.net/linuxheik/article/details/52819460
有2种比较成熟的扩容策略
策略1先切后搬:先修改路由,将需要迁走的数据的请求直接发送到新set,在新set交易过程中如发现本地的数据不存在,则去原set拉取数据,
然后再通过一些离线的策略将要迁移的数据全量再搬迁一次,HOID平台就是采用这样的策略。

策略2先搬后切:让请求继续在原set交易,扩容程序首先记录一个binlog位置点,并将源set中符合迁移条件的数据全部迁移出去,
最后再将搬迁过程中新增的binlog追完,最后修改路由规则,将请求发送到新set。
策略2会有更大的通用性,具体方式
用mysqldump导出镜像的时候会有一个binlog位置,从mysqldump记录的binlog位置开始读取binlog并插入到到Set4,
追到所有binlog文件末尾的时候(这需要一个循环,每次循环记录从开始追binlog截止到追到文件结尾消耗的时间,
必须保证追单次循环要在几秒之内完成,避免遗留的binlog太多导致最后一次追binlog消耗太多的时间,从而影响业务过久),
对原来的表t_shard_1重命名t_shard_5,此时针对这个表不会再有新请求,若还有请求过来都会失败,然后再追一次binlog到文件结尾
(因为上面的循环保证了追binlog不会太耗时间了,所以此次会快速完成),然后上报状态到ZooKeeper,表明扩容任务完成。
Scheduler收到扩容完成的信息之后会修改路由表,最后由网关拉取到新路由完成整体的扩容;从表重命名开始到网关拉取到新路由,
这段时间这个原始shard不可用,从我们测试结果来看这个不可用的时间是200毫秒左右
 
三 ORACLE
http://blog.itpub.net/500314/viewspace-1063654/ Oracle 11g 新特性简介

3.2 dataguard
http://blog.csdn.net/u013169075/article/details/73555522 Oracle 11g DG概念与进程详解
 自动裂缝检测和解决
 缺失的这些日志就是裂缝(Gap)。Data Guard能够自动检测,这需要配置FAL_CLIENT,FAL_SERVER 这两个参数(FAL: Fetch Archive Log)。
 从FAL 这个名字可以看出,这个过程是Standby Database主动发起的“取”日志的过程,Standby Database 就是FAL_CLIENT.
它是从FAL_SERVER中取这些Gap, 10g中,这个FAL_SERVER可以是Primary Database, 也可以是其他的Standby Database。
 如:FAL_SERVER='PR1,ST1,ST2';
          FAL_CLIENT和FAL_SERVER两个参数都是Oracle Net Name。FAL_CLIENT 通过网络向FAL_SERVER发送请求,
FAL_SERVER通过网络向FAL_CLIENT发送缺失的日志。 但是这两个连接不一定是一个连接。 因此FAL_CLIENT向FAL_SERVER发送请求时,
 会携带FAL_CLIENT参数值,用来告诉FAL_SERVER应该向哪里发送缺少的日志。 这个参数值也是一个Oracle Net Name,
 这个Name是在FAL_SERVER上定义的,用来指向FAL_CLIENT.
         3.2.1 dg broker
http://ylw6006.blog.51cto.com/470441/686900/ Data Guard Broker配置与主备库切换指南

3.3 基础
http://www.cnblogs.com/jyzhao/p/5001782.html#3 Oracle 11g静默安装简明版

3.4 诊断
1 http://blog.itpub.net/23718752/viewspace-1062999/ oracle坏块修复实例
 修复坏块从日志中看问题 alert.log
根据日期提示到trace里找详细报错信息。可以看到具体哪个文件,哪个块错,同时有报错的sql
可以根据执行的sql找出坏块所属类型,是表还是索引
 然后用DBMS_REPAIR.FIX_CORRUPT_BLOCKS 先修复块,修复块不一定能修复
 所以还要调用 DBMS_REPAIR.SKIP_CORRUPT_BLOCKS  略过块
2 http://www.sohu.com/a/204390219_505827 基于裸数据的异地数据库性能诊断与优化
 给出了sql的实例,思路方法都很好

3.5 RAC
 Oracle RAC如何避免脑裂 http://blog.51cto.com/leesbing/1773320 应对照MHA看如何解决脑裂
1 如果节点间通讯断了,那么这时每个节点上有CSSD进程,根据断开的子集群数量最多的原则,所有节点CSSD进程向中裁判写驱逐信息比如
 节点1,2,写驱逐状态3到中裁判,节点3读取中裁判中驱逐信息发现是自己,于是该节点上CSSD进程启动IO fencing程序隔离自己
2 如果某个节点到仲裁盘的心跳没了,比如节点1,2能访问3个仲裁盘,节点3只能访问2个,那么节点1,2上的主节点如节点1上的cssd进程
 会发指令给节点3,让节点3自杀
 实现IO fencing的方法和进程参考 《了解Oracle RAC Brain Split Resolution集群脑裂协议》 http://cache.baiducontent.com/c?m=9d78d513d98312fe4fece4697c1cc0111c43f0102ba6a7027ea48438e5732c41501694ac53260705a3d20d6116d94f4beb802103341456b48f8fc814d2e1d46e6d9f26476d01d7094d8c42fc965125b67bd60da2f80ee7cda16fccb3828d82014ec954007f87f188&p=9060c64ad4985dff57ee94745c0cc1&newp=882a9645dcdd12a05aa68a215a0d8e231610db2151d7d0166b82c825d7331b001c3bbfb423241b07d7c4786207ac4259e0f63176350727a3dda5c91d9fb4c5747996&user=baidu&fm=sc&query=rac%C8%E7%BA%CE%BD%E2%BE%F6%C4%D4%C1%D1&qid=91fff53f000459af&p1=6

五 zabbix

http://www.cnblogs.com/nmap/p/6539221.html Zabbix-2.4-安装-1

http://blog.csdn.net/mchdba/article/details/51447750 zabbix3.0.2 使用percona mysql插件来监控mysql5.7的详细实现过程

http://blog.itpub.net/23718752/viewspace-2124165/ 简单分析percona-zabbix-templates jeanron100

六 linux 基础
6.1 EPEL 是什么和安装
http://cgs1999.iteye.com/blog/2043008 《在CentOS上安装第三方软件库EPEL 》   
               Extra Packages for Enterprise Linux (EPEL)【企业版 Linux 附加软件包(以下简称 EPEL)】是一个由特别兴趣小组创建、维护并管理的,
 针对 红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS、 Scientific Linux)的一个高质量附加软件包项目。
EPEL 包含一个叫做epel-release的包,这个包包含了EPEL源的gpg密钥和软件源信息。您可以通过yum安装到您的企业版Linux发行版上。
 除了epel-release源,还有一个叫做epel-testing的源,这个源包含最新的测试软件包,其版本很新但是安装有风险,请自行斟酌。
 如果你使用的是RHEL6.x,CentOS6.x,Scientific6.x等6.x的RHEL系linux的话,执行:
[root@test ~]# rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
其实上面安装的那个包就是在你系统/etc/yum.repos.d/下释放了2个yum源的repo文件而已:
/etc/yum.repos.d/epel.repo          正式版,所有的软件都是稳定可以信赖的
/etc/yum.repos.d/epel-testing.repo  测试版

6.2 yum源配置详解
http://www.ming4.com/news/2792.html 《刨根问底:什么是yum源,yum的工作原理又是什么》
vim /etc/yum.repos.d/ yum源配置文件
[rhel-source-beta]     //yum源的名称,起到标记yum源的作用,
name=Red Hat Enterprise Linux $releasever Beta - $basearch - Source  //仅仅是对yum的描述,作用是使用户可以更容易的读懂该文件。
baseurl=ftp://ftp.redhat.com/pub/redhat/linux/beta/$releasever/en/os/SRPMS/  //我们指定的查找依赖关系软件的路径,(该路径可以是一个网址路径,也可以是本机上的一个路径。)
enabled=0       //enabled 是使能够的意思,0表示baseurl定义的路径是不可用的,1表示定义的路径是可用的。
gpgcheck=1  //gpgcheck表示是否进行gpg检测,0表示不进行,1表示进行。gpg检查就是在使用yum安装软件是对软件输入公钥进行验证,看是否来源安全。
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release    //进行gpg检查时,使用file协议导入公钥,后面接的路径就是系统自带的公钥存放路径。

ftp://   表示使用的是ftp协议连接路径,该协议一般用于非本地连接,本地yum使用的协议是:"file://"文件协议
 清除缓存,使最新的yum配置生效
[root@linux-6 ~]# yum clean all
              [root@linux-6 ~]# yum list
    
  6.3 创建yum本地库
http://bosszhang.blog.51cto.com/2580498/1678304 yum之如何手动创建本地yum仓库
http://www.cnblogs.com/f-ck-need-u/p/7048359.html Linux回炉复习系列文章总目录

6.4 oracle相关linux参数配置
sysctl.conf学习和调优 《http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73b67848c5425938448e435061e5a24feb074284705d9c42c6051a94248afad762438426bf6ca8ed65ddccb8528589f26442141da1505d368b8ba3232b653872a9fb86ee7&p=aa769a4780d508ff57ee94785740a5&newp=c07fc64ad4d552e90fbd9b7d0d1083231610db2151d3d601298ffe0cc4241a1a1a3aecbf21291203d6c5786201a9495ee0f23276300634f1f689df08d2ecce7e399b6163&user=baidu&fm=sc&query=sysctl%2Econf+%CF%EA%BD%E2&qid=ea560de00000c20c&p1=3
  /etc/security/limits.conf和/etc/sysctl.conf,limits.conf 和sysctl.conf区别在于limits.conf是针对用户,
  而sysctl.conf是针对整个系统参数配置。
  semopm  是一个系统调用时的操作数量
    1 比如发生大量排队等待情况如enqueue lock,比如有500个进程等待一个锁,semopm小了,
          就需要分2次调用semops调用,来通知等待的进程,锁可以使用了
    2 lgwr写完日志后,要通知应用进程日志已写入磁盘,如果很多进程发起提交时,lgwr进程写完磁盘数据后要通知这些发提交的进程
    如果semopm = 250 那么,写完磁盘数据后一次通知250个进程,如果进程数太多,会多次调用semops影响系统性能
  semmni  设置为100。这个参数决定了操作系统启动时初始化信号量的个数设置为100。
  shmmax  设置最大的内存段 如 SHMMAX > SGASIZE : 分配一个单独的共享内存段给sga(首选方式)
           如该值设置太小或者小于最大sga的大小,则sga无法在一个单独的共享内存段hold住整个sga,而需要分配多个不同的共享内存段来完成
  shmall  一次能够使用的最大的共享页面数
    如对于超出8GB系统内存,如共享内存段(shmmax)的最大大小是16G,则所需要共享内存页数(shmall)为:
          16GB/4KB=16777216KB/4KB=4194304(页)
   file-max 最多打开的文件数
  ip_local_port 本地端口范围
  rmem_default  socket发送数据时默认使用的缓冲区大小
  rmem_max      socket发送数据时最大使用的缓冲区大小
  wmem_default  socket接收数据时默认使用的缓冲区大小
  wmem_max      socket接收数据时最大使用的缓冲区大小
  aio-max-nr    最大允许的aio请求数

参数说明参考 ORACLE安装时linux内核参数  http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380147d8c8c4668d4e419ce3b4c413037bfa6663f405a8e906b6075ab180bbda637723d0123b5989dd41c88ac925f75ce786a6459db0144dc44ef98177b9637902bfedf1bf0caf025e5abc5a3dd4353bb125225ddb2d4&p=8b2a97058bb111a05bed9e2a504c94&newp=882a9645dcdb33f101a5c7710f0ec4231610db2151d4da01298ffe0cc4241a1a1a3aecbf2129100ed2c477600aa54a59eaf63c77330834f1f689df08d2ecce7e37fa796d38&user=baidu&fm=sc&query=ORACLE+%B0%B2%D7%B0+semopm&qid=c4f2614e00004a13&p1=1
  
七 数据迁移
MySQL表与数据向Oracle移植(使用Oracle SQL Developer工具) http://blog.csdn.net/u012814041/article/details/17530141

八 SQL优化
8.1 视图合并优化
 子查询经过优化器优化后,可能和外面查询合并,但在合并后产生的执行计划可能有问题,如子查询的表和外面的表形成笛卡尔积的连接具体例子
http://dbaplus.cn/news-21-1283-1.html 基于经典案例,谈SQL改写优化的技巧与误区
https://ask.hellobi.com/blog/azzo/3155 【SQL优化案例】关于内联视图合并
 禁止视图合并的方法。一个查询块中使用了如聚集合运算、rownum等这种需要整体计算的函数的时候,CBO就无法进行视图合并,
 因为如果进行合并改写则可能会引起结果不正确。
SELECT COUNT(Z.REMOTE_URL)
               FROM ZQGS Z,
                    (SELECT H.H1H2H3
                       FROM H1H2H3 H, HDB D, CCOD_PROV_INFO P, CC_CITY_INFO C
                      WHERE H.AREA_CODE = C.CITY_ID
                        AND C.PROV_ID = P.PROV_ID
                        AND P.PROV_ID = 1
                        AND H.H1H2H3 LIKE D.HD || '%'
                        AND D.ID = '1') M
              WHERE (Z.END_TYPE = 255 OR Z.END_TYPE = 254)
                AND Z.REMOTE_URL LIKE 'TEL:' || M.H1H2H3 || '%';
优化器做视图合并时,CCOD_PROV_INFO和HDB的先笛卡尔积后的结果集会和ZQGS关联形成笛卡尔积。,和ZQGS笛卡尔积,是因为关联条件太复杂,
Z LIKE M ,M 还是拼接的条件,所以优化器认为内连试图里有笛卡尔积,正好和外面查询笛卡尔积一起执行就先执行试图合并了
 优化方法是在子查询字段后加 rownum。还可以加hint /*+ NO_MERGE */
             8.2 找驱动表,判断NESTLOOP是否正确,且能引发GC等待
 先观察表结构
 多表关联,查询条件里有子查询。相当于两个结果集连接。且后一个结果集(子查询里有rownum<10条件)
观察执行计划 发现有俩子优化(child number),执行计划一样,表现出的情况是两个结果集连接时,在情况1时,
 相当于两个数量差不多的结果集连接,前面结果集小,子查询的结果集数量差不多。
 情况2时,前面结果集数量大,子查询的结果集数量小
 这两种情况连接时都用了Hash JOIN,且驱动表都是前面结果集。说明前面结果集的过滤条件字段上的数据分布不均匀。
 且驱动表不应该是前面的驱动表,因为,根据查询条件不同,前面驱动表的范围会变化,所以应该用子查询结果集做驱动表。
 解决方法就是用hint /*+ cardinality(表名 1)*/ 让后面的子查询结果集返回基数最小,以便做驱动表
 
8.2 解决面试题 两个字段上有联合索引时,谓词里只选b列时什么时候走跳跃索引
 【SQL 提示 之二】index_ss Index Skip Hint
http://blog.itpub.net/22664653/viewspace-676500/
两个字段组合成联合索引,idx1(a,b)
  a列上有四个不重复值时,自动走skip索引
a列上有6w个不重复值时,走全表扫描
 可见前导列上重复值越少,越会走skip index,原理是如果前导列重复值多,就根据前导列先找到所有相关索引块,再到索引块里找具体
 和前导列相关的b列上的值,但如果重复值很少,先找到前导列相关的块就很慢,没什么意义。

九面试
1 数据库笔试面试题库
http://www.itpub.net/thread-2085022-1-1.html [笔记] 数据库笔试面试题库(Oracle、MySQL、MS SQL Server等)


 十 自动化维护
1 管理多个oracle实例问题
 1)通过shell脚本同时监控多个数据库负载 http://blog.itpub.net/23718752/viewspace-1593351/
      脚本流程
  1 调用脚本showall.sh getload 这里参数是getload脚本名
  2 showall里编写
     定义连接服务器的变量DB_CONN_STR=XXX/XXX 和 SH_DB_SID=XXX
        用DB_CONN_STR连接到指定服务器,执行getload.sh查看服务器dbtime
     3 执行getload.sh 传入的参数就是 DB_CONN_STR@SH_DB_SID
        这里先定义要查询的时间范围
     执行 showsnap函数 查询出指定时间范围中,各小时的dbtime,且保存到本地服务器 按文件格式保存tmp_${SH_DB_SID}_${DATE}_load
        执行 format_rpt函数 增加输出脚本的格式,然后打印各个脚本的内容
  2)使用shell脚本检测数据库连接访问情况 http://blog.itpub.net/23718752/viewspace-2129434/
     3)假期前的数据库检查脚本之主备关系(r11笔记第46天) http://blog.itpub.net/23718752/viewspace-2132534/

 4)单个脚本监控主机上所有实例的表空间利用率 http://blog.itpub.net/15480802/viewspace-774718/
     5)脚本项目 dbm_lite  https://github.com/jeanron100/dbm_lite
                        http://blog.itpub.net/23718752/viewspace-2142814/
     6)通过shell脚本来得到不稳定的执行计划 http://blog.itpub.net/23718752/viewspace-1430606/
       求出每个计划执行时间的标准差,判断计划的差异性
 7)巧用shell脚本统计磁盘使用情况 http://blog.itpub.net/23718752/viewspace-1398417/
   8)使用shell自动化诊断性能问题(一)(r11笔记第41天) http://blog.itpub.net/23718752/viewspace-2132288/
   9)通过shell脚本抓取awr报告中的问题sql http://blog.itpub.net/23718752/viewspace-1813362/


数据仓库

1模型设计

2拉链算法

http://blog.csdn.net/badyflf/article/details/51097552  【ETL】拉链表算法

数据仓库拉链算法在ORACLE中的实现 http://blog.csdn.net/badyflf/article/details/51097552

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值