1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00

MCOL-4011 Add support for SM into systemd units.

This commit is contained in:
Jose
2020-05-29 04:22:33 +00:00
parent 0123811f46
commit 6675b8ae96
7 changed files with 105 additions and 3 deletions

View File

@ -20,6 +20,7 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mcs-writeengineserver.service.in" "$
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mcs-dmlproc.service.in" "${CMAKE_CURRENT_SOURCE_DIR}/mcs-dmlproc.service" @ONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mcs-ddlproc.service.in" "${CMAKE_CURRENT_SOURCE_DIR}/mcs-ddlproc.service" @ONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mcs-loadbrm.service.in" "${CMAKE_CURRENT_SOURCE_DIR}/mcs-loadbrm.service" @ONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mcs-storagemanager.service.in" "${CMAKE_CURRENT_SOURCE_DIR}/mcs-storagemanager.service" @ONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mcs-stop-controllernode.sh.in" "${CMAKE_CURRENT_SOURCE_DIR}/mcs-stop-controllernode.sh" @ONLY)
install(PROGRAMS columnstore-post-install
@ -44,6 +45,8 @@ install(PROGRAMS columnstore-post-install
mariadb-command-line.sh
mcs_module_installer.sh
mcs-stop-controllernode.sh
mcs-loadbrm.py
mcs-start-storagemanager.py
DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine)
install(FILES mariadb-columnstore.service
@ -62,6 +65,7 @@ install(FILES mariadb-columnstore.service
mcs-dmlproc.service
mcs-ddlproc.service
mcs-loadbrm.service
mcs-storagemanager.service
DESTINATION ${ENGINE_SUPPORTDIR} COMPONENT columnstore-engine)
install(FILES module DESTINATION ${ENGINE_DATADIR}/local COMPONENT columnstore-engine)

View File

@ -105,6 +105,9 @@ if [ $user = "root" ]; then
cp @ENGINE_SUPPORTDIR@/mcs-writeengineserver.service /lib/systemd/system/. >/dev/null 2>&1
cp @ENGINE_SUPPORTDIR@/mcs-loadbrm.service /usr/lib/systemd/system/. >/dev/null 2>&1
cp @ENGINE_SUPPORTDIR@/mcs-loadbrm.service /lib/systemd/system/. >/dev/null 2>&1
cp @ENGINE_SUPPORTDIR@/mcs-storagemanager.service /usr/lib/systemd/system/. >/dev/null 2>&1
cp @ENGINE_SUPPORTDIR@/mcs-storagemanager.service /lib/systemd/system/. >/dev/null 2>&1
systemctl enable mariadb-columnstore >/dev/null 2>&1
systemctl enable mcs-controllernode > /dev/null 2>&1
@ -115,6 +118,7 @@ if [ $user = "root" ]; then
systemctl enable mcs-workernode > /dev/null 2>&1
systemctl enable mcs-writeengineserver > /dev/null 2>&1
systemctl enable mcs-loadbrm > /dev/null 2>&1
systemctl enable mcs-storagemanager > /dev/null 2>&1
else
chkconfig=`which chkconfig 2>/dev/null`
if [ -n "$chkconfig" ]; then

View File

@ -17,7 +17,7 @@ systemctl cat mariadb-columnstore.service > /dev/null 2>&1
if [ $? -eq 0 ] && [ $(running_systemd) -eq 0 ]; then
systemctl stop mariadb-columnstore >/dev/null 2>&1
else
PROGS='load_brm workernode controllernode PrimProc ExeMgr DMLProc DDLProc WriteEngineServer'
PROGS='StorageManager workernode controllernode PrimProc ExeMgr DMLProc DDLProc WriteEngineServer'
kill $(pidof $PROGS) > /dev/null
sleep 3
kill -9 $(pidof $PROGS) > /dev/null
@ -70,6 +70,7 @@ if [ -n "$systemctl" ] && [ $(running_systemd) -eq 0 ]; then
systemctl disable mcs-workernode > /dev/null 2>&1
systemctl disable mcs-writeengineserver > /dev/null 2>&1
systemctl disable mcs-loadbrm > /dev/null 2>&1
systemctl disable mcs-storagemanager > /dev/null 2>&1
rm -f /usr/lib/systemd/system/mariadb-columnstore.service
rm -f /lib/systemd/system/mariadb-columnstore.service
@ -89,6 +90,9 @@ if [ -n "$systemctl" ] && [ $(running_systemd) -eq 0 ]; then
rm -f /lib/systemd/system/mcs-writeengineserver.service
rm -f /usr/lib/systemd/system/mcs-loadbrm.service
rm -f /lib/systemd/system/mcs-loadbrm.service
rm -f /usr/lib/systemd/system/mcs-storagemanager.service
rm -f /lib/systemd/system/mcs-storagemanager.service
systemctl daemon-reload
else
chkconfig=`which chkconfig 2>/dev/null`

View File

@ -0,0 +1,60 @@
#!/usr/bin/env python3
import configparser
import subprocess
config = configparser.ConfigParser()
config.read('/etc/columnstore/storagemanager.cnf')
storage = config['ObjectStorage']['service']
region = config['S3']['region']
bucket = config['S3']['bucket']
loadbrm = '/usr/bin/load_brm /var/lib/columnstore/data1/systemFiles/dbrm/{0}'
brm_saves_current = ''
if storage.lower() == 's3' and not region.lower() == 'some_region' and not bucket.lower == 'some_bucket':
# load s3
brm = 'data1/systemFiles/dbrm/BRM_saves_current'
try:
brm_saves_current = subprocess.check_output(['smcat', brm])
except subprocess.CalledProcessError as e:
# will happen when brm file does not exist
pass
else:
import xml.etree.ElementTree as ET
tree = ET.parse('/etc/columnstore/Columnstore.xml')
root = tree.getroot()
pmCount = int(root.find("./SystemModuleConfig/ModuleCount3").text)
brm = '/var/lib/columnstore/data1/systemFiles/dbrm/BRM_saves_current'
if pmCount > 1:
# load multinode dbrm
try:
brm_saves_current = subprocess.check_output(['cat', brm])
if not brm_saves_current:
# local dbrm empty, need to pull from main node
pass
except subprocess.CalledProcessError as e:
# will happen when brm file does not exist
pass
else:
# load local dbrm
try:
brm_saves_current = subprocess.check_output(['cat', brm])
except subprocess.CalledProcessError as e:
# will happen when brm file does not exist
pass
if brm_saves_current:
cmd = loadbrm.format(brm_saves_current.decode('utf-8'))
try:
retcode = subprocess.call(cmd, shell=True)
if retcode < 0:
#print("Child was terminated by signal", -retcode, file=sys.stderr)
pass
except OSError as e:
#print("Execution failed:", e, file=sys.stderr)
pass

View File

@ -2,12 +2,11 @@
Description=loadbrm
PartOf=mcs-workernode.service
Before=mcs-workernode.service
ConditionPathExists=/var/lib/columnstore/data1/systemFiles/dbrm/BRM_saves_current
[Service]
Type=simple
Environment="SKIP_OAM_INIT=1"
ExecStart=/usr/bin/env bash -c "/usr/bin/load_brm /var/lib/columnstore/data1/systemFiles/dbrm/$(cat /var/lib/columnstore/data1/systemFiles/dbrm/BRM_saves_current)"
ExecStart=@ENGINE_BINDIR@/mcs-loadbrm.py
[Install]
WantedBy=mariadb-columnstore.service

View File

@ -0,0 +1,15 @@
#!/usr/bin/env python3
import configparser
import sys
config = configparser.ConfigParser()
config.read('/etc/columnstore/storagemanager.cnf')
storage = config['ObjectStorage']['service']
region = config['S3']['region']
bucket = config['S3']['bucket']
if storage.lower() == 's3' and not region.lower() == 'some_region' and not bucket.lower == 'some_bucket':
sys.exit(0)
sys.exit(1)

View File

@ -0,0 +1,16 @@
[Unit]
Description=storagemanager
PartOf=mcs-workernode.service
Before=mcs-workernode.service
ConditionPathExists=/etc/columnstore/storagemanager.cnf
# FailureAction="exit"
# FailureActionExitStatus=0
[Service]
Type=simple
ExecStartPre=@ENGINE_BINDIR@/mcs-start-storagemanager.py
ExecStart=/usr/bin/env bash -c "LD_PRELOAD=$(ldconfig -p | grep -m1 libjemalloc | awk '{print $1}') exec @ENGINE_BINDIR@/StorageManager"
[Install]
WantedBy=mariadb-columnstore.service
WantedBy=mcs-workernode.service