MySQL优化索引工具percona-toolkit简称pt安装使用

今天想安装个Percona Toolkit简称pt工具来优化mysql索引,系统环境centos6。
官方网址https://www.percona.com/downloads/percona-toolkit/LATEST/
找到percona-toolkit-3.2.1-1.el6.x86_64.rpm,复制下载地址
想直接安装,不行。
[root@hl-img-m ~]# yum -y install https://www.percona.com/downloads/percona-toolkit/3.2.1/binary/redhat/6/x86_64/percona-toolkit-3.2.1-1.el6.x86_64.rpm
Loaded plugins: security
Setting up Install Process
Cannot open: https://www.percona.com/downloads/percona-toolkit/3.2.1/binary/redhat/6/x86_64/percona-toolkit-3.2.1-1.el6.x86_64.rpm. Skipping.
Error: Nothing to do

直接下载下来安装
wget https://www.percona.com/downloads/percona-toolkit/3.2.1/binary/redhat/6/x86_64/percona-toolkit-3.2.1-1.el6.x86_64.rpm
提示缺少依赖包
[root@hl-img-m software]# rpm -ivh ./percona-toolkit-3.2.1-1.el6.x86_64.rpm
warning: ./percona-toolkit-3.2.1-1.el6.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 8507efa5: NOKEY
error: Failed dependencies:
perl(DBI) >= 1.13 is needed by percona-toolkit-3.2.1-1.el6.x86_64
perl(DBD::mysql) >= 1.0 is needed by percona-toolkit-3.2.1-1.el6.x86_64
perl(IO::Socket::SSL) is needed by percona-toolkit-3.2.1-1.el6.x86_64
perl(Term::ReadKey) is needed by percona-toolkit-3.2.1-1.el6.x86_64
安装依赖包方式:
yum install perl-DBI perl-DBD-MySQL perl-Digest-MD5 perl-IO-Socket-SSL perl-TermReadKey
自动安装依赖包:
yum install -y percona-toolkit-3.2.1-1.el6.x86_64.rpm
成功;
看看使用
[root@hl-img-m software]# pt-duplicate-key-checker –user=root -password=root –socket=/tmp/mysql.sock
忘记不是在测试数据库上了,将就看看。

发表在 服务器 | 标签为 | 留下评论

ElasticSearch后台CPU占用率超高

今天发现安装了ElasticSearch的服务器最近cpu占用率经常超过100%,实在受不了了。

如果安装了elasticsearch/plugins/marvel插件,查看是否因为索引文件过大导致的。

curl http://localhost:9200/_cat/indices?v

发现一个37G的超大数据索引,删除它。

curl -XDELETE http://localhost:9200/myindex*

这时候你在top查看cpu占用率,自然下降了。

发表在 服务器 | 标签为 | 留下评论

【原创】CentOS安装配置PHP5.3、5.6、7.3多版本共存

因为公司有不同的项目存在于php不同版本下开发,重新全部维护修改起来成本太高了,而服务器使用的是centos6的系统,docker版本只能是1.7.1,低版本docker太多功能限制了,连参数-ip指定都不能用。尝试安装成功后发现不够稳定,维护也不方便,又不是做整体微服务。但单单为php搞去升级centos7,所有环境需要重新配置过也太烦了,直接centos6安装多版本php其实也不麻烦,反而更简单好维护。

上官网查找下载各个php版本

https://www.php.net/releases/

https://www.php.net/distributions/php-5.3.29.tar.gz

https://www.php.net/distributions/php-5.6.40.tar.gz

https://www.php.net/distributions/php-7.3.21.tar.gz

首先安装php5.3,进入源文件目录

export PHP_AUTOCONF=/usr/local/autoconf-2.13/bin/autoconf
export PHP_AUTOHEADER=/usr/local/autoconf-2.13/bin/autoheader
tar zxvf php-5.3.29.tar.gz
cd php-5.3.29/
./configure –prefix=/usr/local/php53 –with-config-file-path=/usr/local/php53/etc –enable-fpm –with-fpm-user=www –with-fpm-group=www –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –with-iconv-dir –with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –disable-rpath –enable-magic-quotes –enable-safe-mode –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curl –enable-mbregex –enable-mbstring –with-mcrypt –enable-ftp –with-gd –enable-gd-native-ttf –with-openssl –with-mhash –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –disable-fileinfo

make ZEND_EXTRA_LIBS=’-liconv’
make install

