You've already forked mariadb-columnstore-engine
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:
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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`
|
||||
|
60
oam/install_scripts/mcs-loadbrm.py
Normal file
60
oam/install_scripts/mcs-loadbrm.py
Normal 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
|
@ -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
|
||||
|
15
oam/install_scripts/mcs-start-storagemanager.py
Normal file
15
oam/install_scripts/mcs-start-storagemanager.py
Normal 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)
|
16
oam/install_scripts/mcs-storagemanager.service.in
Normal file
16
oam/install_scripts/mcs-storagemanager.service.in
Normal 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
|
Reference in New Issue
Block a user