You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by mccartneyc <mc...@uberether.com> on 2017/12/27 13:32:57 UTC

ActiveMQ database persistance with MariaDB

Good morning,

We have ActiveMQ setup and connected to 3 databases, 1 Master and 2 slaves
and running MariaDB. If the Master goes down for any reason, the 2 slaves
will error out and go out of sync instead of one of them becoming the new
Master. To work around this during updates, we update the two slaves, reboot
them, change the DNS records pointing to the master so that they point to
one of the other DBs, then make sure they are all sync'd. Then update the
master, reboot, and undo the DNS changes and make sure they are all sync'd
again.

This isn't horrible to do, but it's not ideal. Looking through documentation
I see there is persistance configuration settings that can be made, but not
seeing anything for MariaDB and how that would need to be setup.

The persistance adapter in the config xml is below. 

<persistenceAdapter>
            

              <jdbcPersistenceAdapter dataDirectory="activemq-data"
dataSource="#mysql-ds"/>

        </persistenceAdapter>



--
Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-f2341805.html

Re: ActiveMQ database persistance with MariaDB

Posted by Tim Bain <tb...@alumni.duke.edu>.
I spent a little time this evening going through the JDBC persistence code,
and I see no code that is specific to MariaDB and no code that appears to
handle database connection failures by seamlessly failing over to a slave
node. So if your question is simply "is there a feature to allow seamless
failover when the master node of a MariaDB cluster dies?" then the answer
is "No, but you can submit an enhancement request in JIRA if that's
something you'd find useful." If that's not your question, please clarify
what you're asking by answering the questions from my last email.

Tim

On Fri, Dec 29, 2017 at 4:02 PM, Tim Bain <tb...@alumni.duke.edu> wrote:

> Can you please give more details about your setup? Are you using one
> broker and one MariaDB cluster with three nodes? Or do you have three
> ActiveMQ brokers that each have a standalone MariaDB instance? Or something
> else?
>
> I think you're describing a clustered MariaDB setup where the broker stays
> up and you're expecting it to failover to another database node when the
> master database node goes down. If so, I'd have to check the
> MariaDB-specific code when I get back to connectivity (I'm currently on a
> plane), but another user recently asked about seamless failover in a MSSQL
> Server cluster and I couldn't find any code that would allow it, so it's
> possible that it's not been implemented for MariaDB either.
>
> But if that's really what you're asking about, then I don't understand
> what you mean by "the 2 slaves will error out and go out of sync". Why
> would the slave database nodes error out (or if they are, how is that
> related to ActiveMQ, and why aren't you asking on a MariaDB mailing list?),
> and what exactly do you mean by the slave nodes "go out of sync" (and
> again, doesn't that mean that your MariaDB cluster isn't working properly
> rather than that ActiveMQ isn't working properly)? So maybe my
> interpretation of your question as relating to a single ActiveMQ broker
> against a multi-node MariaDB cluster is wrong.
>
> Either way, you need to give more details about exactly what you're seeing
> if we're going to be able to help. A better description of your exact
> configuration would be a good start, as would a better description of
> exactly what the failure behavior is (exact error messages rather than
> generic phrases like "error out", for example). Unless you aren't looking
> for support on the errors you're seeing and your only question is "can I
> configure ActiveMQ to seamlessly failover to a slave MariaDB node when the
> master dies?", in which case I think the answer is "no" but I'll confirm
> that once I get some time at a computer this weekend.
>
> Tim
>
> On Dec 27, 2017 4:32 PM, "mccartneyc" <mc...@uberether.com> wrote:
>
>> Good morning,
>>
>> We have ActiveMQ setup and connected to 3 databases, 1 Master and 2 slaves
>> and running MariaDB. If the Master goes down for any reason, the 2 slaves
>> will error out and go out of sync instead of one of them becoming the new
>> Master. To work around this during updates, we update the two slaves,
>> reboot
>> them, change the DNS records pointing to the master so that they point to
>> one of the other DBs, then make sure they are all sync'd. Then update the
>> master, reboot, and undo the DNS changes and make sure they are all sync'd
>> again.
>>
>> This isn't horrible to do, but it's not ideal. Looking through
>> documentation
>> I see there is persistance configuration settings that can be made, but
>> not
>> seeing anything for MariaDB and how that would need to be setup.
>>
>> The persistance adapter in the config xml is below.
>>
>> <persistenceAdapter>
>>
>>
>>               <jdbcPersistenceAdapter dataDirectory="activemq-data"
>> dataSource="#mysql-ds"/>
>>
>>         </persistenceAdapter>
>>
>>
>>
>> --
>> Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-f2341805
>> .html
>>
>

Re: ActiveMQ database persistance with MariaDB

Posted by Tim Bain <tb...@alumni.duke.edu>.
Can you please give more details about your setup? Are you using one broker
and one MariaDB cluster with three nodes? Or do you have three ActiveMQ
brokers that each have a standalone MariaDB instance? Or something else?

I think you're describing a clustered MariaDB setup where the broker stays
up and you're expecting it to failover to another database node when the
master database node goes down. If so, I'd have to check the
MariaDB-specific code when I get back to connectivity (I'm currently on a
plane), but another user recently asked about seamless failover in a MSSQL
Server cluster and I couldn't find any code that would allow it, so it's
possible that it's not been implemented for MariaDB either.

But if that's really what you're asking about, then I don't understand what
you mean by "the 2 slaves will error out and go out of sync". Why would the
slave database nodes error out (or if they are, how is that related to
ActiveMQ, and why aren't you asking on a MariaDB mailing list?), and what
exactly do you mean by the slave nodes "go out of sync" (and again, doesn't
that mean that your MariaDB cluster isn't working properly rather than that
ActiveMQ isn't working properly)? So maybe my interpretation of your
question as relating to a single ActiveMQ broker against a multi-node
MariaDB cluster is wrong.

Either way, you need to give more details about exactly what you're seeing
if we're going to be able to help. A better description of your exact
configuration would be a good start, as would a better description of
exactly what the failure behavior is (exact error messages rather than
generic phrases like "error out", for example). Unless you aren't looking
for support on the errors you're seeing and your only question is "can I
configure ActiveMQ to seamlessly failover to a slave MariaDB node when the
master dies?", in which case I think the answer is "no" but I'll confirm
that once I get some time at a computer this weekend.

Tim

On Dec 27, 2017 4:32 PM, "mccartneyc" <mc...@uberether.com> wrote:

> Good morning,
>
> We have ActiveMQ setup and connected to 3 databases, 1 Master and 2 slaves
> and running MariaDB. If the Master goes down for any reason, the 2 slaves
> will error out and go out of sync instead of one of them becoming the new
> Master. To work around this during updates, we update the two slaves,
> reboot
> them, change the DNS records pointing to the master so that they point to
> one of the other DBs, then make sure they are all sync'd. Then update the
> master, reboot, and undo the DNS changes and make sure they are all sync'd
> again.
>
> This isn't horrible to do, but it's not ideal. Looking through
> documentation
> I see there is persistance configuration settings that can be made, but not
> seeing anything for MariaDB and how that would need to be setup.
>
> The persistance adapter in the config xml is below.
>
> <persistenceAdapter>
>
>
>               <jdbcPersistenceAdapter dataDirectory="activemq-data"
> dataSource="#mysql-ds"/>
>
>         </persistenceAdapter>
>
>
>
> --
> Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-
> f2341805.html
>