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

commit from develop, MCOL-455, MCOL-527, AND MCOL-528

This commit is contained in:
david hill
2017-01-24 09:15:01 -06:00
parent 09fa56d7cb
commit f4e3b7299d
4 changed files with 154 additions and 66 deletions

View File

@ -29,8 +29,9 @@
<Name>redistributeData</Name>
<Desc1>Redistribute table data accross all dbroots to balance disk usage</Desc1>
<Arg1>START to begin a redistribution</Arg1>
<Arg2>STOP to stop redistribution before completion</Arg2>
<Arg3>STATUS to to view statistics and progress</Arg3>
<Arg2>START REMOVE n to being a redistribution where data is removed from dbroot 'n'</Arg2>
<Arg3>STOP to stop redistribution before completion</Arg3>
<Arg4>STATUS to to view statistics and progress</Arg4>
</Cmd4>
<Cmd5>
<Name>findObjectFile</Name>

View File

@ -5987,7 +5987,7 @@ namespace oam
}
//attach and format volumes
device = "/dev/sdf";
device = "/dev/xvdf";
string localInstance = getEC2LocalInstance();

View File

@ -666,64 +666,6 @@ int main(int argc, char *argv[])
exit(1);
}
cout << "NOTE: The MariaDB ColumnStore Schema Sync feature will replicate all of the" << endl;
cout << " schemas and InnoDB tables across the User Module nodes. This feature can be enabled" << endl;
cout << " or disabled, for example, if you wish to configure your own replication post installation." << endl << endl;
try {
MySQLRep = sysConfig->getConfig(InstallSection, "MySQLRep");
}
catch(...)
{}
if ( MySQLRep == "y" )
mysqlRep = true;
string answer = "y";
while(true) {
if ( mysqlRep )
prompt = "MariaDB ColumnStore Schema Sync feature is Enabled, do you want to leave enabled? [y,n] (y) > ";
else
prompt = "MariaDB ColumnStore Schema Sync feature, do you want to enable? [y,n] (y) > ";
pcommand = callReadline(prompt.c_str());
if (pcommand) {
if (strlen(pcommand) > 0) answer = pcommand;
callFree(pcommand);
}
if ( answer == "y" || answer == "n" ) {
cout << endl;
break;
}
else
cout << "Invalid Entry, please enter 'y' for yes or 'n' for no" << endl;
if ( noPrompting )
exit(1);
}
if ( answer == "y" ) {
mysqlRep = true;
MySQLRep = "y";
}
else
{
mysqlRep = false;
MySQLRep = "n";
}
try {
sysConfig->setConfig(InstallSection, "MySQLRep", MySQLRep);
}
catch(...)
{}
if ( !writeConfig(sysConfig) ) {
cout << "ERROR: Failed trying to update MariaDB ColumnStore System Configuration file" << endl;
exit(1);
}
switch ( IserverTypeInstall ) {
case (oam::INSTALL_COMBINE_DM_UM_PM): // combined #1 - dm/um/pm on a single server
{
@ -813,6 +755,75 @@ int main(int argc, char *argv[])
break;
}
// check for Schema Schema is Local Query wasnt selected
if (!pmwithum)
{
cout << "NOTE: The MariaDB ColumnStore Schema Sync feature will replicate all of the" << endl;
cout << " schemas and InnoDB tables across the User Module nodes. This feature can be enabled" << endl;
cout << " or disabled, for example, if you wish to configure your own replication post installation." << endl << endl;
try {
MySQLRep = sysConfig->getConfig(InstallSection, "MySQLRep");
}
catch(...)
{}
if ( MySQLRep == "y" )
mysqlRep = true;
string answer = "y";
while(true) {
if ( mysqlRep )
prompt = "MariaDB ColumnStore Schema Sync feature is Enabled, do you want to leave enabled? [y,n] (y) > ";
else
prompt = "MariaDB ColumnStore Schema Sync feature, do you want to enable? [y,n] (y) > ";
pcommand = callReadline(prompt.c_str());
if (pcommand) {
if (strlen(pcommand) > 0) answer = pcommand;
callFree(pcommand);
}
if ( answer == "y" || answer == "n" ) {
cout << endl;
break;
}
else
cout << "Invalid Entry, please enter 'y' for yes or 'n' for no" << endl;
if ( noPrompting )
exit(1);
}
if ( answer == "y" ) {
mysqlRep = true;
MySQLRep = "y";
}
else
{
mysqlRep = false;
MySQLRep = "n";
}
try {
sysConfig->setConfig(InstallSection, "MySQLRep", MySQLRep);
}
catch(...)
{}
}
else
{ //Schema Sync is default as on when Local Query is Selected
mysqlRep = true;
MySQLRep = "y";
try {
sysConfig->setConfig(InstallSection, "MySQLRep", MySQLRep);
}
catch(...)
{}
}
if ( !writeConfig(sysConfig) ) {
cout << "ERROR: Failed trying to update MariaDB ColumnStore System Configuration file" << endl;
exit(1);

View File

@ -5272,6 +5272,8 @@ int ProcessMonitor::runMasterDist(std::string& password, std::string& slaveModul
string cmd = startup::StartUp::installDir() + "/bin/rsync.sh " + ipAddr + " " + password + " " + startup::StartUp::installDir() + " 1 > /tmp/master-dist_" + slaveModule + ".log";
system(cmd.c_str());
log.writeLog(__LINE__, "cmd = " + cmd, LOG_TYPE_DEBUG);
string logFile = "/tmp/master-dist_" + slaveModule + ".log";
if (!oam.checkLogStatus(logFile, "FAILED"))
log.writeLog(__LINE__, "runMasterDist: Success rsync to module: " + slaveModule, LOG_TYPE_DEBUG);
@ -5501,12 +5503,49 @@ bool ProcessMonitor::amazonVolumeCheck(int dbrootID)
string status = oam.getEC2VolumeStatus(volumeName);
if ( status == "attached" ) {
string cmd = "mount " + deviceName + " " + startup::StartUp::installDir() + "/mysql/db -t ext2 -o defaults > /dev/null";
string cmd;
if ( rootUser)
cmd = "mount " + deviceName + " " + startup::StartUp::installDir() + "/mysql/db -t ext2 -o noatime,nodiratime,noauto > /tmp/um_mount.log";
else
cmd = "sudo mount " + deviceName + " " + startup::StartUp::installDir() + "/mysql/db -t ext2 -o noatime,nodiratime,noauto,user > /tmp/um_mount.log";
system(cmd.c_str());
log.writeLog(__LINE__, "mount cmd: " + cmd, LOG_TYPE_DEBUG);
cmd = "chown mysql:mysql -R " + startup::StartUp::installDir() + "/mysql/db";
if ( rootUser)
cmd = "chown -R mysql:mysql " + startup::StartUp::installDir() + "/mysql/db";
else
cmd = "sudo chown -R " + USER + ":" + USER + " " + startup::StartUp::installDir() + "/mysql/db";
system(cmd.c_str());
log.writeLog(__LINE__, "chown cmd: " + cmd, LOG_TYPE_DEBUG);
//check for setup files in mysq/db, if not, create them for a new install
string file = startup::StartUp::installDir() + "/mysql/db/mysql";
ifstream new_file (file.c_str());
if (!new_file) {
string cmd;
cmd = startup::StartUp::installDir() + "/bin/post-mysqld-install --installdir=" + startup::StartUp::installDir() + " > /tmp/post-mysqld-install.log 2>&1";
log.writeLog(__LINE__, "cmd: " + cmd, LOG_TYPE_DEBUG);
int rtnCode = system(cmd.c_str());
if (WEXITSTATUS(rtnCode) != 0) {
log.writeLog(__LINE__, "amazonVolumeCheck function failed, post-mysqld-install error" , LOG_TYPE_ERROR);
return false;
}
else
log.writeLog(__LINE__, "amazonVolumeCheck function, post-mysqld-install passed" , LOG_TYPE_DEBUG);
cmd = startup::StartUp::installDir() + "/bin/post-mysql-install --installdir=" + startup::StartUp::installDir() + " > /tmp/post-mysql-install.log";;
log.writeLog(__LINE__, "cmd: " + cmd, LOG_TYPE_DEBUG);
rtnCode = system(cmd.c_str());
if (WEXITSTATUS(rtnCode) != 0) {
log.writeLog(__LINE__, "amazonVolumeCheck function failed, post-mysql-install error" , LOG_TYPE_ERROR);
return false;
}
else
log.writeLog(__LINE__, "amazonVolumeCheck function, post-mysql-install passed" , LOG_TYPE_DEBUG);
}
log.writeLog(__LINE__, "amazonVolumeCheck function successfully completed, volume attached: " + volumeName, LOG_TYPE_DEBUG);
return true;
@ -5531,12 +5570,49 @@ bool ProcessMonitor::amazonVolumeCheck(int dbrootID)
{}
if (oam.attachEC2Volume(volumeName, deviceName, instanceName)) {
string cmd = "mount " + deviceName + " " + startup::StartUp::installDir() + "/mysql/db -t ext2 -o defaults > /dev/null";
string cmd;
if ( rootUser)
cmd = "mount " + deviceName + " " + startup::StartUp::installDir() + "/mysql/db -t ext2 -o noatime,nodiratime,noauto > /tmp/um_mount.log";
else
cmd = "sudo mount " + deviceName + " " + startup::StartUp::installDir() + "/mysql/db -t ext2 -o noatime,nodiratime,noauto,user > /tmp/um_mount.log";
system(cmd.c_str());
log.writeLog(__LINE__, "mount cmd: " + cmd, LOG_TYPE_DEBUG);
cmd = "chown mysql:mysql -R " + startup::StartUp::installDir() + "/mysql/db";
if ( rootUser)
cmd = "chown -R mysql:mysql " + startup::StartUp::installDir() + "/mysql/db";
else
cmd = "sudo chown -R " + USER + ":" + USER + " " + startup::StartUp::installDir() + "/mysql/db";
system(cmd.c_str());
log.writeLog(__LINE__, "chown cmd: " + cmd, LOG_TYPE_DEBUG);
//check for setup files in mysq/db, if not, create them for a new install
string file = startup::StartUp::installDir() + "/mysql/db/mysql";
ifstream new_file (file.c_str());
if (!new_file) {
string cmd;
cmd = startup::StartUp::installDir() + "/bin/post-mysqld-install --installdir=" + startup::StartUp::installDir() + " > /tmp/post-mysqld-install.log 2>&1";
log.writeLog(__LINE__, "cmd: " + cmd, LOG_TYPE_DEBUG);
int rtnCode = system(cmd.c_str());
if (WEXITSTATUS(rtnCode) != 0) {
log.writeLog(__LINE__, "amazonVolumeCheck function failed, post-mysqld-install error" , LOG_TYPE_ERROR);
return false;
}
else
log.writeLog(__LINE__, "amazonVolumeCheck function, post-mysqld-install passed" , LOG_TYPE_DEBUG);
cmd = startup::StartUp::installDir() + "/bin/post-mysql-install --installdir=" + startup::StartUp::installDir() + " > /tmp/post-mysql-install.log";;
log.writeLog(__LINE__, "cmd: " + cmd, LOG_TYPE_DEBUG);
rtnCode = system(cmd.c_str());
if (WEXITSTATUS(rtnCode) != 0) {
log.writeLog(__LINE__, "amazonVolumeCheck function failed, post-mysql-install error" , LOG_TYPE_ERROR);
return false;
}
else
log.writeLog(__LINE__, "amazonVolumeCheck function, post-mysql-install passed" , LOG_TYPE_DEBUG);
}
return true;
}
@ -5809,7 +5885,7 @@ int ProcessMonitor::checkDataMount()
string fileName = dbroot + "/OAMdbrootCheck";
ofstream fout(fileName.c_str());
if (!fout) {
log.writeLog(__LINE__, "ERROR: Failed test write to DBRoot: " + dbroot + " " + strerror(errno), LOG_TYPE_ERROR);
log.writeLog(__LINE__, "ERROR: Failed test write to DBRoot: " + dbroot, LOG_TYPE_ERROR);
return API_FAILURE;
}