Jan
23
2013
--

Announcing Percona Server 5.5.29-29.4

Percona is glad to announce the release of Percona Server 5.5.29-29.4 on January 23rd, 2012 (Downloads are available here and from the Percona Software Repositories).

Based on MySQL 5.5.29, including all the bug fixes in it, Percona Server 5.5.29-29.4 is now the current stable release in the 5.5 series. All of Percona‘s software is open-source and free, all the details of the release can be found in the 5.5.29-29.4 milestone at Launchpad.

Bugs Fixed:

  • Fixed the upstream bug #68045 and ported a fix for the security vulnerability CVE-2012-4414 from the Percona Server 5.5.28-29.3. This bug fix replaces the upstream fix for the MySQL bug #66550. More details about this can be found in Stewart’s blogpost. Bug fixed #1049871 (Vlad Lesin).

Release notes for Percona Server 5.5.29-29.4 are available in our online documentation. Bugs can be reported on the launchpad bug tracker.

The post Announcing Percona Server 5.5.29-29.4 appeared first on MySQL Performance Blog.

Jan
23
2013
--

Read/Write Splitting with PHP Webinar Questions Followup

Today I gave a presentation on “Read/Write Splitting with PHP” for Percona Webinars.  If you missed it, you can still register to view the recording and my slides.

Thanks to everyone who attended, and especially to folks who asked the great questions.  I answered as many as I could during the session, but here are all the questions with my complete answers:

Q: I wasn’t able to start up the webinar until it was 20 minutes in progress. Is it possible to get a recording once it is over?

A: Yes, we will email a link to all webinar attendees with a recording of the webinar and a link to the slides within 24 hours.  Folks who did not attend the webinar can also visit the webinar registration page and get access to the recording and slides.

Q: Are there similar plugins or resources for Java based applications?

A: The recent versions of Connector/J include load-balancing and failover features, but these features don’t seem to measure slave lag.  They seem to assume that all slaves are ready to be queried all the time.

Another solution that could be used independently of application language would be MySQL Proxy with a RW Splitting plugin.  However, if the splitting is delegated to a middleware layer, we would need another method to choose a given query’s slave lag tolerance.  Perhaps embed the application’s choice in an SQL comment?

Q: Can the solution you proposed be used with Percona Xtradb Cluster. Or are there any other issues we should look for?

A: Percona XtraDB Cluster is a synchronous replication technology, therefore the slaves should never lag behind the master.  It’s not necessary to check the “seconds behind master” or the binlog execution position, because all nodes int the cluster are always caught up fully to the original writer.  The Doctrine class extensions I’m experimenting with are meant for environments that use traditional MySQL asynchronous replication.

edit: PXC is really a bit like semi-synchronous replication, in that changes are queued on all cluster nodes, but not executed synchronously.  Because of features like multi-threadeded apply, changes are executed more promptly than they would be in single-threaded MySQL replication.  Therefore all nodes stay in sync much more reliably.

Also, you can enable wsrep_causal_reads for a given session, so that SELECTs will block until all previously queued changes are executed.  Therefore you can have assurance that reads from a slave node will return results as current as reads from the original node where the change was made.

The bottom line is that PXC handles slave lag transparently, so the solution I described in this webinar isn’t necessary.

Q: For randomizing the slave requests, should we use some randomize function or HA proxy?

A: The Doctrine connection wrapper class randomly chooses one the slaves for you.  If the randomly-selected slave is not usable because it’s outside the application’s specified tolerance, then the wrapper class chooses another slave.  No slave is chosen more than once.  If no slaves pass the tolerance test, then the wrapper class executes the query against the master.

Q: What are advantages/disadvantages of filtering-out tables from replication in master side vs slave side?

A: You can configure filtering either on the master or the slave.  Master-side filtering records only a subset of changes to the binary log.  You could use this to reduce binary log growth, if you have some databases that don’t need scale-out or failover capability.  For example tables used for logging less critical information.  In this scenario, not all queries could scale out to slaves, because some of the data would exist only on the master.

