Re: need help from the list admin
william drescher <[email protected]>
| Newsgroups | gmane.comp.db.mysql.general |
|---|---|
| Message-ID | <[email protected]> |
On 3/22/2016 7:49 AM, Lentes, Bernd wrote: > > > ----- On Mar 22, 2016, at 12:07 PM, william drescher [email protected] wrote: > >> sent for Bernd, and to see if it works from another sender >> ---------------------------------------------- >> Lentes, Bernd wrote: >> Hi, >> >> i know that there is a list dedicated to replication, but when >> you have a look in the archive it's nearly complete empty. Really >> not busy. >> So i hope it's ok if i ask here. >> we have a web app which runs a MySQL DB and dynamic webpages with >> perl and apache httpd. Webpages serve reading and writing into >> the db. The db is important for our own work flow, so i'd like to >> make it HA. I have two HP servers and will use SLES 11 SP4 64bit >> as OS. MySQL is 5.5.47. For HA i'd like to use pacemaker, which >> is available in SLES High Availibility Extension. I have >> experience in linux, but i'm not a database administrator nor >> developer. HA is important for us, we don't have performance >> problems. >> My first idea was to run the web app and the db in a virtual >> machine on the host and in case of a failure of one host >> pacemaker would run the vm on the other host. VM would be stored >> on a FC SAN. I stopped following this idea. I have bought a book >> about HA: "..." from Oliver Liebel. It's only available in >> german. But i can recommend it, it's very detailed and well >> explained. >> He proposed to have two hosts, and on each is running a MySQL >> instance as master AND slave. But it's not a "real multi master >> solution", because pacemaker takes care that the IP for the web >> app just points to one master. So i don't have the multi-master >> problems with concurrent inserts (i believe). >> His idea is that host A is master for the slave on host B, and >> host B is the master for the slave on host A. OK ? >> Let's imagining that the IP to the web app points to host A, >> inserts are done to the master on host A and replicated to the >> slave on host B. Now host A has problems, pacemaker redirects the >> IP to host B, and everything should be fine. >> What do you think about this setup ? Where is the advantage to a >> "classical Master/Slave Replication" ? How should i configure >> log-slave-updates in this scenario ? >> Let's imagine i have two hosts again: Host A is master, host B is >> slave. Nothing else. No real or pseudo "Multi-Master". IP points >> to host A. Host A has problems, pacemaker recognizes it, promotes >> B to master and pivot the IP. Everything should be fine. Where is >> the disadvantage of this setup compared to the "Multi-Master >> Replication" in the book ? The OCF ressource agent for mysql >> should be able to handle the mysql stuff and the RA for the IP >> pivots the IP. >> >> Now some dedicated questions to replication. I read a lot in the >> official documentation, but some things are not clear to me. >> In our db we have MyISAM and InnoDB tables. >> >> From what i read i'd prefer row based replication. The doc says >> is the safest approach. But there seems to be still some problems: >> >> The doc says: "For tables using the MYISAM storage engine, a >> stronger lock is required on the slave for INSERT statements when >> applying them as row-based events to the binary log than when >> applying them as statements. This means that concurrent inserts >> on MyISAM tables are not supported when using row-based >> replication." >> What does this exactly mean ? Concurrent inserts in MyISAM-tables >> are not possible if using RBL ? Or unsafe in the meaning they >> create inconsistencies ? >> >> "RBL (Row Based Logging) and synchronization of nontransactional >> tables. When many rows are affected, the set of changes is split >> into several events; when the statement commits, all of these >> events are written to the binary log. When executing on the >> slave, a table lock is taken on all tables involved, and then >> the rows are applied in batch mode. (This may or may not be >> effective, depending on the engine used for the slave抯 copy of >> the table.)" >> What does that mean ? Effective ? Is it creating inconsistencies >> ? Or just not effective in the sense of slow or inconvinient ? >> >> Or should i prefer MIXED for binlog_format ? >> >> The doc says: " If a statement is logged by row and the session >> that executed the statement has any temporary tables, logging by >> row is used for all subsequent statements (except for those >> accessing temporary tables) until all temporary tables in use by >> that session are dropped. >> This is true whether or not any temporary tables are actually >> logged. Temporary tables cannot be logged using row-based format; >> thus, once row-based logging is used, all subsequent statements >> using that table are unsafe. The server approximates this >> condition by treating all statements executed during the session >> as unsafe until the session no longer holds any temporary tables." >> What does that mean ? Unsafe ? Causing inconsistencies ? Problem >> with SBL or RBL ? >> >> The doc says: "Due to concurrency issues, a slave can become >> inconsistent when a transaction contains updates to both >> transactional and nontransactional tables. MySQL tries to >> preserve causality among these statements by writing >> nontransactional statements to the transaction cache, which is >> flushed upon commit. However, problems arise when modifications >> done to nontransactional tables on behalf of a transaction become >> immediately visible to other connections because these changes >> may not be written immediately into the binary log. >> Beginning with MySQL 5.5.2, the >> binlog_direct_non_transactional_updates variable offers one >> possible workaround to this issue. By default, this variable is >> disabled. Enabling binlog_direct_non_transactional_updates causes >> updates to nontransactional tables to be written directly to the >> binary log, rather than to the transaction cache. >> binlog_direct_non_transactional_updates works only for statements >> that are replicated using the statement-based binary logging >> format; that is, it works only when the value of binlog_format is >> STATEMENT, or when binlog_format is MIXED and a given statement >> is being replicated using the statement-based format. This >> variable has no effect when the binary log format is ROW, or when >> binlog_format is set to MIXED and a given statement is replicated >> using the row-based format. >> Important: >> Before enabling this variable, you must make certain that there >> are no dependencies between transactional and nontransactional >> tables; an example of such a dependency would be the statement >> INSERT INTO myisam_table SELECT * FROM innodb_table. Otherwise, >> such statements are likely to cause the slave to diverge from the >> master." >> Does that mean that "Due to concurrency issues, a slave can >> become inconsistent when a transaction contains updates to both >> transactional and nontransactional tables" is also a problem for >> RBL ? >> "... you must make certain that there are no dependencies between >> transactional and nontransactional tables; an example of such a >> dependency would be the statement INSERT INTO myisam_table SELECT >> * FROM innodb_table. Otherwise, such statements are likely to >> cause the slave to diverge from the master." >> Are these statements problems when using RBL ? >> >> Thanks for any answer. >> >> >> Bernd >> > > Hi William, > > thanks for the try. Good idea ! > Did you change anything ? > > > Bernd Yes, in the original document there were some characters that were put on the screen as asian pictograph characters. I replaced them with periods: I have bought a book about HA: "..." from Oliver Liebel And I found the same characters in your sig and removed them. bill -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/mysql