这里不做详细安装出现问题,顺利话就会在/usr/local/php53安装好php5.3.29

这里举例php5.3.29,5.3因为没有自带缓存加速需要另外单独安装个ZendGuardLoader,其它版本不需要,其它同样照做就可以了。

ln -s /usr/local/php/bin/php /usr/bin/php
ln -s /usr/local/php/bin/phpize /usr/bin/phpize
ln -s /usr/local/php/sbin/php-fpm /usr/bin/php-fpm

复制php系统自带管理脚本文件,可以操作启动、停止等一些系列操作。
cp /php-5.3.29/sapi/fpm/init.d.php-fpm /etc/init.d/php53-fpm
chmod +x /etc/init.d/php53-fpm

同时要编辑php53-fpm文件里面对应的调用php文件,应该都不是按默认的安装,有php53 php56 php73路径问题

本地宿主建议使用sock方式启动性能更高效,只要sock文件名称不同即可,其它文件对应修改单独路径即可,如果使用ip方式也可以,只要修改不同端口,就看你喜欢用哪种。

[global]
pid = /usr/local/php53/var/run/php-fpm.pid
error_log = /data/logs/php/php53-fpm.log
log_level = notice

/usr/local/php53/etc/php-fpm.conf
[www]
;listen = 127.0.0.1:9000
listen = /tmp/php53-cgi.sock
user = www
group = www
listen.owner = www
listen.group = www

如果没设置www组,很有可能就会出现和我同样的502问题

cp php.ini-production /usr/local/php/etc/php.ini

如果扩展so路径不同,记得也在php.ini修改成对应的路径。

最后就是启动了[root@hl-qy ~]# /etc/init.d/php53-fpm restart


如上图成功,假如启动过程失败,可以查看对应日志文件,对应的处理即可。

发表在 服务器 | 标签为 | 留下评论

系统重启后MySQL同步GTID错误: 1594

Last_SQL_Errno: 1594
Last_SQL_Error: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master’s binary log is corrupted (you can check this by running ‘mysqlbinlog’ on the binary log), the slave’s relay log is corrupted (you can check this by running ‘mysqlbinlog’ on the relay log), a network problem, or a bug in the master’s or slave’s MySQL code. If you want to check the master’s binary log or slave’s relay log, you will be able to know their names by issuing ‘SHOW SLAVE STATUS’ on this slave.

这个还比较好处理,停止同步,重新设置下主从同步信息。

stop slave;
change master to master_host = ’10.x.x.x’,master_port = 3306,master_user = ‘xxx’,master_password=’xxx’,master_auto_position = 1;
start slave;

发表在 服务器 | 标签为 | 留下评论

修改Docker默认存储路径

环境centos6.10,version: 1.7.1
修改docker默认存储路径防止镜像太多太大,也方便管理。
[root@hl-qy ~]# docker info
Containers: 0
Images: 0
Storage Driver: devicemapper
Pool Name: docker-253:1-1033069-pool
Pool Blocksize: 65.54 kB
Backing Filesystem: extfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 305.7 MB
Data Space Total: 107.4 GB
Data Space Available: 24.51 GB
Metadata Space Used: 729.1 kB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.147 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.117-RHEL6 (2016-12-13)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 2.6.32-358.6.2.el6.x86_64
Operating System: <unknown>
CPUs: 1
Total Memory: 1.96 GiB
Name: hl-qy
ID: CMYG:IGVE:WZM3:U22U:5S56:JQH3:VZO2:CH3G:WHBZ:XXRY:UXDR:ZP5A
[root@hl-qy ~]# yum list installed | grep docker
docker-io.x86_64 1.7.1-2.el6 @epel
[root@hl-qy ~]# docker version
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d/1.7.1
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d/1.7.1
OS/Arch (server): linux/amd64

查到默认的信息后接下来修改

# mkdir /data

# /etc/init.d/docker stop

# cd /var/lib

# cp –rf docker /data

# rename ./docker/ ./docker_old ./docker/

# ln –s /data/docker  docker

# /etc/init.d/docker start

重启后再查询下

# docker info

Data loop file: /data/docker/devicemapper/devicemapper/data
Metadata loop file: /data/docker/devicemapper/devicemapper/metadata

恭喜已经修改成功

发表在 服务器 | 标签为 | 留下评论

【原创】Laravel查看版本号的方法

laravel使用Application对象直接输出version属性。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\User;
use Illuminate\Foundation\Application;