Alternatively, you can filter on the slaves. Each slave downloads the full binlog containing all changes, but each slave only replays changes for a subset of the binlog, skipping the other binlog entries.  In this way, each slave could have an easier time keeping up with changes written by the master, and each slave would “specialize” by serving read queries for only specific databases.  In this scenario, you couldn’t pick a slave at random, your application would need to direct queries to the slave(s) that have a copy of the right database.

Q: Based on the example, I assume that PoC is based on tolerance type selection per connection. It would probably makes sense to improve it to query-level. As you mentioned, many applications require different tolerance levels per query.

A: Yes, that’s a good point.  I wrote the proof of concept code with a separate connection wrapper class for each tolerance mode, but another way to design it would be a single class that can switch between different modes on successive queries.

Q: Is RBR faster replicating vs SBR replication?  RBR is faster than statement based, correct?

A: Often that’s true, Row-Based Replication (RBR) can be faster than Statement-Based Replication (SBR).  But there are exception cases too, so we can’t make such a broad general statement.  It depends on the types of queries your application runs.

Q: Hello, was there any good experiences with MySQL Proxy (RW-splitting)?

A: Most solutions with MySQL Proxy I see have stern disclaimers against using it in production.  Even the official manual page for MySQL Proxy 0.8.2 still says: “MySQL Proxy is currently an Alpha release and should not be used within production environments.”  The plugin for RW Splitting also makes similar disclaimers.

I assume it’s practically impossible for a middleware product like MySQL Proxy to assure stability, given that its intended use encourages developers to write their own plugins in Lua.  They can’t be responsible for bugs in developers’ Lua plugins.  :-)

Q: Would it work with the ORM layer of Doctrine, considering it would only work for one unit of work?

A: Yes, if you layer an ORM on top of the DAL, this makes it inconvenient to choose the degree of slave lag tolerance as I have shown.  This is probably a good reason to redesign my prototype to use hints embedded in SQL comments, instead of instantiating different wrapper classes.

Q: Does storing the position in $_SESSION lead to local storage and limit scalabilty?

A: It depends how you store $_SESSION.  I have audited sites that stored $_SESSION in the MySQL database for persistence, but when we measured query load with pt-query-digest, we found that 30% of the database response time was solely due to updating the session table.  For best scalability, I’d recommend storing $_SESSION in an in-memory data store such as Memcached or APC.  Store in $_SESSION only values that are ephemeral and easily recreated.  Anything that needs to be persistent, store it more deliberately in a persistent database.

Q: Can you compare / contrast this approach with using a write-through cache?

A: The InnoDB buffer pool is effectively a type of write-through cache.  That is, when you change data on a given InnoDB page, the change is persisted immediately, but the page also resides in the buffer pool and it can serve subsequent queries.  This allow you speedy access to recently-changed data on a given database instance, as long as the page remains in the buffer pool.

But the read/write split solution is intended for cases where the query load is too high for a single database instance, and you need to scale out to multiple database instances.

Q: Isn’t opening multiple database connections to the master and then subsequently potentially a number of “unsafe” slaves going to be a high performance cost?

A: Connecting to a MySQL database isn’t a great performance cost, compared to the queries themselves.  If it is, then persistent connections can help with that.

By the way, we’re seeing reports that MySQL 5.6 non-persistent connections are much faster, so we have that to look forward to.

Q: What about write splitting (updates,inserts) on multiple MySQL servers? Or is it possible to split only read queries (select etc.)?

A: You can set up a pair of MySQL instances to replicate from each other, so you can write to either instance.  But you don’t gain much scale-out benefits from this, since both instances have to do approximately the same work to apply the changes.  In other words, you end up multiplying work instead of multiplying capacity.

Also, some care is necessary to work with this kind of dual-writer architecture, as my colleague Jay Janssen described in his recent webinar, “The Hazards of Multi-writing in a Dual-Master Setup.” I encourage you to watch the recording of Jay’s presentation.

Percona XtraDB Cluster reduces the hazards of multi-writing by keeping all the instances in sync continuously.

