利用tcpdump抓取MySQL执行的SQL

http://ourmysql.com/archives/1358
编写脚本文件dumpsql.sh,内容如下:

#!/bin/bash
#this script used montor mysql network traffic.echo sql
tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e '
while(<>) { chomp; next if /^[^ ]+[ ]*$/;
    if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL)/i)
    {
        if (defined $q) { print "$q\n"; }
        $q=$_;
    } else {
        $_ =~ s/^[ \t]+//; $q.=" $_";
    }
}

运行并抓去sql的执行。

抓取后在当前目录出现out.log文件,执行strings out.log即可看到sql的运行情况

理解OAuth 2.0

客户端的授权模式

客户端必须得到用户的授权(authorization grant),才能获得令牌(access token)。OAuth 2.0定义了四种授权方式。

  • 授权码模式(authorization code)最完整、流程最严密的授权模式,如GitHub、微信等网站第三方登录方式
  • 简化模式(implicit)
  • 密码模式(resource owner password credentials)如目前手机APP中使用此模式
  • 客户端模式(client credentials)

http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

 

Vue.js学习资料

在学习vue前,建立先了解一下 webpack https://fakefish.github.io/react-webpack-cookbook/index.html

官方网站(中文版):http://cn.vuejs.org/
构建大型应用使用组件 Vue-router: https://github.com/vuejs/vue-router
网络通讯插件Vue-resource:https://github.com/vuejs/vue-resource
单元测试karma:http://karma-runner.github.io/0.12/index.html 

https://cn.vuejs.org/
https://cn.vuejs.org/v2/api/
https://router.vuejs.org/zh-cn/
https://vuex.vuejs.org
https://vue-loader.vuejs.org/zh-cn/
https://ssr.vuejs.org

https://github.com/jsfront/src/blob/master/vuejs.md

==============

Vue快速入门:https://segmentfault.com/a/1190000003968020
Vue.js基本语法的介绍:https://segmentfault.com/a/1190000004012600

 

mysql 数据表读锁机制详解

为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制。
一、概述
MySQL有三种锁的级别:页级、表级、行级。
MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。
MySQL这3种锁的特性可大致归纳如下:
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

从上述特点可见,很难笼统地说哪种锁更好,只能就具体应用的特点来说哪种锁更合适!仅从锁的角度来说:表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,如Web应用;而行级锁则更适合于有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用,如一些在线事务处理(OLTP)系统。
二、MyISAM表锁
MyISAM存储引擎只支持表锁,是现在用得最多的存储引擎。
1、查询表级锁争用情况
可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺: Continue reading

修改gitlab的项目部署url地址

<刚在centos7上部署了最新版本的gitlab 8.7.3,发现在创建的git项目地址为http://localhost/username/www.git ,外网无法访问,这时我们只需要修改一个配置文件即可。我安装的时候全部使用的默认配置,路径为 /var/opt/gitlab/gitlab-rails/etc/,配置文件为 gitlab.yml ,文件顶部配置如下:

host: localhost
port: 80
https: false

修改host值为你想使用的外网域名或服务器IP地址即可,保存退出。

gitlab-ctl restart

注意这里的命令是restart不是 reconfigure(根据配置文件/etc/gitlab/gitlab.rb 重新生成配置) ,否则还会恢复原来的配置。

用ps -ef | grep nginx命令看了下,发现运行的nginx的路径是/opt/gitlab/embedded/sbin/nginx,而配置文件路径是/var/opt/gitlab/nginx,怪不得我打开/etc/nginx/nginx.conf没看到gitlab相关的配置。
试着改了下/var/opt/gitlab/nginx/nginx.conf 和 /var/opt/gitlab/nginx/gitlab-http.conf,重启服务后,页面无法访问了,我先折腾一下。
但配置文件为/etc/gitlab/gitlab.rb来配置

===============

如何修改gitlab监听端口

1.修改gitlab监听端口,默认为使用80端口,有时服务器中已经有nginx/apache占用了这个端口,修改监听端口来避免此问题
修改 /etc/gitlab/gitlab.rb 文件,修改下行

# nginx['listen_port'] = nil

nginx['listen_port'] = 8089

保存,执行重新配置命令

sudo gitlab-ctl reconfigure

通过浏览器 http://ip:8089 即可访问。

2.如何让gitlab只监听本机内网ip

修改

# nginx['listen_addresses'] = ['*']

nginx['listen_addresses']= ['127.0.0.1']

如何备份与恢复gitlab

https://segmentfault.com/a/1190000002439923