class TestController extends Controller
{
    public function index()
   {
      echo Application::VERSION;
      exit;
   }
}

文件在扩展文件夹:vendor/laravel/framework/src/Illuminate/Foundation/Application.php

发表在 服务器 | 标签为 | 留下评论

【原创】yii2官方imagine图片处理扩展支持水印、尺寸,略图,裁剪,旋转

最近写个yii2编辑器扩展用到了官方图片处理扩展,这里顺便说下。

首先安装:composer require –prefer-dist yiisoft/yii2-imagine

prefer-dist参数本地保存缓存,重新添加缓存读取。

扩展目录添加2个新目录

vendor/imagine
vendor/yiisoft/yii2-imagine

使用先引入:

use yii\imagine\Image;

$image=’@webroot/test-image.jpg’;

$quality=75;

//图片水印
Image::watermark($image, ‘@webroot/watermark.png’, [0, 0])->save($image, [‘quality’ => $quality]);

//文字水印
Image::text($image, ‘netpc.com.cn测试’, ‘@vendor/netpc/yii2-ueditor/assets/fonts/Alibaba-PuHuiTi-Heavy.otf’, [0,0], [‘color’ => ‘#000000’, ‘size’ =>16])->save($image, [‘quality’ => $quality]);

//修改尺寸
$image = Image::resize($image, 600, 0)->save($image, [‘quality’ => $quality]);

//裁剪
Image::crop($image, 120 , 120, [0, 0])->save($image, [‘quality’ => $quality]);

//略图
Image::thumbnail($image, 120, 120 ,\Imagine\Image\ManipulatorInterface::THUMBNAIL_INSET)->save($image, [‘quality’ => $quality]);

//旋转
Image::frame($image, 5, ‘666’, 0)->rotate(-8)->save($image, [‘quality’ => $quality]);

其它可以参考我的写的composer require netpc/yii2-ueditor扩展或查看官方源码

@see https://github.com/yiisoft/yii2-imagine

发表在 服务器 | 标签为 | 留下评论

【原创】框架使用class_exists()检查类是否存在要注意

今天使用class_exists检查是否安装yii2官方扩展yiisoft/yii2-imagine类的时候

if(class_exists('Image')){}

这样无论怎么检查都是flash

原来框架里需要使用完整命名空间路径

use yii\imagine\Image;
if(class_exists('yii\imagine\Image')){}

这样才能正确检查类是否有效。

 

发表在 服务器 | 标签为 | 留下评论

【原创】GridView使用kartik扩展yii2-export导出ExportMenu文档前后加内容

今天yii2表格GridView使用kartik扩展yii2-export导出excel文档的时候需要在表格内容前面或后面加一些说明内容,结果官方文档说明也不是很清楚,查看vendor\kartik-v\yii2-export\src\ExportMenu.php源码发现有contentBefore和contentAfter两个属性可以用,尝试下果然可以,代码如下:

<?php echo  ExportMenu::widget([
   'dataProvider' => $dataProvider,
   'columns' => $columns,
   'showColumnSelector' => false,
   'asDropdown' => false,
   'exportConfig' => [
      ExportMenu::FORMAT_HTML => false,
      ExportMenu::FORMAT_CSV => false,
      ExportMenu::FORMAT_TEXT => false,
      ExportMenu::FORMAT_PDF => false,
      ExportMenu::FORMAT_EXCEL => false,
      ExportMenu::FORMAT_EXCEL_X => [
         'icon' => '',
         'iconOptions' => ['class' => ''],
         'label' => '<button id="download">导出</button>',
         'options' => ['class' => 'btn btn-primary', 'style' => 'display:none'],
      ],
   ],
   //导出excel内容前面加内容
   'contentBefore' => [
      ['value' => 'v1'],
      ['value' => 'v2'],
   ],
   //导出excel内容后面加内容
   'contentAfter' => [
      ['value' => 'v1'],
      ['value' => 'v2'],
   ],
   'filename' => date('YmdHi'),
]);

导出如图:
yii2 excel 导出

发表在 服务器 | 标签为 | 留下评论

【原创】Github修改用户名

今天想起之前github的名称命名有问题需要修改,但是这样要注意,会影响之前的所有仓库项目发布,因为地址会发生改变。在Setting-Account Setting-Change username处修改用户名即可,如图:
Github修改用户名
Github修改用户名
Github修改用户名
Github修改用户名

发表在 服务器 | 标签为 | 留下评论