[root@xxoo180109 bin]# cat pcs_add_resource_mysql8.0.sh
#!/bin/bash
#######################
# init_mysql_resource.sh
# Version 0.2
# Changed: 2022-02-25
#######################
dbname=aqcifs
vips=168.168.236.28
viplist=(${vips//,/ })
ARRAY=($(lvdisplay |grep VG |awk '{print $3}' ))
vgs |grep VolGroup | awk '{print $1}' | sort > /tmp/vg_list.tmp
while read VGNAME
do
if [[ ! "${ARRAY[@]}" =~ $VGNAME ]] ; then
echo $VGNAME
PREVG=$VGNAME
break
fi
done < /tmp/vg_list.tmp
rm -f /tmp/vg_list.tmp
echo "VG will be used is $PREVG"
port_id=$(echo $PREVG |tr -cd "[0-9]")
port="34"$port_id
vgchange --addtag pacemaker $PREVG
vgchange -ay $PREVG --config 'activation { volume_list = [ "@pacemaker" ]}'
echo "Start create LV"
lvcreate -l 100%Free -n LV${dbname} ${PREVG} --config 'activation { volume_list = [ "@pacemaker" ] }'
lvs
dbname=aqcifs
PREVG=VolGroup02
pcs resource create vg_${dbname} ocf:heartbeat:LVM-activate volgrpname=${PREVG} exclusive=true --group rg_${dbname}
pcs resource create vg_${dbname} ocf:heartbeat:LVM-activate vgname=${PREVG} exclusive=true --group rg_${dbname}
# 在redhat8.6 报下面的错误
Error: Agent 'ocf:heartbeat:LVM' is not installed or does not provide valid metadata: crm_resource: Metadata query for ocf:heartbeat:LVM failed: No such device or address, Error performing operation: No such object, use --force to override
[root@xxoo180109 bin]# pcs resource create vg_${dbname} ocf:heartbeat:LVM-activate volgrpname=${PREVG} exclusive=true --group rg_${dbname}
Error: invalid resource options: 'exclusive', 'volgrpname', allowed options are: 'activation_mode', 'lvname', 'partial_activation', 'tag', 'trace_file', 'trace_ra', 'vg_access_mode', 'vgname', use --force to override
Error: required resource options 'vg_access_mode', 'vgname' are missing, use --force to override
Error: Errors have occurred, therefore pcs is unable to continue
[root@xxoo180109 bin]# pcs resource create vg_${dbname} ocf:heartbeat:LVM-activate vgname=${PREVG} exclusive=true --group rg_${dbname}
Error: invalid resource option 'exclusive', allowed options are: 'activation_mode', 'lvname', 'partial_activation', 'tag', 'trace_file', 'trace_ra', 'vg_access_mode', 'vgname', use --force to override
Error: required resource option 'vg_access_mode' is missing, use --force to override
Error: Errors have occurred, therefore pcs is unable to continue
[root@xxoo180109 bin]# pcs resource create vg_${dbname} ocf:heartbeat:LVM-activate volgrpname=${PREVG} exclusive=true --group rg_${dbname}
Failed Resource Actions:
* vg_aqcifs_start_0 on xxoo180109 'invalid parameter' (2): call=66, status='complete', exitreason='The specified vg_access_mode doesn't match the lock_type on VG metadata!', last-rc-change='2024-02-22 11:28:17 +08:00', queued=0ms, exec=287ms
* vg_aqcifs_start_0 on xxoo180110 'invalid parameter' (2): call=41, status='complete', exitreason='The specified vg_access_mode doesn't match the lock_type on VG metadata!', last-rc-change='2024-02-22 11:28:17 +08:00', queued=0ms, exec=336ms
旧版:
pcs resource create vg_${dbname} ocf:heartbeat:LVM volgrpname=${PREVG} exclusive=true --group rg_${dbname}
新版:
pcs resource create vg_${dbname} ocf:heartbeat:LVM-activate vgname=${PREVG} vg_access_mode=lvmlocked --group rg_${dbname}
Failed Resource Actions:
* vg_aqcifs_start_0 on xxoo180110 'not configured' (6): call=77, status='complete', exitreason='The volume_list filter must be initialized in lvm.conf for exclusive activation without clvmd', last-rc-change='2024-02-22 13:13:44 +08:00', queued=0ms, exec=438ms
pcs resource create vg_${dbname} ocf:heartbeat:LVM-activate vgname=${PREVG} vg_access_mode=system_id --group rg_${dbname}
Failed Resource Actions:
* vg_aqcifs_start_0 on xxoo180109 'invalid parameter' (2): call=120, status='complete', exitreason='The specified vg_access_mode doesn't match the lock_type on VG metadata!', last-rc-change='2024-02-23 13:17:43 +08:00', queued=0ms, exec=312ms
* vg_aqcifs_start_0 on xxoo180110 'invalid parameter' (2): call=105, status='complete', exitreason='The specified vg_access_mode doesn't match the lock_type on VG metadata!', last-rc-change='2024-02-23 13:17:43 +08:00', queued=0ms, exec=417ms
pcs resource create vg_${dbname} ocf:heartbeat:LVM-activate vgname=${PREVG} vg_access_mode=shared --group rg_${dbname}
Failed Resource Actions:
* vg_aqcifs_start_0 on xxoo180110 'not configured' (6): call=112, status='complete', exitreason='Incorrect VG access mode detected!', last-rc-change='2024-02-23 13:18:50 +08:00', queued=0ms, exec=409ms
# 成功的命令
pcs resource create vg_${dbname} ocf:heartbeat:LVM-activate vgname=${PREVG} vg_access_mode=tagging --group rg_${dbname}
sleep 5
node=$(pcs status |grep vg_${dbname} | awk '{print $NF}')
if [[ ! "X$node" = "X$HOSTNAME" ]];then
pcs resource move rg_${dbname}
echo $node
fi
sleep 10
if [ "X$?" = "X1" ];then
echo "Error LV!"
echo "lvcreate -l 100%Free -n LV${dbname} ${PREVG}"
exit 100
fi
lvs
mkdir /my${port}
mkfs.xfs /dev/${PREVG}/LV${dbname}
pcs resource create fs_${dbname} ocf:heartbeat:Filesystem device="/dev/${PREVG}/LV${dbname}" directory="/my${port}" fstype="xfs" --group rg_${dbname}
db_base="/my${port}/${dbname}"
nmcli connection show | grep -q 'Wired connection' 2>/dev/null
if [ $? -eq 0 ]
then
nmcli connection show | grep 'Wired connection' | awk '{print $(NF-2)}' | xargs nmcli connection delete &>/dev/null
fi
id=0
for vip in ${viplist[@]}
do
echo $vip
let id+=1
nmcli connection show | awk '{print $1}' |grep -v -E "NAME|-" > /tmp/port_list.tmp
while read ETH
do
echo $ETH
ip=$(ifconfig ${ETH}|grep -E 'inet|netmask' | awk '{print $2}')
#netmask=$(ifconfig ${ETH}|grep -E 'inet|netmask' | awk '{print $4}')
netmask_len=$(ip addr show ${ETH} |grep "inet" | head -n 1 | awk '{print $2}' | awk -F'/' '{print $2}')
ip_net=$(echo ${ip}|awk -F. '{for(i=1;i<=NF;i++){a="";b=$i;while(b){a=b%2 a;b=int(b/2)}printf("%08d%s",a,i!=NF?"":"\n")}}')
vip_net=$(echo ${vip}|awk -F. '{for(i=1;i<=NF;i++){a="";b=$i;while(b){a=b%2 a;b=int(b/2)}printf("%08d%s",a,i!=NF?"":"\n")}}')
ip_len=$(echo "${ip_net:0:$netmask_len}")
vip_len=$(echo "${vip_net:0:$netmask_len}")
echo "IP_len:${ip_len},VIP_len:${vip_len}"
if [ ${ip_len} = ${vip_len} ] ;then
pcs resource create vip${id}_${dbname} ocf:heartbeat:IPaddr2 ip="${vip}" cidr_netmask="${netmask_len}" nic="$ETH" --group rg_${dbname} \
op start timeout=60 op monitor timeout=30s op monitor interval=20 on-fail='restart'
#pcs resource group add rg_${dbname} vip_${ETH}${port_id}
fi
done < /tmp/port_list.tmp
rm -f /tmp/port_list.tmp
done
wget http://xxoo.com.cn/iso/git/public_tools/mysql_8.0.cnf -O /tmp/mysql.cnf > /dev/null
repword ()
{
KEYWORD=$1
NEWWORD=$2
FILE=$3
perl -p -i -e "s/$KEYWORD/$NEWWORD/g" $FILE
}
echo ${vip} | awk -F. '{printf "%d\n", ($1*(2^24))+($2*(2^16))+($3*(2^8))+$4}'
repword "myport" "my${port}" "/tmp/mysql.cnf"
repword "dbname" "$dbname" "/tmp/mysql.cnf"
repword "port=3301" "port=$port" "/tmp/mysql.cnf"
serverid=$(echo ${vip} | awk -F. '{printf "%d\n", ($1*(2^24))+($2*(2^16))+($3*(2^8))+$4}')
repword "server-id = 30468" "server-id = ${serverid}" "/tmp/mysql.cnf"
if [ ! -d "${db_base}/trace" ];then
mkdir -p ${db_base}/{data,logs,trace,tmp}
mv /tmp/mysql.cnf /${db_base}/my.cnf
chown mysql:mysql ${db_base} -R
mysqld --defaults-file=${db_base}/my.cnf --initialize-insecure --user=mysql
fi
pcs resource create my_${dbname} ocf:heartbeat:mysql \
binary="/mysql/app/bin/mysqld_safe" \
client_binary="/mysql/app/bin/mysql" \
config="${db_base}/my.cnf" \
datadir="${db_base}/data" \
pid="${db_base}/mysql.pid" \
log="${db_base}/trace/mysqld_error.log" \
socket="${db_base}/mysql.sock" \
group="mysql" user="mysql" \
--group rg_${dbname} \
op start timeout=180s op stop timeout=180s op monitor interval=20s timeout=60s
pcs resource move rg_${dbname}
sleep 10
pcs constraint delete `pcs constraint location show --full | grep "rg_${dbname}" |grep "id:cli-ban-" |awk -F':' '{print $NF}' | awk -F')' '{print $1}'`
pcs constraint location show --full |grep "id:cli-ban-" | awk -F':' '{print $NF}' | awk -F')' '{print $1}'
# pcs constraint location show --full |grep Disabled | awk -F':' '{print $NF}' | awk -F')' '{print $1}'
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




