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引擎会选择预读一部分和你当前读数据所在内存相邻的数据块,这个 …"
November 23, 2016
[MySQL优化案例]系列 — slave延迟很大优化方法
"http://imysql.cn/2015/04/12/mysql-optimization-case-howto-resolve-slave-delay.shtml"
November 21, 2016
mysql中数据类型与占用空间大小的关系
"1、 如一个表有10个int类型的字段,那么每行数据大小为\n4(每个int类型占用4字节byte) * 10 = 40Bytes\n[][1]\n2、 如一个表有10个varchar(20)的字段,编码为utf8,那每行占用大小为\n3(每个汉字占用3字节) * 20 * 10 = 600Bytes\n如果是英文字符的话,则为\n1(1个字符占用1个字节) * 20 * 10 = 200Bytes\n[][2]\n则以上两种情况 ,每行的数据均\u0026lt;8K (1024byte * 8) ,符合以下规则( 1024byte = 1KB)\n[]"
November 21, 2016
mysql压力测试工具spcc-mysql
"http://imysql.cn/2014/10/10/tpcc-mysql-full-user-manual.shtml http://imysql.com/tag/压测"