redis-trib.rb命令详解
redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准备相关的依赖环境。
准备redis-trib.rb的运行环境
wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz
tar xvf ruby-2.5.1.tar.gz
cd ruby-2.5.1/
./configure -prefix=/usr/local/ruby
make
make install
cd /usr/local/ruby/
cp bin/ruby /usr/local/bin
cp bin/gem /usr/local/bin
安装rubygem redis依赖
wget http://rubygems.org/downloads/redis-3.3.0.gem
gem install -l redis-3.3.0.gem
redis-trib.rb支持的操作
# redis-trib.rb help
Usage: redis-trib <command> <options> <arguments ...> create host1:port1 ... hostN:portN
--replicas <arg>
check host:port
info host:port
fix host:port
--timeout <arg>
reshard host:port
--from <arg>
--to <arg>
--slots <arg>
--yes
--timeout <arg>
--pipeline <arg>
rebalance host:port
--weight <arg>
--auto-weights
--use-empty-masters
--timeout <arg>
--simulate
--pipeline <arg>
--threshold <arg>
add-node new_host:new_port existing_host:existing_port
--slave
--master-id <arg>
del-node host:port node_id
set-timeout host:port milliseconds
call host:port command arg arg .. arg
import host:port
--from <arg>
--copy
--replace
help (show this help) For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.
支持的操作如下:
1. create:创建集群
2. check:检查集群
3. info:查看集群信息
4. fix:修复集群
5. reshard:在线迁移slot
6. rebalance:平衡集群节点slot数量
7. add-node:添加新节点
8. del-node:删除节点
9. set-timeout:设置节点的超时时间
10. call:在集群所有节点上执行命令
11. import:将外部redis数据导入集群
创建集群
redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384
--replicas参数指定集群中每个主节点配备几个从节点,这里设置为1。
>>> Creating cluster
/usr/local/ruby/lib/ruby/gems/2.5./gems/redis-3.3./lib/redis/client.rb:: warning: constant ::Fixnum is deprecated
>>> Performing hash slots allocation on nodes...
Using masters:
127.0.0.1:
127.0.0.1:
127.0.0.1:
Adding replica 127.0.0.1: to 127.0.0.1:
Adding replica 127.0.0.1: to 127.0.0.1:
Adding replica 127.0.0.1: to 127.0.0.1:
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: bc775f9c4dea40820b82c9451778b1fcd42f92bc 127.0.0.1:
slots:- ( slots) master
M: 3b27d00d13706a032a92ff6b0a914af272dcaaf2 127.0.0.1:
slots:- ( slots) master
M: d874f003257f1fb036bbd856ca605172a1741232 127.0.0.1:
slots:- ( slots) master
S: 648eb314863b82aaa676380be7db2ec307f5547d 127.0.0.1:
replicates bc775f9c4dea40820b82c9451778b1fcd42f92bc
S: 65a6efb441ac44c348f7da8c62e26b888cda7c48 127.0.0.1:
replicates 3b27d00d13706a032a92ff6b0a914af272dcaaf2
S: 57bda956485109552547aef6c77fba43d2124abf 127.0.0.1:
replicates d874f003257f1fb036bbd856ca605172a1741232
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 127.0.0.1:)
M: bc775f9c4dea40820b82c9451778b1fcd42f92bc 127.0.0.1:
slots:- ( slots) master
additional replica(s)
S: 648eb314863b82aaa676380be7db2ec307f5547d 127.0.0.1:
slots: ( slots) slave
replicates bc775f9c4dea40820b82c9451778b1fcd42f92bc
M: 3b27d00d13706a032a92ff6b0a914af272dcaaf2 127.0.0.1:
slots:- ( slots) master
additional replica(s)
S: 57bda956485109552547aef6c77fba43d2124abf 127.0.0.1:
slots: ( slots) slave
replicates d874f003257f1fb036bbd856ca605172a1741232
S: 65a6efb441ac44c348f7da8c62e26b888cda7c48 127.0.0.1:
slots: ( slots) slave
replicates 3b27d00d13706a032a92ff6b0a914af272dcaaf2
M: d874f003257f1fb036bbd856ca605172a1741232 127.0.0.1:
slots:- ( slots) master
additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All slots covered.
16384个槽全部被分配,集群创建成功。注意:给redis-trib.rb的节点地址必须是不包含任何槽/数据的节点,否则会拒绝创建集群。
>>> Creating cluster
/usr/local/ruby/lib/ruby/gems/2.5./gems/redis-3.3./lib/redis/client.rb:: warning: constant ::Fixnum is deprecated
[ERR] Node 127.0.0.1: is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database .
关于主从节点的选择及槽的分配,其算法如下:
1> 把节点按照host分类,这样保证master节点能分配到更多的主机中。
2> 遍历host列表,从每个host列表中弹出一个节点,放入interleaved数组。直到所有的节点都弹出为止。
3> 将interleaved数组中前master个数量的节点保存到masters数组中。
4> 计算每个master节点负责的slot数量,16384除以master数量取整,这里记为N。
5> 遍历masters数组,每个master分配N个slot,最后一个master,分配剩下的slot。
6> 接下来为master分配slave,分配算法会尽量保证master和slave节点不在同一台主机上。对于分配完指定slave数量的节点,还有多余的节点,也会为这些节点寻找master。分配算法会遍历两次masters数组。
7> 第一次遍历master数组,在余下的节点列表找到replicas数量个slave。每个slave为第一个和master节点host不一样的节点,如果没有不一样的节点,则直接取出余下列表的第一个节点。
8> 第二次遍历是分配节点数除以replicas不为整数而多出的一部分节点。
检查集群状态
redis-trib.rb check 127.0.0.1:6379
指定任意一个节点即可。
/usr/local/ruby/lib/ruby/gems/2.5./gems/redis-3.3./lib/redis/client.rb:: warning: constant ::Fixnum is deprecated
>>> Performing Cluster Check (using node 127.0.0.1:)
M: bc775f9c4dea40820b82c9451778b1fcd42f92bc 127.0.0.1:
slots:- ( slots) master
additional replica(s)
S: 648eb314863b82aaa676380be7db2ec307f5547d 127.0.0.1:
slots: ( slots) slave
replicates bc775f9c4dea40820b82c9451778b1fcd42f92bc
M: 3b27d00d13706a032a92ff6b0a914af272dcaaf2 127.0.0.1:
slots:- ( slots) master
additional replica(s)
S: 57bda956485109552547aef6c77fba43d2124abf 127.0.0.1:
slots: ( slots) slave
replicates d874f003257f1fb036bbd856ca605172a1741232
S: 65a6efb441ac44c348f7da8c62e26b888cda7c48 127.0.0.1:
slots: ( slots) slave
replicates 3b27d00d13706a032a92ff6b0a914af272dcaaf2
M: d874f003257f1fb036bbd856ca605172a1741232 127.0.0.1:
slots:- ( slots) master
additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All slots covered.
查看集群信息
redis-trib.rb info 127.0.0.1:6383
/usr/local/ruby/lib/ruby/gems/2.5./gems/redis-3.3./lib/redis/client.rb:: warning: constant ::Fixnum is deprecated
127.0.0.1: (3b27d00d...) -> keys | slots | slaves.
127.0.0.1: (d874f003...) -> keys | slots | slaves.
127.0.0.1: (bc775f9c...) -> keys | slots | slaves.
[OK] keys in masters.
0.00 keys per slot on average.
修复集群
目前fix命令能修复两种异常,
1. 节点中存在处于迁移中(importing或migrating状态)的slot。
2. 节点中存在未分配的slot。
其它异常不能通过fix命令修复。
[root@slowtech conf]# redis-trib.rb fix 127.0.0.1:
/usr/local/ruby/lib/ruby/gems/2.5./gems/redis-3.3./lib/redis/client.rb:: warning: constant ::Fixnum is deprecated
>>> Performing Cluster Check (using node 127.0.0.1:)
S: d826c5fd98efa8a17a880e9a90a25f06c88e6ae9 127.0.0.1:
slots: ( slots) slave
replicates a8b3d0f9b12d63dab3b7337d602245d96dd55844
S: 55c05d5b0dfea0d52f88548717ddf24975268de6 127.0.0.1:
slots: ( slots) slave
replicates a8b3d0f9b12d63dab3b7337d602245d96dd55844
M: f413fb7e6460308b17cdb71442798e1341b56cbc 127.0.0.1:
slots:- ( slots) master
additional replica(s)
S: beba753c5a63607fa66d9ec7427ed9a511ea136e 127.0.0.1:
slots: ( slots) slave
replicates f413fb7e6460308b17cdb71442798e1341b56cbc
S: 83797d518e56c235272402611477f576973e9d34 127.0.0.1:
slots: ( slots) slave
replicates f413fb7e6460308b17cdb71442798e1341b56cbc
M: a8b3d0f9b12d63dab3b7337d602245d96dd55844 127.0.0.1:
slots:- ( slots) master
additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All slots covered.
在线迁移slot
交互环境中使用
如,
redis-trib.rb reshard 127.0.0.1:
指定任意一个节点即可。
/usr/local/ruby/lib/ruby/gems/2.5./gems/redis-3.3./lib/redis/client.rb:: warning: constant ::Fixnum is deprecated
>>> Performing Cluster Check (using node 127.0.0.1:)
M: bc775f9c4dea40820b82c9451778b1fcd42f92bc 127.0.0.1:
slots:- ( slots) master
additional replica(s)
S: 648eb314863b82aaa676380be7db2ec307f5547d 127.0.0.1:
slots: ( slots) slave
replicates bc775f9c4dea40820b82c9451778b1fcd42f92bc
M: 3b27d00d13706a032a92ff6b0a914af272dcaaf2 127.0.0.1:
slots:-,- ( slots) master
additional replica(s)
S: 57bda956485109552547aef6c77fba43d2124abf 127.0.0.1:
slots: ( slots) slave
replicates d874f003257f1fb036bbd856ca605172a1741232
S: 65a6efb441ac44c348f7da8c62e26b888cda7c48 127.0.0.1:
slots: ( slots) slave
replicates 3b27d00d13706a032a92ff6b0a914af272dcaaf2
M: d874f003257f1fb036bbd856ca605172a1741232 127.0.0.1:
slots:- ( slots) master
additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All slots covered.
How many slots do you want to move (from to )?
What is the receiving node ID? 3b27d00d13706a032a92ff6b0a914af272dcaaf2
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node #:
它首先会提示需要迁移多个槽,我这里写的是200。
接着它会提示需要将槽迁移到哪个节点,这里必须写节点ID。
紧跟着它会提示槽从哪些节点中迁出。
如果指定为all,则待迁移的槽在剩余节点中平均分配,在这里,127.0.0.1:6379和127.0.0.1:6381各迁移100个槽出来。
也可从指定节点中迁出,这个时候,必须指定源节点的节点ID,最后以done结束,如下所示,
Source node #:bc775f9c4dea40820b82c9451778b1fcd42f92bc
Source node #:done Ready to move slots.
Source nodes:
M: bc775f9c4dea40820b82c9451778b1fcd42f92bc 127.0.0.1:
slots:- ( slots) master
additional replica(s)
Destination node:
M: 3b27d00d13706a032a92ff6b0a914af272dcaaf2 127.0.0.1:
slots:-,- ( slots) master
additional replica(s)
Resharding plan:
Moving slot from bc775f9c4dea40820b82c9451778b1fcd42f92bc
Moving slot from bc775f9c4dea40820b82c9451778b1fcd42f92bc
Moving slot from bc775f9c4dea40820b82c9451778b1fcd42f92bc
...
Do you want to proceed with the proposed reshard plan (yes/no)? yes
Moving slot from 127.0.0.1: to 127.0.0.1:: .
Moving slot from 127.0.0.1: to 127.0.0.1::
Moving slot from 127.0.0.1: to 127.0.0.1:: ..
Moving slot from 127.0.0.1: to 127.0.0.1::
...
最后,提示是否继续进行。
命令行中使用
redis-trib.rb reshard host:port --from <arg> --to <arg> --slots <arg> --yes --timeout <arg> --pipeline <arg>
其中,
host:port:必传参数,集群内任意节点地址,用来获取整个集群信息。
--from:源节点id,如果有多个源节点,使用逗号分隔,如果是all,则源节点为集群内出目标节点外的其它所有主节点。
--to:目标节点id,只能填写一个。
--slots:需要迁移槽的总数量。
--yes:迁移无需用户手动确认。
--timeout:控制每次migrate操作的超时时间,默认为60000毫秒。
--pipeline:控制每次批量迁移键的数量,默认为10。
如,
redis-trib.rb reshard --from a8b3d0f9b12d63dab3b7337d602245d96dd55844 --to f413fb7e6460308b17cdb71442798e1341b56cbc --slots --yes --pipeline 20 127.0.0.1:6383
平衡集群节点slot数量
rebalance host:port
--weight <arg>
--auto-weights
--use-empty-masters
--timeout <arg>
--simulate
--pipeline <arg>
--threshold <arg>
其中,
--weight <arg>:节点的权重,格式为node_id=weight,如果需要为多个节点分配权重的话,需要添加多个--weight <arg>参数,即--weight b31e3a2e=5 --weight 60b8e3a1=5,node_id可为节点名称的前缀,只要保证前缀位数能唯一区分该节点即可。没有传递–weight的节点的权重默认为1。
--auto-weights:自动将每个节点的权重默认为1。如果--weight和--auto-weights同时指定,则--auto-weights会覆盖前者。
--threshold <arg>:只有节点需要迁移的slot阈值超过threshold,才会执行rebalance操作。
--use-empty-masters:默认没有分配slot节点的master是不参与rebalance的。如果要让其参与rebalance,需添加该参数。
--timeout <arg>:设置migrate命令的超时时间。
--simulate:设置该参数,只会提示用户会迁移哪些slots,而不会执行真正的迁移操作。
--pipeline <arg>:定义cluster getkeysinslot命令一次取出的key数量,不传的话使用默认值为10。
如,
# redis-trib.rb rebalance --weight a8b3d0f9b12d63dab3b7337d602245d96dd55844= --weight f413fb7e6460308b17cdb71442798e1341b56cbc= --use-empty-masters 127.0.0.1:
/usr/local/ruby/lib/ruby/gems/2.5./gems/redis-3.3./lib/redis/client.rb:: warning: constant ::Fixnum is deprecated
>>> Performing Cluster Check (using node 127.0.0.1:)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All slots covered.
>>> Rebalancing across nodes. Total weight = 5.0
Moving slots from 127.0.0.1: to 127.0.0.1:
#########################################...
删除节点
redis-trib.rb del-node host:port node_id
在删除节点之前,其对应的槽必须为空,所以,在进行节点删除动作之前,必须使用redis-trib.rb reshard将其迁移出去。
需要注意的是,如果某个节点的槽被完全迁移出去,其对应的slave也会随着更新,指向迁移的目标节点。
# redis-trib.rb del-node 127.0.0.1: 8f7836a9a14fb6638530b42e04f5e58e28de0a6c
>>> Removing node 8f7836a9a14fb6638530b42e04f5e58e28de0a6c from cluster 127.0.0.1:
/usr/local/ruby/lib/ruby/gems/2.5./gems/redis-3.3./lib/redis/client.rb:: warning: constant ::Fixnum is deprecated
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
添加新节点
redis-trib add-node new_host:new_port existing_host:existing_port --slave --master-id <arg>
其中,
new_host:new_port:待添加的节点,必须确保其为空或不在其它集群中。否则,会提示以下错误。
[ERR] Node 127.0.0.1: is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database .
所以,线上建议使用redis-trib.rb添加新节点,因为其会对新节点的状态进行检查。如果手动使用cluster meet命令加入已经存在于其它集群的节点,会造成被加入节点的集群合并到现有集群的情况,从而造成数据丢失和错乱,后果非常严重,线上谨慎操作。
existing_host:existing_port:集群中任意一个节点的地址。
如果添加的是主节点,只需指定源节点和目标节点的地址即可。
redis-trib.rb add-node 127.0.0.1: 127.0.0.1:
如果添加的是从节点,其语法如下,
redis-trib.rb add-node --slave --master-id f413fb7e6460308b17cdb71442798e1341b56cbc 127.0.0.1: 127.0.0.1:
注意:--slave和--master-id必须写在前面,同样的参数,如果是下面这样写法,会提示错误,
# redis-trib.rb add-node 127.0.0.1: 127.0.0.1: --slave --master-id f413fb7e6460308b17cdb71442798e1341b56cbc
[ERR] Wrong number of arguments for specified sub command
添加从节点,可不设置--master-id,此时会随机选择主节点。
设置节点的超时时间
redis-trib.rb set-timeout host:port milliseconds
其实就是批量修改集群各节点的cluster-node-timeout参数。
# redis-trib.rb set-timeout 127.0.0.1:
/usr/local/ruby/lib/ruby/gems/2.5./gems/redis-3.3./lib/redis/client.rb:: warning: constant ::Fixnum is deprecated
>>> Reconfiguring node timeout in every cluster node...
*** New timeout set for 127.0.0.1:
*** New timeout set for 127.0.0.1:
*** New timeout set for 127.0.0.1:
*** New timeout set for 127.0.0.1:
*** New timeout set for 127.0.0.1:
*** New timeout set for 127.0.0.1:
>>> New node timeout set. OK, ERR.
在集群所有节点上执行命令
redis-trib.rb call host:port command arg arg .. arg
如,
[root@slowtech conf]# redis-trib.rb call 127.0.0.1: set hello world
/usr/local/ruby/lib/ruby/gems/2.5./gems/redis-3.3./lib/redis/client.rb:: warning: constant ::Fixnum is deprecated
>>> Calling SET hello world
127.0.0.1:: MOVED 127.0.0.1:
127.0.0.1:: MOVED 127.0.0.1:
127.0.0.1:: OK
127.0.0.1:: MOVED 127.0.0.1:
127.0.0.1:: MOVED 127.0.0.1:
127.0.0.1:: MOVED 127.0.0.1: [root@slowtech conf]# redis-trib.rb call 127.0.0.1: get hello
/usr/local/ruby/lib/ruby/gems/2.5./gems/redis-3.3./lib/redis/client.rb:: warning: constant ::Fixnum is deprecated
>>> Calling GET hello
127.0.0.1:: MOVED 127.0.0.1:
127.0.0.1:: MOVED 127.0.0.1:
127.0.0.1:: world
127.0.0.1:: MOVED 127.0.0.1:
127.0.0.1:: MOVED 127.0.0.1:
127.0.0.1:: MOVED 127.0.0.1:
将外部redis数据导入集群
redis-trib.rb import --from 127.0.0.1: 127.0.0.1:
其内部处理流程如下:
1> 通过load_cluster_info_from_node方法加载集群信息,check_cluster方法检查集群是否健康。
2> 连接外部redis节点,如果外部节点开启了cluster_enabled,则提示错误([ERR] The source node should not be a cluster node.)
3> 通过scan命令遍历外部节点,一次获取1000条数据。
4> 遍历这些key,计算出key对应的slot。
5> 执行migrate命令,源节点是外部节点,目的节点是集群slot对应的节点,如果设置了--copy参数,则传递copy参数,其会保留源节点的key,如果设置了--replace,则传递replace参数。如果目标节点中存在同名key,其值会被覆盖。两个参数可同时指定。
6> 不停执行scan命令,直到遍历完所有key。
7> 迁移完成。
[root@slowtech conf]# redis-trib.rb import --from 127.0.0.1: --replace 127.0.0.1:
>>> Importing data from 127.0.0.1: to cluster
/usr/local/ruby/lib/ruby/gems/2.5./gems/redis-3.3./lib/redis/client.rb:: warning: constant ::Fixnum is deprecated
>>> Performing Cluster Check (using node 127.0.0.1:)
S: d826c5fd98efa8a17a880e9a90a25f06c88e6ae9 127.0.0.1:
slots: ( slots) slave
replicates a8b3d0f9b12d63dab3b7337d602245d96dd55844
S: 55c05d5b0dfea0d52f88548717ddf24975268de6 127.0.0.1:
slots: ( slots) slave
replicates a8b3d0f9b12d63dab3b7337d602245d96dd55844
M: f413fb7e6460308b17cdb71442798e1341b56cbc 127.0.0.1:
slots:- ( slots) master
additional replica(s)
S: beba753c5a63607fa66d9ec7427ed9a511ea136e 127.0.0.1:
slots: ( slots) slave
replicates f413fb7e6460308b17cdb71442798e1341b56cbc
S: 83797d518e56c235272402611477f576973e9d34 127.0.0.1:
slots: ( slots) slave
replicates f413fb7e6460308b17cdb71442798e1341b56cbc
M: a8b3d0f9b12d63dab3b7337d602245d96dd55844 127.0.0.1:
slots:- ( slots) master
additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All slots covered.
>>> Connecting to the source Redis instance
*** Importing keys from DB
Migrating key5 to 127.0.0.1:: OK
参考
1. redis cluster管理工具redis-trib.rb详解
redis-trib.rb命令详解的更多相关文章
- NoSQL之Redis高级实用命令详解--安全和主从复制
Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim ...
- linux - redis-trib.rb 命令详解
参考网站 http://www.cnblogs.com/ivictor/p/9768010.html 简介 redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默 ...
- Redis(2):常用命令详解
redis命令不区分大小写 通用命令:1. 获得符合规则的键名列表: keys pattern 其中pattern符合glob风格 ? (一个字符) * (任意个字符) [] (匹配其中的任意一 ...
- 【转载】Redis sort 排序命令详解
转载地址:http://www.jb51.net/article/69131.htm 本文介绍redis排序命令 redis支持对list,set,sorted set元素的排序 sort 排序命令格 ...
- redis之expire命令详解
expire是设置redis过期时间的命令,需要注意的点有以下几点 expire设置过期时间的单位是秒,如设置name的过期时间为1000秒 expire name 1000 超过时间后会自动删除 ...
- Redis 配置文件及命令详解
==基本配置 daemonize no 是否以后台进程启动 databases 16 创建database的数量(默认选中的是database 0) save 900 1 #刷新快照到硬盘中,必须满足 ...
- 8、Redis中sort命令详解
写在前面的话:读书破万卷,编码如有神 ------------------------------------------------- 1.排序 (1)sort:可以对List.Set.ZSet里面 ...
- Python操作redis系列以 哈希(Hash)命令详解(四)
# -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. Hset 命令用于 ...
- Git 常用命令详解
Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...
随机推荐
- Linux Xshell连接Linux服务器时报错Socket error Event: 32 Error: 10053
问题描述 在用Xshell连接Linux服务器时,出现错误提示"Socket error Event: 32 Error: 10053. Connection closing...Socke ...
- 使用VSTS的Git进行版本控制(三)——评审历史记录
使用VSTS的Git进行版本控制(三)--评审历史记录 Git使用存储在每个提交中的父引用信息来管理开发的完整历史记录.评审该提交历史记录,能够找出文件更改的时间,并确定代码版本之间的差异. Git使 ...
- 根据标签中动态获取的值绑定特定的class
数据有mock数据获取 mock文件: index文件: 引入文件index: 获取数据函数: 根据获取的标签内容给定不同的样式:
- java验证码的制作和验证
验证码作用: 没有验证码登陆,黑客会更加容易破解你的账号,通过组合码刷机等黑客技术来破取你的密码,有了验证码相当于加了一层很厚的屏障,安全系数很高. 验证码是一种区分用户是计算机和人的公共全自动程序. ...
- Python 中if __name__ == '__main__': 的作用和原理
转自https://blog.csdn.net/weixin_42660771/article/details/84035153 1.代码的功能 一个python的文件有两种使用的方法,第一是直接作为 ...
- Selenium Webdriver 中的 executeScript 使用方法
1.使用executeScript 返回一个WebElement . 下例中我们将一个浏览器中的JavaScript 对象返回到客户端(C#,JAVA,Python等). IWebElement el ...
- February 17th, 2018 Week 7th Saturday
The happiest part of a man's life is what he passes lying awake in bed in the morning. 人生一大乐事莫过去早上醒来 ...
- mysql数据库显示 1164 table *** doesn't exist
问题出现场景: 以前mysql安装在C盘,后来重装系统,将mysql安装在了D盘,重装之前,将mysql的Data 文件夹备份了下来,mysql重新安装好之后,将原来的Data 文件夹内的数据库文件夹 ...
- 【Linux基础】VM使用
VM三种联网方法和原理 (1)Bridged桥接 使用VMnet0虚拟交换机,此时虚拟机相当与网络上的一台独立计算机与主机一样,拥有一个独立的IP地址,所有机器均可互访,可以联网.使用桥接方式,A,A ...
- 完美集群监控组合ganglia和nagios
Ganglia是伯克利开发的一个集群监控软件.可以监视和显示集群中的节点的各种状态信息,比如如:cpu .mem.硬盘利用率, I/O负载.网络流量情况等,同时可以将历史数据以曲线方式通过php页面呈 ...