Q: If a slave is slow because of bandwidth issues, the seconds behind master will report zero seconds behind if the SQL thread is caught up and the IO thread is waiting.

A: Yes, the “seconds behind master” is really “seconds behind the latest binlog entry downloaded from the master,” which is a subtle distinction.  It means that the slave could have an inaccurate idea of how much it’s lagging, if there are more binary logs yet to download.  This can happen if the slave is offline for a while, or if the network between master and slave is slow or unreliable.

A solution to measure slave lag more accurately is to use pt-heartbeat, which inserts the system timestamp into a dummy table once per second on the master.  As these timestamp values replicate to a slave, you can compare the latest value inserted to the slave’s system clock and get a much more reliable measure of slave lag (assuming the system clocks on master and slave are in sync).  But I designed my proof of concept Doctrine classes not to assume use of pt-heartbeat.

Thanks again for attending my webinar!  Here are some more tips:

 

The post Read/Write Splitting with PHP Webinar Questions Followup appeared first on MySQL Performance Blog.

Jan
23
2013
--

Announcing Percona XtraBackup 2.0.5

Percona is glad to announce the release of Percona XtraBackup 2.0.5 on January 23rd, 2012. Downloads are available from our download site here and Percona Software Repositories.

This release is the current GA (Generally Available) stable release in the 2.0 series.

New Features:

  • New option --defaults-extra-file has been introduced. This option specifies from what extra file to read the default MySQL options before the standard defaults-file. It can be used to load the user/password combination for the dedicated backup user from a separate configuration file, to avoid storing it in the crontab or a script somewhere in the system.

Bugs Fixed:

  • In case of streaming backups, innobackupex would resume the XtraBackup process and then wait for it to finish before running UNLOCK TABLES. This caused database to be unnecessarily locked with FLUSH TABLES WITH READ LOCK. Innobackupex now waits only till log copying is finished to unlock the databases. Bug fixed #1055989 (Alexey Kopytov).
  • innobackupex error messages referencing the data directory have been extended to show the path of the data directory mentioned in the error message. Bug fixed #1089375 (Hartmut Holzgraefe).
  • Partitioned tables were not correctly handled by the --databases, --include, --tables-file options of innobackupex, and by the --tables and --tables-file options of XtraBackup. Fixed by removing the partition suffix (#P#…) before doing filtering. Bug fixed #711166 (Sergei Glushchenko).
  • When built-in compression was used, XtraBackup was doing unbuffered writes to the destination file or stream in very small chunks which in return caused inefficient I/O. Fixed by using a 1M buffer for output similar to the uncompressed backups. Bug fixed #1095249 (Alexey Kopytov).
  • Unnecessary long sleep() in innobackupex lead to FLUSH TABLES WITH READ LOCK taking too long. Fixed by replacing 2 seconds sleep interval with 100 milliseconds one. Bug fixed #1095551 (Sergei Glushchenko).
  • If innobackupex would crash it would leave the xtrabackup_suspended file on the filesystem. This could then cause innobackupex to think XtraBackup has suspended itself the moment it started, and then when XtraBackup actually does suspend itself, innobackupex would wait for it to end and wouldn’t re-remove the suspend file, leading to a wait deadlock. Fixed by removing the stale xtrabackup_suspended file when innobackupex is started. Bug fixed #1007446 (George Ormond Lorch III).
  • innobackupex would fail to recognize MariaDB 5.2 and MariaDB 5.3. Fixed by augmenting version checks in innobackupex. Bug fixed #733665 (Daniël van Eeden, Alexey Kopytov).

Other bug fixes: bug fixed #924492 (Alexey Kopytov), bug fixed #1097158 (Alexey Kopytov), bug fixed #1081882 (Alexey Kopytov), bug fixed #1096584 (Alexey Kopytov).

Release notes with all the bugfixes for Percona XtraBackup 2.0.5 are available in our online documentation. Bugs can be reported on the launchpad bug tracker.

The post Announcing Percona XtraBackup 2.0.5 appeared first on MySQL Performance Blog.

Jan
23
2013
--

Percona MySQL University, Raleigh just got better with AfterParty

We got a great response to our Percona MySQL University event in Raleigh With about a week to go before event we’re around 90% full, so if you plan to attend do not delay your registration until last minute. Also if you have registered before but can’t attend at this point please release your ticket so we can accommodate as many people as possible.

Number of people approached me about getting together for a drinks and dinner with Percona Team after the event and we’re happy to oblige. We’ll have Percona Mixer event at Flying Saucer Draught Emporium . If you plan on joining us please register for Percona Mixer at Percona MySQL University, Raleigh Eventbrite page so we can be sure we have space for everyone attending. You do not have to attend the day event to join Percona Mixer.

The post Percona MySQL University, Raleigh just got better with AfterParty appeared first on MySQL Performance Blog.

Jan
22
2013
--

Lovely blog award!

Lovely Blog Award Hello everyone. Whee, I’ve been tagged by the talented Lisa Orchard to receive this blog award! Thanks, Lisa. If you’re into mysteries, drop by Lisa’s site and check out her Super Spies books.

So, seven random things about me:

 

1. My favourite star is Sirius, that really bright star below and left of Orion. It’s official designation is Alpha Canis Majoris. I rarely go out at night without looking for it.

2. My favourite video game or computer game of all time is Defender by Williams. I mis-spent my youth mastering that game. :)

