1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-29 08:21:15 +03:00

Got postConfigure to set up storagemanager correctly and disabled

the disk-check stuff for SM clusters.
This commit is contained in:
Patrick LeBlanc
2019-06-12 09:37:45 -05:00
parent 0ae0761e1a
commit 4ae09352d2
3 changed files with 110 additions and 9 deletions

View File

@ -935,6 +935,8 @@ int main(int argc, char* argv[])
} }
} }
} }
// perform single server install // perform single server install
if (singleServerInstall == "1") if (singleServerInstall == "1")
@ -4926,11 +4928,19 @@ bool storageSetup(bool amazonInstall)
if ( DBRootStorageType == "DataRedundancy") if ( DBRootStorageType == "DataRedundancy")
DataRedundancy = true; DataRedundancy = true;
sysConfig->setConfig("StorageManager", "Enabled", "N");
if ( reuseConfig == "y" ) if ( reuseConfig == "y" )
{ {
cout << "===== Storage Configuration = " + DBRootStorageType + " =====" << endl << endl; cout << "===== Storage Configuration = " + DBRootStorageType + " =====" << endl << endl;
if (hdfs) if (DBRootStorageType == "storagemanager")
{
hdfs = false;
sysConfig->setConfig("StorageManager", "Enabled", "Y");
sysConfig->setConfig("SystemConfig", "DataFilePlugin", "$INSTALLDIR/lib/libcloudio.so");
sysConfig->setConfig("SystemConfig", "DataFileEnvFile", "");
}
else if (hdfs)
{ {
//default //default
DataFileEnvFile = "setenv-hdfs-20"; DataFileEnvFile = "setenv-hdfs-20";
@ -5043,10 +5053,10 @@ bool storageSetup(bool amazonInstall)
cout << "----- Setup User Module MariaDB ColumnStore Data Storage Mount Configuration -----" << endl << endl; cout << "----- Setup User Module MariaDB ColumnStore Data Storage Mount Configuration -----" << endl << endl;
cout << "There are 2 options when configuring the storage: internal and external" << endl << endl; cout << "There are 2 options when configuring the storage: internal, and external" << endl << endl;
cout << " 'internal' - This is specified when a local disk is used for the Data storage." << endl << endl; cout << " 'internal' - This is specified when a local disk is used for the Data storage." << endl << endl;
cout << " 'external' - This is specified when the MariaDB ColumnStore Data directory is externally mounted." << endl << endl; cout << " 'external' - This is specified when the MariaDB ColumnStore Data directory is externally mounted." << endl << endl;
try try
{ {
UMStorageType = sysConfig->getConfig(InstallSection, "UMStorageType"); UMStorageType = sysConfig->getConfig(InstallSection, "UMStorageType");
@ -5074,7 +5084,7 @@ bool storageSetup(bool amazonInstall)
callFree(pcommand); callFree(pcommand);
} }
if ( storageType == "1" || storageType == "2") if ( storageType == "1" || storageType == "2" )
break; break;
cout << endl << "Invalid Entry, please re-enter" << endl << endl; cout << endl << "Invalid Entry, please re-enter" << endl << endl;
@ -5306,6 +5316,23 @@ bool storageSetup(bool amazonInstall)
else else
hadoopInstalled = "y"; hadoopInstalled = "y";
// check whether StorageManager is installed
Config *processConfig = Config::makeConfig((installDir + "/etc/ProcessConfig.xml").c_str());
string storageManagerLocation;
bool storageManagerInstalled = false;
// search the 'PROCESSCONFIG#' entries for the StorageManager entry
for (uint i = 1; i <= MAX_PROCESS; i++)
{
char blah[20];
sprintf(blah, "PROCESSCONFIG%d", i);
if (processConfig->getConfig(blah, "ProcessName") == "StorageManager")
{
storageManagerLocation = processConfig->getConfig(blah, "ProcessLocation");
break;
}
}
storageManagerInstalled = boost::filesystem::exists(storageManagerLocation);
// //
// get Backend Data storage type // get Backend Data storage type
// //
@ -5321,9 +5348,36 @@ bool storageSetup(bool amazonInstall)
if ( DBRootStorageType == "hdfs" ) if ( DBRootStorageType == "hdfs" )
storageType = "4"; storageType = "4";
if (DBRootStorageType == "storagemanager")
storageType = "5";
cout << endl << "----- Setup Performance Module DBRoot Data Storage Mount Configuration -----" << endl << endl; cout << endl << "----- Setup Performance Module DBRoot Data Storage Mount Configuration -----" << endl << endl;
cout << "Columnstore supports the following storage options..." << endl;
cout << " 1 - internal. This uses the linux VFS to access files and does " << endl <<
"not manage the filesystem." << endl;
cout << " 2 - external *. If you have other mountable filesystems you would " << endl <<
" like ColumnStore to use & manage, select this option." << endl;
cout << " 3 - GlusterFS * (NOTE: glusterd service must be running and enabled on all PMs.)" << endl;
cout << " 4 - HDFS *" << endl;
cout << " 5 - Storage Manager*" << endl;
cout << "* - This option enables data replication and server failover in a multi-node" << endl <<
" configuration." << endl;
cout << endl << "These options are available on this system: [1, 2";
if (glusterInstalled == "y" && singleServerInstall != "1")
cout << ", 3";
if (hadoopInstalled == "y")
cout << ", 4";
if (storageManagerInstalled)
cout << ", 5";
cout << "]" << endl;
prompt = "Select the type of data storage (" + storageType + ") > ";
#if 0
// pre-storagemanager version
if (( glusterInstalled == "n" || (glusterInstalled == "y" && singleServerInstall == "1")) && hadoopInstalled == "n" ) if (( glusterInstalled == "n" || (glusterInstalled == "y" && singleServerInstall == "1")) && hadoopInstalled == "n" )
{ {
cout << "There are 2 options when configuring the storage: internal or external" << endl << endl; cout << "There are 2 options when configuring the storage: internal or external" << endl << endl;
@ -5344,7 +5398,7 @@ bool storageSetup(bool amazonInstall)
if ( (glusterInstalled == "y" && singleServerInstall != "1") && hadoopInstalled == "y" ) if ( (glusterInstalled == "y" && singleServerInstall != "1") && hadoopInstalled == "y" )
{ {
cout << "There are 5 options when configuring the storage: internal, external, DataRedundancy, or hdfs" << endl << endl; cout << "There are 4 options when configuring the storage: internal, external, DataRedundancy, or hdfs" << endl << endl;
prompt = "Select the type of Data Storage [1=internal, 2=external, 3=DataRedundancy, 4=hdfs] (" + storageType + ") > "; prompt = "Select the type of Data Storage [1=internal, 2=external, 3=DataRedundancy, 4=hdfs] (" + storageType + ") > ";
} }
@ -5368,6 +5422,7 @@ bool storageSetup(bool amazonInstall)
cout << " directories to be controlled by the Hadoop Distributed File System (HDFS)." << endl; cout << " directories to be controlled by the Hadoop Distributed File System (HDFS)." << endl;
cout << " High Availability Server Failover is Supported in this mode." << endl << endl; cout << " High Availability Server Failover is Supported in this mode." << endl << endl;
} }
#endif
while (true) while (true)
{ {
@ -5380,6 +5435,23 @@ bool storageSetup(bool amazonInstall)
callFree(pcommand); callFree(pcommand);
} }
if ((storageType == "1" || storageType == "2") // these are always valid options
|| (glusterInstalled == "y" && singleServerInstall != "1" && storageType == "3") // allow gluster if installed
|| (hadoopInstalled == "y" && storageType == "4") // allow HDFS if installed
|| (storageManagerInstalled && storageType == "5") // allow storagemanager if installed
)
break;
// if it gets here the selection was invalid
if (noPrompting)
{
cout << endl << "Invalid selection" << endl << endl;
exit(1);
}
cout << endl << "Invalid selection, please re-enter" << endl << endl;
#if 0
old version
if ( ( glusterInstalled == "n" || (glusterInstalled == "y" && singleServerInstall == "1")) && hadoopInstalled == "n" ) if ( ( glusterInstalled == "n" || (glusterInstalled == "y" && singleServerInstall == "1")) && hadoopInstalled == "n" )
{ {
if ( storageType == "1" || storageType == "2") if ( storageType == "1" || storageType == "2")
@ -5425,11 +5497,12 @@ bool storageSetup(bool amazonInstall)
if ( noPrompting ) if ( noPrompting )
exit(1); exit(1);
} }
#endif
} }
if (storageType != "3" && DataRedundancy) if (storageType != "3" && DataRedundancy)
{ {
cout << "WARNING: This system was configured with ColumnStore DataRedundancy storage." << endl; cout << "WARNING: This system was previously configured with ColumnStore DataRedundancy storage." << endl;
cout << " Before changing from DataRedundancy to another storage type," << endl; cout << " Before changing from DataRedundancy to another storage type," << endl;
cout << " existing data should be migrated to the targeted storage." << endl; cout << " existing data should be migrated to the targeted storage." << endl;
cout << " Please refer to the ColumnStore documentation for more information." << endl; cout << " Please refer to the ColumnStore documentation for more information." << endl;
@ -5488,6 +5561,9 @@ bool storageSetup(bool amazonInstall)
DBRootStorageType = "hdfs"; DBRootStorageType = "hdfs";
break; break;
} }
case 5:
DBRootStorageType = "storagemanager";
break;
} }
//set DBRootStorageType //set DBRootStorageType
@ -5830,6 +5906,13 @@ bool storageSetup(bool amazonInstall)
return false; return false;
} }
} }
else if (storageType == "5")
{
hdfs = false;
sysConfig->setConfig("StorageManager", "Enabled", "Y");
sysConfig->setConfig("SystemConfig", "DataFilePlugin", "$INSTALLDIR/lib/libcloudio.so");
sysConfig->setConfig("SystemConfig", "DataFileEnvFile", "");
}
else else
{ {
hdfs = false; hdfs = false;

View File

@ -314,8 +314,13 @@ int main (int argc, char** argv)
pthread_create (&cpuMonitorThread, NULL, (void* (*)(void*)) &cpuMonitor, NULL); pthread_create (&cpuMonitorThread, NULL, (void* (*)(void*)) &cpuMonitor, NULL);
//Launch Disk Monitor Thread //Launch Disk Monitor Thread
pthread_t diskMonitorThread; config::Config *_config = config::Config::makeConfig();
pthread_create (&diskMonitorThread, NULL, (void* (*)(void*)) &diskMonitor, NULL); string storageType = _config->getConfig("Installation", "DBRootStorageType");
if (storageType != "storagemanager")
{
pthread_t diskMonitorThread;
pthread_create (&diskMonitorThread, NULL, (void* (*)(void*)) &diskMonitor, NULL);
}
//Launch DB Health Check Thread //Launch DB Health Check Thread
// pthread_t dbhealthMonitorThread; // pthread_t dbhealthMonitorThread;

View File

@ -6316,7 +6316,20 @@ int ProcessMonitor::checkDataMount()
return API_SUCCESS; return API_SUCCESS;
} }
else if (DBRootStorageType == "storagemanager")
{
/* StorageManager isn't running yet.
IDBFileSystem &fs = IDBFactory::getFs(IDBDataFile::CLOUD);
bool up = fs.filesystemIsUp();
if (!up)
{
log.writeLog(__LINE__, "ERROR: StorageManager is down, check its log files", LOG_TYPE_CRITICAL);
return API_FAILURE;
}
*/
return API_SUCCESS;
}
//go unmount disk NOT assigned to this pm //go unmount disk NOT assigned to this pm
unmountExtraDBroots(); unmountExtraDBroots();