月度归档:2017年03月

LVM新加磁盘

新加磁盘为: /dev/vdc
LVM vg名称为: vg1

vgextend vg1 /dev/vdc

 

一次无损减小磁盘空间

[root@i ~]#
[root@i ~]# vgex
vgexport vgextend
[root@i ~]# vgex
vgexport vgextend
[root@i ~]# vgextend vg1 /dev/xvdb
Physical volume “/dev/xvdb” successfully created.
Volume group “vg1” successfully extended
[root@i ~]#
[root@i ~]#
[root@i ~]# ll
total 0
[root@i ~]# vg
vgcfgbackup vgchange vgconvert vgdisplay vgextend vgimportclone vgmknodes vgremove vgs vgsplit
vgcfgrestore vgck vgcreate vgexport vgimport vgmerge vgreduce vgrename vgscan
[root@i ~]# lv
lvchange lvcreate lvextend lvmchange lvmconfig lvmdump lvmpolld lvmsar lvremove lvresize lvscan
lvconvert lvdisplay lvm lvmconf lvmdiskscan lvmetad lvmsadc lvreduce lvrename lvs
[root@i ~]# pv
pvchange pvck pvcreate pvdisplay pvmove pvremove pvresize pvs pvscan
[root@i ~]# pvmove /dev/xvdb
No data to move for vg1
[root@i ~]# pvmove /dev/xvdi
Insufficient free space: 2292 extents needed, but only 1279 available
Unable to allocate mirror extents for pvmove0.
Failed to convert pvmove LV to mirrored
[root@i ~]#
[root@i ~]#
[root@i ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 41152832 2672832 36366516 7% /
devtmpfs 931496 0 931496 0% /dev
tmpfs 941156 0 941156 0% /dev/shm
tmpfs 941156 332 940824 1% /run
tmpfs 941156 0 941156 0% /sys/fs/cgroup
/dev/mapper/vg1-lvLog 3948224 16412 3708176 1% /mnt/log
/dev/mapper/vg1-lvData 5029504 453948 4297028 10% /mnt/data
tmpfs 188232 0 188232 0% /run/user/0
[root@i ~]#
[root@i ~]#
[root@i ~]# umount /mnt/log
[root@i ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 41152832 2672832 36366516 7% /
devtmpfs 931496 0 931496 0% /dev
tmpfs 941156 0 941156 0% /dev/shm
tmpfs 941156 332 940824 1% /run
tmpfs 941156 0 941156 0% /sys/fs/cgroup
/dev/mapper/vg1-lvData 5029504 453948 4297028 10% /mnt/data
tmpfs 188232 0 188232 0% /run/user/0
[root@i ~]# e2fsck -f /dev/vg
vg1/ vga_arbiter
[root@i ~]# e2fsck -f /dev/vg
vg1/ vga_arbiter
[root@i ~]# e2fsck -f /dev/vg1/lvLog
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg1/lvLog: 14/262144 files (0.0% non-contiguous), 53335/1036288 blocks
[root@i ~]# resize -f /dev/vg1/lvLog
resize2fs resizecons resizepart
[root@i ~]# resize2fs -f /dev/vg1/lvLog 500M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lvLog to 128000 (4k) blocks.
The filesystem on /dev/vg1/lvLog is now 128000 blocks long.

[root@i ~]# lvresize -L 500M /dev/vg1/lvLog 500M
Physical Volume “500M” not found in Volume Group “vg1”.
[root@i ~]# lvresize -L 500M /dev/vg1/lvLog
WARNING: Reducing active logical volume to 500.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lvLog? [y/n]: Y
Size of logical volume vg1/lvLog changed from 3.95 GiB (1012 extents) to 500.00 MiB (125 extents).
Logical volume vg1/lvLog successfully resized.
[root@i ~]# mount -a
[root@i ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 40G 2.6G 35G 7% /
devtmpfs 910M 0 910M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 332K 919M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/mapper/vg1-lvData 4.8G 444M 4.1G 10% /mnt/data
tmpfs 184M 0 184M 0% /run/user/0
/dev/mapper/vg1-lvLog 364M 6.1M 323M 2% /mnt/log
[root@i ~]# ll
total 0
[root@i ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 41152832 2672836 36366512 7% /
devtmpfs 931496 0 931496 0% /dev
tmpfs 941156 0 941156 0% /dev/shm
tmpfs 941156 332 940824 1% /run
tmpfs 941156 0 941156 0% /sys/fs/cgroup
/dev/mapper/vg1-lvData 5029504 453948 4297028 10% /mnt/data
tmpfs 188232 0 188232 0% /run/user/0
/dev/mapper/vg1-lvLog 372680 6192 330652 2% /mnt/log
[root@i ~]# cd /mnt/log/
[root@i log]# ll
total 24
drwx—— 2 root root 16384 Nov 7 02:59 lost+found
drwxr-xr-x 2 redis redis 4096 Jan 13 20:10 mongodb
-rw-r–r– 1 root root 194 Mar 9 21:56 php_errors.log
[root@i log]#
[root@i log]#
[root@i log]#
[root@i log]# cd
[root@i ~]#
[root@i ~]#
[root@i ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 41152832 2672836 36366512 7% /
devtmpfs 931496 0 931496 0% /dev
tmpfs 941156 0 941156 0% /dev/shm
tmpfs 941156 332 940824 1% /run
tmpfs 941156 0 941156 0% /sys/fs/cgroup
/dev/mapper/vg1-lvData 5029504 453948 4297028 10% /mnt/data
tmpfs 188232 0 188232 0% /run/user/0
/dev/mapper/vg1-lvLog 372680 6192 330652 2% /mnt/log
[root@i ~]#

API 的查询语言 GraphQL

GraphQL 是一个由Facebook提出的 应用层查询语言. 使用 GraphQL, 你可以基于图模式定义你的后端. 然后客户端就可以请求所需要的数据集。

因此, 你不必因为客户端数据需求的变更而改变你的后端. 这解决了管理REST API中的最大的问题.

GraphQL同样能够让客户端程序高效地批量获取数据. 例如, 看一看下面这个GraphQL请求:

{
  latestPost {
    _id,
    title,
    content,
    author {
      name
    },
    comments {
      content,
      author {
        name
      }
    }
  }
}

这个 GraphQL 请求获取了一篇博客文章和对应评论与作者信息的数据. 下面是请求的返回结果:

{
  "data": {
    "latestPost": {
      "_id""03390abb5570ce03ae524397d215713b",
      "title""New Feature: Tracking Error Status with Kadira",
      "content""Here is a common feedback we received from our users ...",
      "author": {
        "name""Pahan Sarathchandra"
      },
      "comments": [
        {
          "content""This is a very good blog post",
          "author": {
            "name""Arunoda Susiripala"
          }
        },
        {
          "content""Keep up the good work",
          "author": {
            "name""Kasun Indi"
          }
        }
      ]
    }
  }
}

如果你使用的是REST的话,你需要调用多个REST API的请求才能获取这些信息。

GraphQL是一个规范

因此, 它可以用于任何平台或语言. 它有一个参考的实现 JavaScript,  由Facebook维护. 还有许多社区维护的实现有许多种语言。

介绍内容来自 简书

文章来源:https://www.oschina.net/p/graphql?fromerr=nRJiZA8n

Threads_running=54 exceeds its critical threshold 50

一般是负载过高,自动中断

加大这个阈值即可–critical-load Threads_running=400 加到400

pt-online-schema-change –user root
–password xxxxx
–host localhost
D=XXX,t=XXXXX
–execute
–alter “ADD UNIQUE INDEX invite_code (invite_code ASC)”
–nocheck-replication-filters
–charset utf8mb4
–max-load Threads_running=10
–critical-load Threads_running=400
–chunk-time=2.0
–no-check-alter

 

linux下比较两个文本文件的不同——diff命令

1>Diff命令的功能
Linux中Diff命令的功能为逐行比较两个文本文件,列出其不同之处。它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序。

2>语法
diff [options] file1 file2

该命令告诉用户,为了使两个文件file1和file2一致,需要修改它们的哪些行。如果用”-”表示file1或file2,则表示标准输入。如果file1或file2是目录,那么diff将使用该目录中的同名文件进行比较。

3>[options]主要参数

-a:将所有文件当作文本文件来处理。

-b或–ignore-space-change  忽略空格造成的不同。

-B或–ignore-blank-lines  忽略空行造成的不同。

-c:使用纲要输出格式。

-H:利用试探法加速对大文件的搜索。

-I:忽略大小写的变化。

-n –rcs:输出RCS格式。

-N或–new-file  在比较目录时,若文件A仅出现在某个目录中,会显示:Only in目录;文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。

-r或–recursive  比较子目录中的文件。

-u,-U<列数>或–unified=<列数>  以合并的方式来显示文件内容的不同。

4>使用方法的实例说明

例如: diff /usr/xu mine

把目录/usr/xu 中名为mine的文件与当前目录中的mine文件进行比较。

通常输出由下述形式的行组成:

n1 a n3,n4

n1,n2 d n3

n1,n2 c n3,n4 这些行类似ed命令把filel转换成file2。字母(a、d和c)之前的行号(n1,n2)是针对file1的,其后面的行号(n3,n4)是针对file2的。字母a、d和c分别表示附加、删除和修改操作。

在上述形式的每一行的后面跟随受到影响的若干行,以”<”打头的行属于第一个文件,以”>”打头的行属于第二个文件。

diff能区别块和字符设备文件以及FIFO(管道文件),不会把它们与普通文件进行比较。

如果file1和file2都是目录,则diff会产生很多信息。

5>diff最常用的功能

diff有很多功能平时我们不常用到,最常用的功能莫过于生成patch文件了:

diff -urN old/ new/ > mysoft.patch
参数 -u 表示使用 unified 格式,-r 表示比较目录,-N 表示将不存在的文件当作空文件处理,这样新添加的文件也会出现在patch文件中。

然后在需要应用patch的地方使用下述命令即可:

patch -p0 < mysoft.patch

diff的 -y 命令(长格式为 –side-by-side)可以将屏幕分成左右两部分,来比较两个文件之间的差异。许多图形化的比较工具都有这个功能,但如果只能使用命令行,这个参数就相当有用了。如果要改变左右各部分的宽度,可以通过 -W (–width)参数来指定。
–ignore-blank-lines 参数可以不检查空白行。这样DOS格式和Unix格式的文件互相比较时,就不至于因为换行符不一致而出现大量的差异。
本文来源于时光漂流瓶 http://www.9usb.net , 原文地址: http://www.9usb.net/200903/linux-diff.html

MYSQL远程直接导入数据库方法

mysqldump -uroot -pxxx -hmaster nimei –single-transaction –default-character-set=utf8mb4 | mysql –default-character-set=utf8mb4 -uroot -pxxx -h127.0.0.1 nimei

注意 –default-character-set 别丢了,否则emoji丢失!