3. I am descended from Vikings, and a wealthy Jarl named Ing who lived in the Trondheim area of Norway.

4. The most magical place I have ever visited is the Great Wall of China. After arriving in the early morning, our small group of 10 had the whole place to ourselves (for a short while!)

5. I adore lightning storms, especially when huge sheets flicker across the sky. Alas, we get perhaps one a year here in San Diego.

6. I wear my wedding ring on my middle (longest) finger

7. One lifetime goal I am unlikely to ever achieve is to summit Everest. That mountain has always fascinated me since I was a child.

All right, enough of my secrets. :) I’m going to tag the following three authors to receive this award:

Vicky Limbert, author of the great read Lilith.

Heather Day Gilbert, author of an upcoming and fantastic-sounding novel about Vikings.

M. Pax, astronomer and author of the Backworlds and Hetty books.

 

Jan
22
2013
--

New Keynote Speakers and Sponsors and Applications Open for DotOrg Pavilion for Percona Live MySQL Conference and Expo

I’m pleased to announce the first of the Percona Live MySQL Conference and Expo 2013 keynote speakers and new sponsors including Amazon Web Services, Google, Clustrix, Scalebase, PalominoDB, Database Trends & Applications, and Linux Journal. We are also now accepting applications for the DotOrg Pavilion. Also, nominations are now being accepted for the 2013 MySQL Community Awards which will be given during the conference Community Networking Reception.

The 2012 Percona Live MySQL Conference and Expo featured sponsorship and speakers from some of the world’s most admired brands and was enthusiastically received by more than 1,000 attendees, many of whom praised the breadth and caliber of the sessions. The conference was so popular that we added a fourth day to the 2013 conference schedule. Super Saver pricing ends today, January 22.

Confirmed Keynote Presenters

We are pleased to announce the first three Percona Live MySQL Conference and Expo keynote speakers:

Matt Aslett of 451 Research will present the keynote “MySQL, YourSQL, NoSQL, NewSQL – the State of the MySQL Ecosystem”. You can help by participating in 451 Research’s 2013 Database survey.

Robert Hodges, CEO of Continuent, will leverage over 30 years of database and application engineering experience in his keynote entitled “Thinking Small About Big Data — How MySQL Can Thrive in the World of Massive Data Hype.”

Peter Zaitsev, CEO of Percona, will speak on the state of the MySQL ecosystem in his welcome address to attendees.

Call for DotOrg Pavilion Exhibitors Now Open

