December 20, 2016
gitlab修改时区
"刚装的系统,默认时间是UTC,比北京时间少了8个小时.\n修改 /var/opt/gitlab/gitlab-rails/etc/gitlab.yml 配置文件中的 time_zone : ‘Beijing’\n重启gitlab 即可\n#gitlab-ctl restart "
December 15, 2016
Linux系统排查
"常见工作中,计算机系统的资源主要包括CPU,内存,硬盘以及网络,过度使用这些资源将使系统陷入困境。本系列一共四篇博文,结合我在实习期间的学习,介绍一些常见的Linux系统排障工具及方法。\n第1篇—— 内存篇\n第2篇—— CPU篇\n第3篇—— 磁盘I/O篇\n第4篇—— 网络篇\n事实上,当上述服务器系统资源中的任何一个遭遇瓶颈,都会带来服务器性能的下降,典型的症状就是系统运行迟缓。\n本文从以下几个角度介绍Linux系统内存相关的排查。\n内存的使用率如何查看,使用率真的很高吗\n内存用在哪里了\n内存优化可以有哪些手段"
December 12, 2016
使用Gitlab一键安装包后的日常备份恢复与迁移
"Gitlab 创建备份 使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份:\ngitlab-rake gitlab:backup:create 使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1393513186_gitlab_backup.tar的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的1393513186是备份创建的日期.\nGitlab 修改备份文件默认目录 你也可以通过修改/etc/gitlab/gitlab.rb来修改默认存放备份文件的目录:\ngitlab_rails[\u0026#39;backup_path\u0026#39;] = \u0026#39;/mnt/backups\u0026#39; /mnt/backups修改为你想存放备份的目录即可, 修改完成之后使用gitlab-ctl reconfigure命令重载配置文件即可.\nGitlab 自动备份 也可以通过crontab使用备份命令实现自动备份:\nsudo su - crontab -e 加入以下, 实现每天凌 …"
December 6, 2016
[Err] 1055 – Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by的解决办法
"线上用的MySQL版本为5.7.11,线下用的5.6版本,发现将程序上线后,有些地方报这个错误\n[Err] 1055 – Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by\nONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,若select中的列没有在group by中出现,那么这句SQL是不合法的。\n解决办法下my.cnf中添加以下几行\n[mysqld] …"
December 3, 2016
Linux下安装MySQL多实例
"环境说明: Centos 6.6 64位 mysql 使用最新版本5.7.16版本\n这里安装两个MySQL实例,分别使用3306/3307端口号\n目录结构: /data/mysql/mysql3306 /data/mysql/mysql3306/data /data/mysql/mysql3307/log /data/mysql/mysql3306/tmp\n执行命令:\nmkdir -p /data/mysql/mysql3306/{data,tmp,log} mkdir -p /data/mysql/mysql3307/{data,tmp,log} 为了方便我们先配置mysql3306实例,配置成功后,再复制一份到3307即可。\ntar zxvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz cp -rf mysql-5.7.16-linux-glibc2.5-x86_64/* /data/mysql/mysql3306/ 权限修改\nchown -R mysql:mysql /data/mysql/mysql3306 配置my.cnf\ncd …"
November 30, 2016
Percona XtraBackup备份mysql数据库 技术手册
"https://www.percona.com/doc/percona-xtrabackup/2.4/index.html\n下载地址: https://www.percona.com/downloads/XtraBackup/LATEST/ 一、安装两个必需库\nsudo yum -y install libdv perl-DBD-MySQL 如果libev库在yum源找不到的话,需要在rpmfind.net网站下载自行安装。\nwget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/libev-4.15-1.el6.rf.x86_64.rpm rpm libev-4.15-1.el6.rf.x86_64.rpm 二、安装percona-xtrabackup\nwget …"
November 26, 2016
linux screen 命令详解
"一、背景\n系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。\n二、简介\nGNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。\nGNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。\n会话恢复 : 只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。 …"
November 25, 2016
MySQL高可用架构几种方案
"MySQL高可用架构之MHA http://www.cnblogs.com/gomysql/p/3675429.html\n基于PXC的MySQL高可用架构探索 http://www.infoq.com/cn/presentations/mysql-high-availability-architecture-exploration-based-on-pxc"
November 25, 2016
Laravel中的异常处理
"Eloquent try/catch on duplicate key Exception and delete?\nI’ve a form for a new vendor where the controller listens for its POST. From there on I’m creating a new endor and the equivalential login for this vendor.\nController :\n$vendor = Vendor::create( $request-\u0026gt;all() ); $login = Vendor::createLogin($vendor-\u0026gt;vendor_id); the createLogin function :\npublic static function createLogin($lid){ $name = self::find($lid)-\u0026gt;vendor_name; $name = explode(\u0026#39; \u0026#39;, $name); $vendor_login = [ …"
November 24, 2016
MySQL的InnoDB引擎强烈建议使用自增主键的原因
"1)InnoDB使用聚集索引,数据记录本身被存于主索引的叶子节点上,这就要求同一个叶子节点内的各条数据记录按主键顺序存放,因此每当一条新的记录插入时,MySQL会根据其主键将其插入适当的节点和位置,如果页面达到装载因子,则开辟一个新的页(节点)。\n如果表使用自增主键,那么每次插入新的记录时,记录就会顺序添加到当前索引节点后续位置,当一页写满,就会自动开辟一个新的页。这样就就会形成一个紧凑的索引结构,近似顺序填满,由于每次插入时也不需要移动所有数据,因此效率很高,也不会增加很多额外的开销维护索引。\n如果使用非自增主键,由于每次插入主键的值近乎于随机,因此每次新纪录都要被插到现有索引页的中间某个位置,此时MySQL不得不为了将新纪录插到合适位置而移动数据,甚至目标页面可能已经被写到磁盘而从缓存中清除,这增加了很多额外开销,同时频繁的移动,分页造成了大量的碎片,得到不够紧凑的索引结构,后续不得不通过OPTIMIZE TABLE来重建并优化填充页面。\n2)由于MySQL从磁盘读取数据时一块一块来读取的,同时,根据局部性原理,MySQL引擎会选择预读一部分和你当前读数据所在内存相邻的数据块,这个 …"