
正文
linuxpcs命令 linuxcp命令的用法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
greatdb启动命令
(1)启动GreatDB数据库
启动时需要注意先启动后端数据库,待所有数据库启动并验证可以登录后,再启动集群。
启动数据库
启动所有服务器上的mysql实例,启动之前 ps -ef|grep mysql 确认 mysql 实例没有启动。如下是启动命令:
cd /app/dbcluster/sgrdb/mysql
./bin/mysqld_safe --defaults-file=my[port].cnf --user=mysql
ps -ef|grep mysql 确保所有数据库已经启动后,验证所有数据库可以登录:
cd /app/dbcluster/sgrdb/mysql
./bin/mysql -u[用户名] -p[密码] -h[ip地址] -P[端口] -e “select 1”
返回结果为 1 。
启动GreatDB
在一台服务器执行:
pcs resource enable vip dbscale
执行 pcs status 确认 vip 、 dbscale 均为 enable 状态。
(2)停止
停止GreatDB
停止时需要注意先停止GreatDB,再停止后端数据库。在一台服务器执行:
pcs resource disable vip dbscale
执行 pcs status 确认 vip 、 dbscale 均为 disable 状态。
停止后端数据库
依次停止所有mysql数据库:
cd /app/dbcluster/sgrdb/mysql
./bin/sgrdb -u[user] -p[password] -h[vip] -P[port] shutdown
最后登录每台服务器执行 ps -ef|grep mysql 确保 mysql 进程全部停止。
相关问答
Q1: Linux HA 集群原理和配置-02
本文介绍在Linux HA集群中linuxpcs命令的仲裁和分区概念。
集群正常工作时linuxpcs命令,所有节点都在一个分区内(partition),分区内的所有节点将选举出一个仲裁节点,这个仲裁节点负责向其linuxpcs命令他节点发送集群控制命令。当网络发生故障时,集群中的节点发现无法和仲裁节点通信,则会在可通信的范围内重新选举一个新的仲裁节点。此时集群内可能出现多个仲裁节点,每个仲裁节点的管理范围为一个分区。
下文中将通过防火墙策略的设置模拟集群网络中通信出现异常的各种情况,如linuxpcs命令:
通过防火墙策略可以精准控制两两节点之间的连通性,使linuxpcs命令我们能更准确的了解在网络连通性发生变化对集群的影响。
在所有节点上启动防火墙,并添加策略对整个管理网络192.168.56.0/24放通。
保存上述策略,之后在实验过程会使用iptables命名加入新策略模拟网络通信异常效果,如果需要恢复网络通信正常状态,直接不保存策略重启firewalld服务即可。
通过pcs status查看集群状态:
上述结果显示当前集群只有一个分区,分区内的节点包括全部3台主机,仲裁节点是ha-host3,这表示集群间的通信是完好的。下图显示当前集群状态:
在ha-host1上添加以下策略:
该策略将使得ha-host1和ha-host3之间的通信中断,在所有节点上查看集群状态:
上面的结果显示,ha-host1失去和当前仲裁节点ha-host3的联系之后,和ha-host2一起组成新的分区并选举出ha-host2作为新的仲裁节点。有趣的是ha-host2和ha-host3的通信并未中断,但是他被“优先级较高的ha-host1抢走并推举为老大”,剩下ha-host3独自留在其自身所在的分区。此时ha-host3所在的分区提示了“partition WITHOUT quorum”,表示该分区中的节点数目不超过一半。
下图显示当前集群状态:
在ha-host1上再添加策略:
使其和当前的仲裁节点ha-host2的通信中断,集群状态变为:
发现ha-host2和ha-host3一起组成了新的分区,由于ha-host1所在分区节点数不足一半,无法启动资源,虚拟ip资源vip被切换到了ha-host2上。下图显示当前集群状态:
如果再把ha-host2和ha-host3直接的通信中断,此时3个节点间两两均无法通信。每个节点都是一个分区,每个分区的主机数均不过半,因此无法启动任何资源,原先运行在ha-host2上的vip也停止了。
当前集群状态如下图:
Q2: Linux命令行上传文件到百度网盘
在下边图示位置粘贴授权码,耐心等待一会即可(1-2分钟)
授权成功。
测试上传和同步本地文件到云盘
由于百度PCS API权限限制,程序只能存取百度云端/apps/bypy目录下面的文件和目录。我们可以通过:
Q3: Pacemaker之高级资源类型:资源组,资源克隆和资源多状态
在Pacemaker集群中,各种功能服务通常被配置为 集群资源 ,接受资源管理器的调度与控制, 资源 是集群管理的最小单位对象。在集群资源配置中,由于不同高可用模式的需求, 资源通常被配置为不同的运行模式 ,如Active/Active模式、Active/ Passive模式以及Master/Master模式和Master/Slave模式, 而这些不同资源模式的配置均需要使用Pacemaker提供的高级资源类型 ,包括 资源组 、 资源克隆 和 资源多状态 等。
在Pacemaker集群中, 经常需要将多个资源作为一个资源组进行统一操作 ,如将多个相关资源全部位于某个节点或者同时切换到另外的节点,并且要求这些资源按照一定的先后顺序启动,然后以相反的顺序停止, 为了简化同时对多个资源进行配置,Pacemaker提供了高级资源类型——资源组 。通过资源组,用户便可并行配置多个资源,资源组的创建语法格式: pcs resource group add group_name resource_id [resource_id] ... [resource_id][--before resource_id | --after resource_id
使用该命令创建资源组时,如果指定的资源组不存在,则此命令会新建一个资源组,如果指定的资源组已经存在,则此命令会将指定的资源添加到该资源组中。 资源组中的资源会按照资源在该命令中出现的先后位置顺序启动,并以相反的顺序停止 。在该命令中,还可使用--before和--after参数指定所添加的资源与组中已有资源的相对启动顺序。
在为资源组添加资源时,不仅可以将已有资源添加到组中,还可以在创建资源的同时顺便将其添加到指定的资源组中,命令语法:pcs resource create resource_id standard:provider:type|type [resource_options] [op operation_action operation_options] --group group_name
以下是资源组操作中经常使用的命令语法:
//将资源从组中删除,如果该组中没有资源,会将该组删除: pcs resource group remove group_name resource_id...
//查看资源组:pcs resource group list
//创建名为 MyGroup的资源组,并添加资源 IPaddr和HAproxy:pcs resource group add MyGroup IPaddr HAproxy
在Pacemaker集群中,资源组所包含的资源数目是不受限的,资源组中的资源具有如下的基本特性:
1) 资源按照其指定的先后顺序启动。
2) 资源按照其指定顺序的相反顺序停止。
3) 如果资源组中的某个资源无法在任何节点启动运行,那么在该资源后指定的任何资源都将无法运行。
4) 资源组中后指定资源不影响前指定资源的运行。
资源组具有组属性,并且资源组会继承组成员的部分属性 ,主要被继承的资源属性包括Priority、Target-role、Is-managed等,资源属性决定了资源在集群中的行为规范,以及资源管理器可以对其进行哪些操作。
资源属性介绍如下:
1) Priority :资源优先级,默认值是0,如果集群无法保证所有资源都处于运行状态,则低优先权资源会被停止,以便让高优先权资源保持运行状态。
2) Target-role :资源目标角色,默认值是Started,表示集群应该让这个资源处于何种状态,允许值为:
Stopped:表示强制资源停止;
Started:表示允许资源启动,但多状态资源的情况下不能将其提升为Master资源;
Master:允许资源启动,并在适当时将其提升为Master。
3) is-managed :表示是否允许集群启动和停止该资源,默认值是true。
4) Resource-stickiness :表示该资源保留在原有位置节点的倾向程度值,默认值是0。
5) Requires :表示资源在什么条件下允许启动,默认值为fencing。
克隆资源是Pacemaker集群中的高级资源类型之一, 通过资源克隆,集群管理员可以将资源克隆到多个节点上并在启动时使其并行运行在这些节点上 ,例如通过资源克隆的形式在集群中的多个节点上运行冗余IP资源实例,并在多个处于Active状态的IP资源之间实现负载均衡。 通常凡是其 资源代理 支持克隆功能的资源都可以实现资源克隆 , 但只有已经规划为可以运行在Active/Active高可用模式的资源才能在集群中配置为克隆资源 。通常在创建资源的过程中同时对其进行资源克隆,克隆后的资源将会在集群中的全部节点上存在,并且克隆后的资源会自动在其后添加名为clone的后缀并形成新的资源ID,资源创建并克隆资源的语法如下:pcs resource create resource_id standard:provider:type|type [resource options]--clone [meta clone_options]
克隆后的资源ID不再是语法中指定的Resource_id,而是Resource_id-clone,并且该资源会在集群全部节点中存在。在Pacemaker集群中,资源组也可以被克隆,但是资源组克隆不能由单一命令完成,必须先创建资源组然后再对资源组进行克隆,资源组克隆的命令语法如下:pcs resource clone resource_id | group_name [clone_options]...
克隆后资源的名称为Resource_id-clone或Group_name-clone。在资源克隆命令中,可以指定资源克隆选项(clone_options):
1) Priority/Target - role/Is-manage :从被克隆的资源中继承的,详见资源属性介绍。
2) Clone-max :该选项值表示需要存在多少资源副本才能启动资源,默认为该集群中的节点数。
3) Clone-node-max :表示在单一节点上能够启动多少个资源副本,默认值为1。
4) Notify :表示在停止或启动克隆资源副本时,是否在开始操作前和操作完成后告知其他所有资源副本,默认值为False。
5) Globally-unique :表示是否允许每个克隆副本资源执行不同的功能,允许值为False和True。如果其值为False,则不管这些克隆副本资源运行在何处,它们的行为都是完全相同的,因此每个节点中有且仅有一个克隆副本资源处于Active状态。如果其值为True,则运行在某个节点上的多个资源副本实例或者不同节点上的多个副本实例完全不一样。如果Clone-node-max取值大于1,即一个节点上运行多个资源副本,那么Globally-unique的默认值为True,否则为False。
6) Ordered :表示是否顺序启动位于不同节点上的资源副本,True为顺序启动,False为并行启动,默认值是False。
7) Interleave :该属性值主要用于改变克隆资源或者Masters资源之间的 Ordering约束行为。 如果Interleave值为False,则位于相同节点上的后一个克隆资源的启动或者停止操作需要等待前一个克隆资源启动或者停止完成才能进行;如果Interleave值为True,则位于相同节点上的后一个克隆资源不用等待前一个克隆资源启动或者停止完成便可进行启动或者停止操作,默认值为False。
在通常情况下, 克隆资源会在集群中的每个在线节点上都存在一个副本,即资源副本数目与集群节点数目相等 ,但集群管理员可以通过资源克隆选项Clone-max将资源副本数目设为小于集群节点数目, 如果资源副本数目小于节点数目,则需要通过资源位置约束(Location Constraint)将资源副本指定到相应的节点上 ,设置克隆资源的位置约束与设置常规资源的位置约束类似。例如要将克隆资源Web-clone限制在node1节点上运行,则命令语法如下:pcs constraint location web-clone prefers node1
多状态资源是Pacemaker集群中实现资源Master/Master或Master/Slave高可用模式的机制 ,并且 多态资源是一种特殊的克隆资源,多状态资源机制允许资源实例在同一时刻仅处于Master状态或者Slave状态 。多状态资源的创建只需在普通资源创建的过程中指定--Master参数即可,Master/Slave多状态类型资源的创建命令语法:pcs resource create resource_id standard:provider:type|type [resource options] --master [meta master_options]
多状态资源是一种特殊的克隆资源,默认情况下,多状态资源创建后也会在集群的全部节点中存在,多状态资源创建后在集群中的资源名称格式为Resource_id-master。在Master/Slave高可用模式下,尽管在集群中仅有一个节点上的资源会处于Master状态,其他节点上均为Slave状态,但是全部节点上的资源在启动之初均为Slave状态,之后资源管理器会选择将某个节点的资源提升为Master。用户还可以将已经存在的资源或资源组创建为多状态资源,命令语法:pcs resource master master/slave_name resource_id|group_name [master_options]
在多状态资源的创建过程中,可以通过Master选项(Master_options)来设置多状态资源的属性,Master_options主要有以下两种属性值:
1) Master-max :表示可将多少个资源副本由Slave状态提升至Master状态,默认值为1,即仅有一个Master。
2) Master-node-max :表示在同一节点中可将多少资源副本提升至Master状态,默认值为1。
在通常情况下, 多状态资源默认会在每个在线的集群节点中分配一个资源副本 ,如果希望资源副本数目少于节点数目,可通过资源的Location约束指定运行资源副本的集群节点,多状态资源的Location约束在实现的命令语法上与常规资源一样。在配置多状态资源的Ordering约束时,可以指定对资源进行的操作是提升(Promote)还是降级(Demote)操作:pcs constraint order [action] resource_id then [action] resource_id [options]
Promote操作将对应的资源(resource_id)提升为Master状态,Demote操作将资源(resource_id)降级为Slave状态,设定被提升或降级资源的顺序的方法是Ordering约束。
Q4: 如何查看程序被哪个版本编译器编译的linux-gcc
那是不可能的,除非linuxpcs命令你加入linuxpcs命令了调试信息,也就是编译的时候加入了-g参数,然后用gdb调试就可以显示。最大程度上查看一个elf文件信息。
{
readelf -Wa a.out | head
readelf -wi a.out
readelf -p .comment a.out
objdump -s --section .comment audioplayer
}
如下:
[root@localhost rootfs]# readelf -Wa bin/gzip
复制代码
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: ARM
Version: 0x1
Entry point address: 0xa080
Start of program headers: 52 (bytes into file)
Start of section headers: 1975444 (bytes into file)
Flags: 0x5000002, has entry point, Version5 EABI
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 6
Size of section headers: 40 (bytes)
Number of section headers: 25
Section header string table index: 24
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .note.ABI-tag NOTE 000080f4 0000f4 000020 00 A 0 0 4
[ 2] .init PROGBITS 00008114 000114 00000c 00 AX 0 0 4
[ 3] .text PROGBITS 00008120 000120 17fcfc 00 AX 0 0 16
[ 4] __libc_freeres_fn PROGBITS 00187e1c 17fe1c 000f20 00 AX 0 0 4
[ 5] __libc_thread_fre PROGBITS 00188d3c 180d3c 0000e4 00 AX 0 0 4
[ 6] .fini PROGBITS 00188e20 180e20 000008 00 AX 0 0 4
[ 7] .rodata PROGBITS 00188e28 180e28 058147 00 A 0 0 8
[ 8] __libc_subfreeres PROGBITS 001e0f70 1d8f70 00005c 00 A 0 0 4
[ 9] __libc_atexit PROGBITS 001e0fcc 1d8fcc 000004 00 A 0 0 4
[10] __libc_thread_sub PROGBITS 001e0fd0 1d8fd0 000008 00 A 0 0 4
[11] .ARM.extab PROGBITS 001e0fd8 1d8fd8 001b04 00 A 0 0 4
[12] .ARM.exidx ARM_EXIDX 001e2adc 1daadc 006ea8 00 AL 3 0 4
[13] .tdata PROGBITS 001f1984 1e1984 000018 00 WAT 0 0 4
[14] .tbss NOBITS 001f199c 1e199c 000034 00 WAT 0 0 4
[15] .init_array INIT_ARRAY 001f199c 1e199c 000004 00 WA 0 0 4
[16] .fini_array FINI_ARRAY 001f19a0 1e19a0 000008 00 WA 0 0 4
[17] .jcr PROGBITS 001f19a8 1e19a8 000004 00 WA 0 0 4
[18] .data.rel.ro PROGBITS 001f19ac 1e19ac 00002c 00 WA 0 0 4
[19] .got PROGBITS 001f19d8 1e19d8 00007c 04 WA 0 0 4
[20] .data PROGBITS 001f1a58 1e1a58 0008f7 00 WA 0 0 8
[21] .bss NOBITS 001f2350 1e234f 004828 00 WA 0 0 8
[22] __libc_freeres_pt NOBITS 001f6b78 1e234f 00003c 00 WA 0 0 4
[23] .ARM.attributes ARM_ATTRIBUTES 00000000 1e234f 00002b 00 0 0 1
[24] .shstrtab STRTAB 00000000 1e237a 000118 00 0 0 1
Section to Segment mapping:
Segment Sections...
00 .ARM.exidx
01 .note.ABI-tag .init .text __libc_freeres_fn __libc_thread_freeres_fn .fini .rodata __libc_subfreeres __libc_atexit __libc_thread_subfreeres .ARM.extab .ARM.exidx
02 .tdata .init_array .fini_array .jcr .data.rel.ro .got .data .bss __libc_freeres_ptrs
03 .note.ABI-tag
04 .tdata .tbss
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "5TE"
Tag_CPU_arch: v5TE
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align8_needed: Yes
Tag_ABI_align8_preserved: Yes, except leaf SP
Tag_ABI_enum_size: int
Tag_unknown_44: 1 (0x1)
复制代码
How to retrieve the GCC version used to compile a given ELF executable?
QUES: I'd like to retrieve the GCC version used to compile a given executable. I tried readelf but didn't get the information. Any thoughts?
ANS: To complete what others have said: it's not stored in the object (or exe) file, unless you compile with debugging information! (option -g). If you compile with debug info, you can get it back with readelf:
复制代码
[root@localhost test]# gcc a.c
[root@localhost test]# readelf -wi a.out
[root@localhost test]# gcc a.c -g
[root@localhost test]# readelf -wi a.out
The section .debug_info contains:
Compilation Unit @ offset 0x0:
Length: 135
Version: 2
Abbrev Offset: 0
Pointer Size: 8
0b: Abbrev Number: 1 (DW_TAG_compile_unit)
DW_AT_stmt_list : 0
DW_AT_high_pc : 0x400453
DW_AT_low_pc : 0x400448
DW_AT_producer : GNU C 4.1.2 20080704 (Red Hat 4.1.2-55)
DW_AT_language : 1 (ANSI C)
DW_AT_name : a.c
DW_AT_comp_dir : /work/farsight/test
161: Abbrev Number: 2 (DW_TAG_subprogram)
DW_AT_external : 1
DW_AT_name : main
DW_AT_decl_file : 1
DW_AT_decl_line : 4
DW_AT_prototyped : 1
DW_AT_type : 83
DW_AT_low_pc : 0x400448
DW_AT_high_pc : 0x400453
DW_AT_frame_base : 0 (location list)
183: Abbrev Number: 3 (DW_TAG_base_type)
DW_AT_name : int
DW_AT_byte_size : 4
DW_AT_encoding : 5 (signed)
复制代码
ANS2:
Q5: pcs985清除报文
您好,PCS985是一种通信协议,用于在电力系统中传输数据。如果您需要清除PCS985报文,可以尝试以下方法:
1. 在发送端,可以使用清除命令将报文清除。具体命令可以参考PCS985协议文档。
2. 在接收端,可以使用清除命令将已经接收到的报文清除。具体命令也可以参考PCS985协议文档。
3. 如果以上方法都无法解决问题,可以尝试重新启动通信设备或者系统,以清除可能存在的缓存或者其他问题。
请注意,PCS985协议是一种专业的通信协议,需要具备相关的技术知识和经验才能进行操作。如果您不熟悉PCS985协议或者相关技术,建议您寻求专业人士的帮助。
linuxpcs命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linuxcp命令的用法、linuxpcs命令的信息别忘了在本站进行查找喔。