This year we will once again have a DotOrg Pavilion at the Percona Live MySQL Conference and Expo. The DotOrg Pavilion is a free expo hall space for non-commercial projects relevant to the MySQL community. Last year featured participating projects like phpMyAdmin, CentOS, Mozilla, MariaDB, Drizzle, and MySQL Sandbox. Applications close February 10.

Sponsors

I’m pleased to announce a number of new Percona Live MySQL Conference and Expo sponsors including Amazon Web Services, Google, Scalebase, Palomino DB, and Pythian which join a growing list of industry heavyweights who have joined to support the conference. Sponsors already committed to the event include:

• Diamond Plus: Amazon Web Services, Continuent
• Gold: Google
• Silver: Box, Clustrix, Couchbase, ParElastic, Scalebase, SkySQL
• Exhibitors: Akiban, Altoros, Booking.com, Codership, PalominoDB, Pythian, Sphinx, ScaleArc, STEC, Tokutek
• Media Sponsors: Database Trends & Applications, Linux Journal, O’Reilly, Web and PHP Magazine

2013 MySQL Community Awards

Nominations are now open for the 2013 MySQL Community Awards. The Awards are run by Henrik Ingo and Shlomi Noach. To nominate a deserving person, application or company, visit the OpenLife.cc website. Winners will be announced Wednesday, April 24, during the Percona Live MySQL Conference and Expo Community Reception. The deadline to submit nominations is January 31.

Super Saver Pricing Ends January 22

Super Saver Prices for the Percona Live MySQL Conference and Expo are available now. Super Saver rates end today, January 22, so act now.

If you are interested in keeping up with the latest conference happenings, you can register to receive email updates about the Percona Live MySQL Conference and Expo 2013.

The post New Keynote Speakers and Sponsors and Applications Open for DotOrg Pavilion for Percona Live MySQL Conference and Expo appeared first on MySQL Performance Blog.

Jan
21
2013
--

Percona Toolkit 2.1.9 bug raffle

Percona Toolkit 2.1.9 bug raffle

Percona Toolkit 2.1.9 bug raffle

Since we’re very busy working on Percona Toolkit 2.2 and other projects, I thought 2.1.8 (the current latest Percona Toolkit release) would be the last release in that series, but it introduced a new bug in pt-heartbeat (despite all the tool’s tests) that I’d like to fix.

A single bug fix is probably underkill for a full release (unless it’s a hotfix), so for 2.1.9 let’s fix whatever you want–our first* ever “bug raffle.”

“Space is limited”, so we can only take only take on a few bugs (let’s say 10 at most), depending on their complexity and ability to be reproduced.  If you have a bug** you wanted fixed in 2.1.9, please give its link in a comment.

I’ll go first: https://bugs.launchpad.net/percona-toolkit/+bug/1099665

* Maybe not the first: I have a vague memory of doing something similar for Maatkit.
** An actual bug, not a feature request.

The post Percona Toolkit 2.1.9 bug raffle appeared first on MySQL Performance Blog.

Jan
21
2013
--

Fun with the MySQL pager command

Last time I wrote about a few tips that can make you more efficient when using the command line on Unix. Today I want to focus more on pager.

The most common usage of pager is to set it to a Unix pager such as less. It can be very useful to view the result of a command spanning over many lines (for instance SHOW ENGINE INNODB STATUS):

mysql> pager less
PAGER set to 'less'
mysql> show engine innodb status\G
[...]

Now you are inside less and you can easily navigate through the result set (use q to quit, space to scroll down, etc).

Reminder: if you want to leave your custom pager, this is easy, just run pager:

mysql> pager
Default pager wasn't set, using stdout.

Or \n:

mysql> \n
PAGER set to stdout

But the pager command is not restricted to such basic usage! You can pass the output of queries to most Unix programs that are able to work on text. We have discussed the topic, but here are a few more examples.

Discarding the result set

Sometimes you don’t care about the result set, you only want to see timing information. This can be true if you are trying different execution plans for a query by changing indexes. Discarding the result is possible with pager:

mysql> pager cat > /dev/null
PAGER set to 'cat > /dev/null'

# Trying an execution plan
mysql> SELECT ...
1000 rows in set (0.91 sec)

# Another execution plan
mysql> SELECT ...
1000 rows in set (1.63 sec)

Now it’s much easier to see all the timing information on one screen.

Comparing result sets

Let’s say you are rewriting a query and you want to check if the result set is the same before and after rewrite. Unfortunately, it has a lot of rows:

mysql> SELECT ...
[..]
989 rows in set (0.42 sec)

Instead of manually comparing each row, you can calculate a checksum and only compare the checksum:

mysql> pager md5sum
PAGER set to 'md5sum'

# Original query
mysql> SELECT ...
32a1894d773c9b85172969c659175d2d  -
1 row in set (0.40 sec)

# Rewritten query - wrong
mysql> SELECT ...
fdb94521558684afedc8148ca724f578  -
1 row in set (0.16 sec)

Hmmm, checksums don’t match, something is wrong. Let’s retry:

# Rewritten query - correct
mysql> SELECT ...
32a1894d773c9b85172969c659175d2d  -
1 row in set (0.17 sec)

Checksums are identical, the rewritten query is much likely to produce the same result as the original one.

Cleaning up SHOW PROCESSLIST

If you have lots of connections on your MySQL, it’s very difficult to read the output of SHOW PROCESSLIST. For instance, if you have several hundreds of connections and you want to know how many connections are sleeping, manually counting the rows from the output of SHOW PROCESSLIST is probably not the best solution. With pager, it is straightforward:

mysql> pager grep Sleep | wc -l
PAGER set to 'grep Sleep | wc -l'
mysql> show processlist;
337
346 rows in set (0.00 sec)

This should be read as ’337 out 346 connections are sleeping’.

Slightly more complicated now: you want to know the number of connections for each status:

mysql> pager awk -F '|' '{print $6}' | sort | uniq -c | sort -r
PAGER set to 'awk -F '|' '{print $6}' | sort | uniq -c | sort -r'
mysql> show processlist;
    309  Sleep       
      3 
      2  Query       
      2  Binlog Dump 
      1  Command

Astute readers will have noticed that these questions could have been solved by querying INFORMATION_SCHEMA. For instance, counting the number of sleeping connections can be done with:

mysql> SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND='Sleep';
+----------+
| COUNT(*) |
+----------+
|      320 |
+----------+

and counting the number of connection for each status can be done with:

mysql> SELECT COMMAND,COUNT(*) TOTAL FROM INFORMATION_SCHEMA.PROCESSLIST GROUP BY COMMAND ORDER BY TOTAL DESC;
+-------------+-------+
| COMMAND     | TOTAL |
+-------------+-------+
| Sleep       |   344 |
| Query       |     5 |
| Binlog Dump |     2 |
+-------------+-------+

True, but:

  • It’s nice to know several ways to get the same result
  • Some of you may feel more comfortable with writing SQL queries, while others will prefer command line tools

Conclusion

As you can see, pager is your friend! It’s very easy to use and it can solve problems in an elegant and very efficient way. You can even write your custom script (if it is too complicated to fit in a single line) and pass it to the pager.

The post Fun with the MySQL pager command appeared first on MySQL Performance Blog.

Jan
20
2013
--

Stars get in my Eyes, by M. Pax

Pine Mountain Observatory Today, I’m excited to feature a post by M. Pax, sci-fi and urban fantasy author, and keen astronomer. OK, over to her. :)

Pine Mountain Observatory is my favorite place on Earth. Thirty miles east of Bend, OR, it sits near the summit of a 6400-foot mountain which once was either an island or part of the shoreline of the Great Basin. That was a sea that once covered the Western US about 10,000 years ago.

Central Oregon is one of the last great bastions of dark skies in the United States. Even in town, I can see more stars than I ever saw living anywhere else. Honestly, until we moved to the west coast, I had no idea it was even possible to see the Milky Way – that great swath of light with all the stars.

It looks like a cloud, but it’s not. It’s billions and billions of stars, so many stars that their light forms a cloud to our eyes, and it’s one of the spiral arms of the Milky Way, called the Orion arm. It’s the arm of the galaxy that our solar system is in, along with pretty much every star we can see by eye.

Pine Mountain is surrounded by great nature, and UFO and strange light sightings are common on the road that leads out to the observatory. One night I had my own experience with them and I called it a UMO [unidentified moving object], because they didn’t fly. Every night since, I’ve looked for those lights, but haven’t been blessed with another encounter. What were they? I’m pretty sure the truth would bore me, so it’s probably better not to know. Mystery is often more fun.

Cattle mutilations have taken place in the valley at the base of the mountain, real X-Files stuff with strange lights. One of our fellow volunteers had been a forest ranger and witnessed one. I asked him countless questions. Strange and interesting.

Big Foot sightings abound in the forests around us. I haven’t seen him, although I joke with all the visitors that the rock formations at the top of the summit are yeti houses. Sometimes they believe me. All great fodder for my stories. It all feeds me with so much inspiration.

M Pax and Telescope

Better yet, I’ve come to know the beauty of moonrise and the desert, the utter peace of sitting alone under the stars on a mountaintop, and the jaw-dropping awe of meteors shooting overhead. I peer through the telescopes at worlds far away, at stunning and stellar sights, and I have to wonder whether someone is looking back at me.

What are those worlds like? What do they know about the universe? Their perspective is vastly different from ours. If we lived in a globular cluster or closer to the center of the galaxy, we might have no idea that other galaxies existed. How would that change who we are?

Some of that leaks into my stories – the wonder, the strange, the dust [Central Oregon is very dusty]. What’s out there? Mulder says the truth is. And I wonder, what is the truth?


M. Pax

M. Pax is author of the sci-fi series, The Backworlds, and the new adult urban fantasy Hetty Locklear series. A Browncoat and SG fan, she’s also slightly obsessed with Jane Austen. In the summers she docents as a star guide at Pine Mountain Observatory where the other astronomers now believe she has the most extensive collection of moon photos in existence. No fear, there will be more next summer. She lives in stunning Central Oregon with the Husband Unit and two lovely, spoiled cats.

Contact M. Pax via her Website, Facebook or Twitter as @mpax1

She is also a member of Untethered Realms, a group of  friendly, like-minded spec-fic writers.


Backworlds Try The Backworlds for free. (Available on all e-readers)

[Graeme’s Note: This is a great read! Reminiscent of Firefly, a great tale of the gritty frontiers of space.]

In the far future, humanity settles the stars, bioengineering its descendents to survive in a harsh universe.

After the war with the Foreworlders, Backworlders scatter across the planets left. Competition is fierce and pickings are scant. Scant enough that Craze’s father decides to improve his fortunes by destroying his son.

Cut off from family and friends with little money and even less knowledge of the worlds beyond his own, Craze heads into an uncertain future. Boarding the transport to Elstwhere, he vows to make his father regret this day.

Jan
18
2013
--

Percona Server wins ‘Top Innovator in SQL Technologies’ award!

Percona Server Wins Developer Week 2013 Award, Named Top Innovator in SQL Technologies Category

Percona Server Wins Developer Week 2013 Award; Named Top Innovator in SQL Technologies Category

Percona Server has won a 2013 DeveloperWeek Best of Tech award, being named Top Innovator in the SQL Technologies category!

We’re proud to accept this award, which is determined by a combination of peer voting and review from an independent panel of judges. Thank you to everyone who voted for Percona Server!

From our press release: According to a 451 Research report titled, “MySQL vs. NoSQL and NewSQL: 2011-2015,” Percona Server is one of the most deployed alternatives to MySQL. Percona Server offers hosting providers advanced features that speed up searches, increase security, and provide administrators with more control over their Percona Server environment.

For more information about the award, see our press release Percona Wins 2013 DeveloperWeek Best of Tech Award.

The post Percona Server wins ‘Top Innovator in SQL Technologies’ award! appeared first on MySQL Performance Blog.

Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com