tag:blogger.com,1999:blog-38123606591493235172024-03-12T20:19:50.549-06:00sqlhjalpUnknownnoreply@blogger.comBlogger142125tag:blogger.com,1999:blog-3812360659149323517.post-57619510555872186542012-12-03T17:17:00.001-07:002012-12-03T17:17:38.835-07:00Meet the MySQL Experts Podcast: MySQL Performance Schema<br />
<div class="separator" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;">
<a href="http://streaming.oracle.com/ebn/podcasts/media/12869390_MySQL-Performance-Schema_120312.mp3"><img border="0" src="http://4.bp.blogspot.com/-5cG9_FPiBkI/UJvSCFZ62lI/AAAAAAAAAL0/Qd1SXSzZQCg/s300/meetthemysqlexperts.jpeg" /></a></div>
<br />
<br />
<br />
<br />
The latest "Meet the MySQL Experts" Podcast is <a href="http://streaming.oracle.com/ebn/podcasts/media/12869390_MySQL-Performance-Schema_120312.mp3">now available</a>. This month we talk with <a href="http://www.markleith.co.uk/">Mark Leith</a> about the <a href="http://dev.mysql.com/doc/refman/5.6/en/performance-schema.html">MySQL Performance Schema</a>. <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<span style="font-size: small;">Additional </span>Reference Urls:<br />
<ul>
<li><h1 id="site-title">
<span style="font-size: small;"><span style="font-weight: normal;"><a href="http://www.markleith.co.uk/" rel="home" title="Mark Leith">Mark Leith</a> </span></span></h1>
</li>
<li><h2 class="entry-title">
<span style="font-size: small;"><span style="font-weight: normal;"><a href="http://www.markleith.co.uk/2012/07/24/a-mysql-replication-load-average-with-performance-schema/" rel="bookmark" title="Permalink to A MySQL Replication Load Average with Performance Schema">A MySQL Replication Load Average with Performance Schema</a></span></span></h2>
</li>
<li><h2 class="entry-title">
<span style="font-size: small;"><span style="font-weight: normal;"><a href="http://www.markleith.co.uk/2012/07/13/monitoring-processes-with-performance-schema-in-mysql-5-6/" rel="bookmark" title="Permalink to Monitoring Processes with Performance Schema in MySQL 5.6">Monitoring Processes with Performance Schema in MySQL 5.6</a></span></span></h2>
</li>
<li><h2 class="entry-title">
<span style="font-size: small;"><span style="font-weight: normal;"><a href="http://www.markleith.co.uk/2012/07/04/new-ps_helper-pages/" rel="bookmark" title="Permalink to New ps_helper pages">New ps_helper pages</a></span></span></h2>
</li>
<li><h2 class="entry-title">
<span style="font-size: small;"><span style="font-weight: normal;"><a href="http://www.markleith.co.uk/2012/07/09/helper-functions-for-ps_helper/" rel="bookmark" title="Permalink to Helper Functions for ps_helper">Helper Functions for ps_helper</a> </span></span></h2>
</li>
<li><h2 class="entry-title">
<span style="font-size: small;"><span style="font-weight: normal;"><a href="http://www.markleith.co.uk/2012/07/04/mysql-performance-schema-statement-digests/" rel="bookmark" title="Permalink to MySQL Performance Schema Statement Digests">MySQL Performance Schema Statement Digest<span style="font-size: small;">s</span></a> </span></span></h2>
</li>
<li><h2 class="entry-title">
<span style="font-size: small;"><span style="font-weight: normal;">From MySQ<span style="font-size: small;">L Connect </span><a href="https://oracleus.activeevents.com/connect/sessionDetail.ww?SESSION_ID=10472">Improving Performance with the MySQL Performance Schema</a> by <a class="speakerProfile" href="https://oracleus.activeevents.com/connect/speakerDetail.ww?PERSON_ID=A3E3E7D0562F198EB51A970203B51559&tclass=popup" id="17639">Jesper Krogh - Senior MySQL Support Engineer,
Oracle </a></span></span></h2>
<ul>
<li><a class="download" href="http://www.myexpospace.com/oracle2012/smupload/scloader.cfm?SCID=4d9e3f72-5d79-4ddc-9c88-be8e315d5e90">HOL10472_PDF_10472_0002.pdf</a></li>
<li><a class="download" href="http://www.myexpospace.com/oracle2012/smupload/scloader.cfm?SCID=548f6572-823a-4968-a2a0-ffec668c5eff">HOL10472_PDF_10472_0001.pdf</a> </li>
</ul>
<h2 class="entry-title">
<span style="font-size: small;"><span style="font-weight: normal;"> </span></span></h2>
<h2 class="entry-title">
<span style="font-size: small;"><span style="font-weight: normal;"><span style="font-size: small;">I also ha<span style="font-size: small;">d a recent blog post that touched on <a href="http://sqlhjalp.blogspot.com/2012/11/show-processlist-still.html">Show processlist and Perf</a><span style="font-size: small;"><span style="font-size: small;"><a href="http://sqlhjalp.blogspot.com/2012/11/show-processlist-still.html">ormance Sh</a><span style="font-size: small;"><a href="http://sqlhjalp.blogspot.com/2012/11/show-processlist-still.html">ema</a>. </span></span></span></span></span></span></span> </h2>
</li>
</ul>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-70545918171588843532012-11-30T10:22:00.000-07:002013-05-02T12:48:53.875-06:00MySQL user authenticationI was looking around on the <a href="http://forums.mysql.com/">MySQL forums</a> when I ran across this <a href="http://forums.mysql.com/read.php?34,574753,574753#msg-574753">post</a> and it got me thinking. First, thank you to Scott for helping in the community forum. But also about how some still have issues with MySQL user authentication. So I thought I would put together a simple quick post about MySQL user authentication.<br />
<br />
The forum post I mentioned above talks about user connection issues and how a user "<i>is likely the record that is getting used by MySQL</i>."<br />
<br />
Well, lets review a simple example to ensure that we always will know what user is being authenticated by MySQL.<br />
<br />
First we build out a few options for users.<br />
<code><br />
CREATE USER 'foo'@'localhost' IDENTIFIED BY 'some_pass';<br />
CREATE USER '%'@'localhost' IDENTIFIED BY 'some_pass';<br />
CREATE USER 'foo'@'%' IDENTIFIED BY 'some_pass';<br />
<br />
GRANT SELECT, INSERT, DELETE ON *.* TO 'foo'@'localhost';<br />
GRANT SELECT, INSERT, DELETE ON *.* TO '%'@'localhost';<br />
GRANT SELECT, INSERT, DELETE ON *.* TO 'foo'@'%';<br />
FLUSH PRIVILEGES;<br />
<br />
mysql> select User, Host,Password, Select_priv, Insert_priv, Delete_priv From user Where User = 'foo'\G<br />
*************************** 1. row ***************************<br />
User: foo<br />
Host: localhost<br />
Password: *BF06A06D69EC935E85659FCDED1F6A80426ABD3B<br />
Select_priv: Y<br />
Insert_priv: Y<br />
Delete_priv: Y<br />
*************************** 2. row ***************************<br />
User: foo<br />
Host: %<br />
Password: *BF06A06D69EC935E85659FCDED1F6A80426ABD3B<br />
Select_priv: Y<br />
Insert_priv: Y<br />
Delete_priv: Y<br />
</code><br />
<br />
Some might look at this and say that we have a duplicate user and that localhost is not needed, so their 1st reaction is to remove it.<br />
<br />
<code><br />
DROP USER 'foo'@'localhost';<br />
</code><br />
<br />
Then they end up have user permission/connection issues and are confused as to why?<br />
<br />
Always use "CURRENT_USER();" so you can see who your being authenticated as. USER() -- is the name given by the client. <br />
<br />
<br />
<code><br />
mysql> SELECT USER(), CURRENT_USER();<br />
+---------------+----------------+<br />
| USER() | CURRENT_USER() |<br />
+---------------+----------------+<br />
| foo@localhost | foo@% |<br />
+---------------+----------------+<br />
</code><br />
<br />
So based on the CURRENT_USER result we realize that we need to look at other accounts. <br />
<code><br />
mysql> select User, Host,Password, Select_priv, Insert_priv, Delete_priv From user Where Host = 'localhost'\G<br />
*************************** 1. row ***************************<br />
User: %<br />
Host: localhost<br />
Password: *BF06A06D69EC935E85659FCDED1F6A80426ABD3B<br />
Select_priv: Y<br />
Insert_priv: Y<br />
Delete_priv: Y<br />
*************************** 2. row ***************************<br />
User: root<br />
Host: localhost<br />
Password: *2447D497B9A6A15F2776055CB2D1E9F86758182F<br />
Select_priv: Y<br />
Insert_priv: Y<br />
Delete_priv: Y<br />
</code><br />
<br />
<br />
The problem was not 'foo'@'localhost' but instead the problem is '%'@'localhost'. MySQL will authenticate on Host 1st before it checks the User. So since it found a quick match to '%'@'localhost' we ended up with:<br />
<br />
<code><br />
mysql -u foo -p<br />
<br />
SELECT CURRENT_USER();<br />
+----------------+<br />
| CURRENT_USER() |<br />
+----------------+<br />
| foo@% |<br />
+----------------+<br />
</code><br />
<br />
Using '%'@'localhost' is never a good idea in my opinion. You always want to lock the database down to User and Host/ip. A wild card as part of an IP address I am ok with as well. ie: 'foo'@'192.168.0.%' <br />
<br />
This is a very simple example but the point is still a valid one. Control the permission, users and hosts with a watchful eye.<br />
<br />
<br />
Keep in mind the <a href="http://dev.mysql.com/doc/refman/5.6/en/mysql-secure-installation.html">mysql_secure_installation</a> options for a more secure server as well.<br />
<br />
<code><br />
# mysql_secure_installation<br />
<br />
<br />
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!<br />
<br />
<br />
In order to log into MySQL to secure it, we'll need the current<br />
password for the root user. If you've just installed MySQL, and<br />
you haven't set the root password yet, the password will be blank,<br />
so you should just press enter here.<br />
<br />
Enter current password for root (enter for none): <br />
OK, successfully used password, moving on...<br />
<br />
Setting the root password ensures that nobody can log into the MySQL<br />
root user without the proper authorisation.<br />
<br />
You already have a root password set, so you can safely answer 'n'.<br />
<br />
Change the root password? [Y/n] n<br />
... skipping.<br />
<br />
By default, a MySQL installation has an anonymous user, allowing anyone<br />
to log into MySQL without having to have a user account created for<br />
them. This is intended only for testing, and to make the installation<br />
go a bit smoother. You should remove them before moving into a<br />
production environment.<br />
<br />
Remove anonymous users? [Y/n] y<br />
... Success!<br />
<br />
Normally, root should only be allowed to connect from 'localhost'. This<br />
ensures that someone cannot guess at the root password from the network.<br />
<br />
Disallow root login remotely? [Y/n] y<br />
... Success!<br />
<br />
By default, MySQL comes with a database named 'test' that anyone can<br />
access. This is also intended only for testing, and should be removed<br />
before moving into a production environment.<br />
<br />
Remove test database and access to it? [Y/n] y<br />
- Dropping test database...<br />
... Success!<br />
- Removing privileges on test database...<br />
... Success!<br />
<br />
Reloading the privilege tables will ensure that all changes made so far<br />
will take effect immediately.<br />
<br />
Reload privilege tables now? [Y/n] y<br />
... Success!<br />
<br />
Cleaning up...<br />
<br />
<br />
<br />
All done! If you've completed all of the above steps, your MySQL<br />
installation should now be secure.<br />
<br />
Thanks for using MySQL!<br />
</code><br />
<br />
<br />
Helpful urls :<br />
<br />
<ul>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/user-names.html">User Names and Passwords</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/adding-users.html">Adding User Accounts </a></li>
<li><a href="http://mysqlblog.fivefarmers.com/2012/11/08/system-user-authentication-plugin/">System user authentication plugin</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/pluggable-authentication.html">Pluggable Authentication</a></li>
<li> <a href="http://dev.mysql.com/doc/refman/5.5/en/pam-authentication-plugin.html">The PAM Authentication Plugin </a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/mysql-secure-installation.html">MySQL Installation Security </a></li>
<li><a href="http://dave-stokes.blogspot.com/2010/11/mysql-55-authentication-goodies.html">MySQL 5.5 Authentication Goodies </a></li>
</ul>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-67323581794893020322012-11-22T01:03:00.000-07:002012-11-22T01:04:40.667-07:00SHOW PROCESSLIST... still ?So a couple of blogs posts have come out recently that got me curious to do a little more digging on how I might actually use "SHOW PROCESSLIST".
Btw those blogs posts are:<br />
<ul>
<li><a href="http://www.markleith.co.uk/2012/07/13/monitoring-processes-with-performance-schema-in-mysql-5-6/">Monitoring Processes with Performance Schema in MySQL 5.6 by Mark</a> </li>
<li><a href="http://www.xaprb.com/blog/2012/10/11/show-processlist-in-mysql-5-6/">SHOW PROCESSLIST in MySQL 5.6 by Baron</a> </li>
</ul>
So we all know how this works:<br />
<br />
<code>Server version: 5.6.8-rc-log MySQL Community Server (GPL)<br />
<br />
MySQL 5.6.8 RC> show processlist\G<br />
*************************** 1. row ***************************<br />
Id: 20007<br />
User: root<br />
Host: localhost<br />
db: test<br />
Command: Query<br />
Time: 0<br />
State: executing<br />
Info: select 10000<br />
*************************** 2. row ***************************<br />
Id: 4<br />
User: root<br />
Host: localhost<br />
db: NULL<br />
Command: Query<br />
Time: 0<br />
State: init<br />
Info: show processlist<br />
2 rows in set (0.00 sec)<br />
</code><br />
That is quick and easy. It give you the ID, user , host , state and time running. It also shows the command so your able to take review any obvious issues or take it and execute an explain so you can check for indexes. In a normal database you will have a lot more rows and have to parse out information accordingly to find what your after. How many rows are acceptable is dependant on the application and database.
A simple start by using"pager" is one way to at least be able to see the information available, when you might have 200+ rows of information for example.<br />
<br />
<code>pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.<br />
MySQL 5.6.8 RC> pager more<br />
PAGER set to 'more' # Turns it on<br />
MySQL 5.6.8 RC> show processlist\G<br />
<br />
MySQL 5.6.8 RC> pager<br />
Default pager wasn't set, using stdout. # turns it off<br />
</code><br />
You can less as well but this is just an example and a starting point.<br />
<br />
In Mark's blog he points how issues with SHOW PROCESSLIST like stealing connections, non-blocking and views. He talks about creating a view with information from the tables within the performance_schema and information_schema so we can gather more information in a non-blocking way. So if started to just dig around some might think that the events_statements_current would be a replacement ( seen below). But as you can see below it is not, lots of information but not a direct replacement.
<code> </code><br />
<code>MySQL 5.6.8 RC> select * from events_statements_current\G<br />
<br />
*************************** 2. row ***************************<br />
THREAD_ID: 90033<br />
EVENT_ID: 334676<br />
END_EVENT_ID: NULL<br />
EVENT_NAME: statement/com/Query<br />
SOURCE: mysqld.cc:913<br />
TIMER_START: 3807813684782000<br />
TIMER_END: NULL<br />
TIMER_WAIT: NULL<br />
LOCK_TIME: 0<br />
SQL_TEXT: select a+a+a+a+a+a+a+a+a+34673 from bench1<br />
DIGEST: NULL<br />
DIGEST_TEXT: NULL<br />
CURRENT_SCHEMA: test<br />
OBJECT_TYPE: NULL<br />
OBJECT_SCHEMA: NULL<br />
OBJECT_NAME: NULL<br />
OBJECT_INSTANCE_BEGIN: NULL<br />
MYSQL_ERRNO: 0<br />
RETURNED_SQLSTATE: NULL<br />
MESSAGE_TEXT: NULL<br />
ERRORS: 0<br />
WARNINGS: 0<br />
ROWS_AFFECTED: 0<br />
ROWS_SENT: 0<br />
ROWS_EXAMINED: 0<br />
CREATED_TMP_DISK_TABLES: 0<br />
CREATED_TMP_TABLES: 0<br />
SELECT_FULL_JOIN: 0<br />
SELECT_FULL_RANGE_JOIN: 0<br />
SELECT_RANGE: 0<br />
SELECT_RANGE_CHECK: 0<br />
SELECT_SCAN: 0<br />
SORT_MERGE_PASSES: 0<br />
SORT_RANGE: 0<br />
SORT_ROWS: 0<br />
SORT_SCAN: 0<br />
NO_INDEX_USED: 0<br />
NO_GOOD_INDEX_USED: 0<br />
NESTING_EVENT_ID: NULL<br />
NESTING_EVENT_TYPE: NULL<br />
2 rows in set (0.00 sec) <br />
</code><br />
So instead of digging across all the tables, while taking phone calls and etc... I will just check out the <a href="http://www.markleith.co.uk/ps_helper/">ps_helper</a> information that <a href="http://www.markleith.co.uk/ps_helper/">Mark has available</a>.<br />
<br />
First per <a href="http://www.markleith.co.uk/2012/07/13/monitoring-processes-with-performance-schema-in-mysql-5-6/">Mark's blog</a> update the setup_consumers table;
<code>
MySQL 5.6.8 RC> update </code><br />
<br />
<code>setup_consumers set ENABLED = 'YES' WHERE NAME IN ('events_stages_current','events_stages_history','events_statements_history','events_waits_current','events_waits_history');
<br />
MySQL 5.6.8 RC> SELECT * FROM setup_consumers;<br />
+--------------------------------+---------+<br />
| NAME | ENABLED |<br />
+--------------------------------+---------+<br />
| events_stages_current | YES |<br />
| events_stages_history | YES |<br />
| events_stages_history_long | NO |<br />
| events_statements_current | YES |<br />
| events_statements_history | YES |<br />
| events_statements_history_long | NO |<br />
| events_waits_current | YES |<br />
| events_waits_history | YES |<br />
| events_waits_history_long | NO |<br />
| global_instrumentation | YES |<br />
| thread_instrumentation | YES |<br />
| statements_digest | YES |<br />
+--------------------------------+---------+<br />
12 rows in set (0.00 sec)<br />
mysql -p < /tmp/ps_helper_56.sql_.txt <br />
</code><br />
( Btw I had to take the processlist_full view from Mark's blog as was not in the ps_helper_56.sql_.txt file at the time I wrote this blog. )<br />
<br />
<code>MySQL 5.6.8 RC> use ps_helper<br />
MySQL 5.6.8 RC> select * from processlist_full \G </code><br />
<code>*************************** 2. row ***************************<br />
thd_id: 180043<br />
conn_id: 180024<br />
user: root@localhost<br />
db: test<br />
command: Query<br />
state: freeing items<br />
time: 0<br />
current_statement: select a+a+a+a+a+a+a+a+a+53833 from bench1<br />
last_statement: NULL<br />
last_statement_latency: NULL<br />
lock_latency: 33.00 µs<br />
rows_examined: 2<br />
rows_sent: 2<br />
rows_affected: 0<br />
tmp_tables: 0<br />
tmp_disk_tables: 0<br />
full_scan: YES<br />
last_wait: wait/io/table/sql/handler<br />
last_wait_latency: 618.26 ns<br />
source: handler.cc:2715<br />
</code><br />
I know have the information I was reviewing before with additional information. I like the "full_scan" field included into this so you can see if indexes are being used right away.<br />
<br />
So the perks overall are, by taking the ps_helper code you should be able to easily install the views and not have to piece all of the different information together. All of that work has been done for you. Would I use the views all the time? No. SHOW PROCESSLIST will be just fine for me a lot of the time for now. I will take this and have it available, because when you do need it, it will be great information to have. I also think that once installed and available it will be a tool that will slowly be used more and more for debugging issues and concerns. Great work guys.<br />
<br />
Some other show processlist references to note:<br />
<ul>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/show-processlist.html">http://dev.mysql.com/doc/refman/5.6/en/show-processlist.html</a></li>
<li><a href="http://www.chriscalender.com/?tag=show-processlist">http://www.chriscalender.com/?tag=show-processlist</a></li>
<li><a href="http://www.mysqlperformanceblog.com/2011/03/08/how-to-debug-long-running-transactions-in-mysql/">http://www.mysqlperformanceblog.com/2011/03/08/how-to-debug-long-running-transactions-in-mysql/</a></li>
</ul>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-845674275649932172012-11-19T09:17:00.000-07:002012-11-19T09:17:55.509-07:00Thank you Davi and TwitterJust a quick note to send a big thank you to Davi Arnaut from Twitter. He has continued to support and contribute bug fixes for MySQL and the following bugs have all been accepted. <br />
<br />
Bug #<a href="http://bugs.mysql.com/bug.php?id=65469">65469</a> Infinite loop when opening a corrupted table <br />
Bug #<a href="http://bugs.mysql.com/bug.php?id=65692">65692</a> Deadlock between START SLAVE and setting a system variable <br />
Bug #<a href="http://bugs.mysql.com/bug.php?id=65715">65715</a> Wrong connection ID (thread ID) in the general and slow query logs <br />
Bug #<a href="http://bugs.mysql.com/bug.php?id=56240">56240 </a>please write proper dates to the error log<br />
Bug #<a href="http://bugs.mysql.com/bug.php?id=67156">67156</a> Sporadic query cache related crash in pthread_rwlock_init()<br />
<br />
A big thank you and we look forward to more contributions from Davi and the others from the MySQL Community. Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-5670435275541181802012-11-13T12:49:00.000-07:002012-11-13T16:12:47.689-07:00Oracle’s MySQL OEM Tech Tour - Miami <span style="font-size: small;"><a href="http://www.oracle.com/webapps/events/ns/EventsDetail.jsp?p_eventId=160985&src=7635949&src=7635949&Act=37"><span class="bodycopy"><span class="bodycopy"><b><b>Oracle’s MySQL OEM Tech Tour - Miam<span style="font-size: small;">i :</span> </b></b></span></span></a></span><br />
<br />
<span class="bodycopy"><span class="bodycopy"><b>Tuesday, December 11, 2012</b><br />10:00 AM – 2:00 PM</span></span><br />
<br />
<span class="bodycopy"><span class="bodycopy"><span class="bodycopy"><span class="bodycopy"><b>Oracle Office</b><br />6505 Blue Lagoon Dr., Suite 400<br />Miami, FL 33126 Rm: DEMO-4004</span></span> </span></span><br />
<br />
<span class="bodycopy"><span class="bodycopy"><span class="bodycopy"><span class="bodycopy"></span></span></span></span><br />
<span class="bodycopy"><span class="bodycopy"><b>Embedding MySQL:<br />Higher Application Performance and Streamlined Development with MySQL Embedded</b></span></span><br />
<span class="bodycopy"><span class="bodycopy">Join
us and get tips directly from the MySQL technical experts on how to
better develop, integrate, secure, and tune MySQL for your application.<br /> <br />MySQL
is not only the most popular open source database for Web applications,
it's also a popular embedded database relied on by over 3,000 ISVs and
technology providers around the world such as Adobe, Dell, Sage and
Symantec. Whether for distributed on-premise applications or hosted
SaaS offerings, MySQL is ideally suited for use as an embedded
database.<br /><br />Come and learn how to leverage MySQL's unique
architecture, development tools and newly released features to speed
your engineering efforts with MySQL and ensure that your application
performs at its peak. Topics include how to: </span></span><br />
<ul type="disc">
<li><span class="bodycopy"><span class="bodycopy">Make the most of MySQL's Architecture</span></span></li>
<li><span class="bodycopy"><span class="bodycopy">Streamline development and QA with MySQL Tools</span></span></li>
<li><span class="bodycopy"><span class="bodycopy">Secure your customers' data with New Security Features</span></span></li>
<li><span class="bodycopy"><span class="bodycopy">Improve performance with Optimization and Performance Tuning tips </span></span></li>
</ul>
<span class="bodycopy"> </span><br />
<b><span style="font-size: x-small;"><span style="font-size: small;"><a href="http://www.oracle.com/webapps/events/ns/EventsDetail.jsp?p_eventId=160985&src=7635949&src=7635949&Act=37">Register Now!</a></span></span></b>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-38373464194808412792012-11-13T09:55:00.000-07:002013-05-02T12:51:03.012-06:00The server quit without updating PID fileWith MySQL 5.6.8 RC available more and more people will start to test installs and upgrades. This often comes up for some people so I hope this helps some. <br />
<br />
If you seeing the error "The server quit without updating PID file" then obviously something recently changed on your environment.<br />
<br />
So lets take it step by step:<br />
<br />
# /etc/init.d/mysql start<br />
Starting MySQL..<a href="https://www.google.com/search?q=The+server+quit+without+updating+the+PID+file">The server quit without updating the PID file</a> (/var/lib/mysql/localhost.localdomain.pid).<br />
<br />
While
yes people do say just move the my.cnf file and restart the database to by pass this
error... You need to understand why. Why would moving the my.cnf allow mysql to start?
Check the error logs that is how and why you will be able to fix it and get it restarted. <br />
<br />
Issue 1:<br />
"Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist."<br />
<br />
So this is a result of a bad MySQL upgrade, most likely. You can start MySQL by avoiding the grants and keeping your my.cnf in place. <br />
<br />
# /etc/init.d/mysql start --skip-grant<br />
Starting MySQL.. [ OK ]<br />
<br />
You also need to fix the missing grants tables. <br />
# mysql_install_db <br />
Installing MySQL system tables...<br />
OK<br />
Filling help tables...<br />
OK<br />
<br />
Issue 2:<br />
InnoDB: Error: data file /var/lib/mysql/ibdata1 is of a different size<br />
<br />
So your my.cnf did change and innodb_data_file_path is now a different size than before. So you need to put back or remove the ibdata files so they can be rebuilt; the later of course will remove the data.<br />
<br />
<br />
These are just two simple examples but if you take your time and look into the log file data you will find the reason why MySQL might not start. Moving the my.cnf is not the answer. <br />
<br />
Additional References:<br />
<a href="http://dev.mysql.com/doc/refman/5.6/en/error-log.html">The Error Log </a><br />
<a href="http://ronaldbradford.com/blog/monitoring-mysql-the-error-log-2009-09-16/">Monitoring MySQL – The error log</a><br />
<a href="http://www.mysqlperformanceblog.com/2012/03/26/how-to-diagnose-errors-in-the-mysql-error-log/">How to diagnose errors in the MySQL error log</a><br />
<br />
<br />
<br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-82571402845530711452012-11-09T16:32:00.000-07:002012-11-09T16:32:04.199-07:00MySQL monitoring, backups and recoveryBeing a MySQL DBA is more than just being able to understand the <a href="http://dev.mysql.com/doc/refman/5.6/en/using-explain.html">explain command to optimize a query</a>. The best optimized queries in the world are worthless with the database is down.<br />
<br />
Some of the big responsibilities with being a MySQL DBA include monitoring, backup and recovery. This is a high level overview of those topics. <br />
<br />
<b>Monitoring</b>:<br />
<br />
A single monitor is just not good enough. If you are running a <a href="http://www.nagios.org/">Nagios</a> server with <a href="http://exchange.nagios.org/directory/Plugins/Databases/MySQL">the MySQL plugins </a>that is a great start. This should not be your only solution. The first thing that should be added is another remote <a href="http://www.nagios.org/">Nagios</a> server to monitor the 1st master <a href="http://www.nagios.org/">Nagios</a> monitor. After all if the monitor goes down how do you know?<br />
<br />
When running a revenue generating MySQL Server it is easy to suggest using the <a href="http://www.mysql.com/products/enterprise/monitor.html">MySQL Enterprise Monitor</a>. I have used the MySQL Enterprise Monitor as an additional resource for monitoring. It helps you <a href="http://sqlhjalp.blogspot.com/2012/10/keyser-soze-in-mysql.html">spot trends</a> as well as offer suggestions for tuning. <br />
<br />
Monitor your logs. In order to be able to recover, you need to understand what happened. Monitoring log is more than just the error log. You need to watch the slow_query_log, error_log as well as OS logs. Knowing how to gather everything from network stats to memory or raid status is key. <br />
<br />
Monitor your reports. Put in place events || etls || checks to validate reporting numbers. Every application is different so this is a custom solution per application but be able to get valid notifications when key reporting numbers fall under thresholds. This could be an early warning sign to other issues.<br />
<br />
Monitor your backup logs and sizes. If you fail to watch the sizes of your backups as well as the logged output then I wish you the best of luck. Something like an upgrade could change your backup procedure. While you consider it to still be running just fine, maybe they error out now? A simple cron job that executes a script to record file sizes and checks for errors can put the output into a the database. Then another script can be used for reporting on that file size output. You will then have all the trends of file sizes to make positive thresholds. <br />
<br />
Take out the human factor. If all the monitoring notifications go to one person, then that is a single point of failure itself. Make sure fine tune notifications to remove false positives and alert more than one person. Text messages to smart phones are not enough. People are allowed to sleep and it is very easy to sleep through a txt message. I enjoy the old school pager because it simply works. If you can take advantage of <a href="http://www.asterisk.org/">asterisks</a> then use it. A phone call wakes people up more than just a txt message.<br />
<br />
This quick overview highlights that monitoring is more than just a single entity. It is a vast process that should never be taken for granted. <br />
<br />
<b>Backups</b>:<br />
MySQL backups are the process that everyone knows is a good idea. The problem is how many people actually do it effectively. Meaning that they work, tested, and do not harm a live revenue generating site.<br />
<br />
<a href="http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html">mysqldump</a> is an effective tool for backups when it is not a live system. Stopping a slave and doing a mysqldump then restarting a slave is a very safe method for your system. The problem is that to many applications or entities either take to long to do a dump and rarely tested when it is done.<br />
<br />
<a href="https://dev.mysql.com/doc/workbench/en/mysqldbexport.html">mysqldbexport</a> is another option over mysqldump because it allows different output options. <br />
<br />
Replication is not a backup solution. It is a step in the right direction for higher availability and you can use replication for rolling historical data with <a href="http://dev.mysql.com/doc/refman/5.6/en/replication-delayed.html">time delayed replication</a> but you still need to have the data as a backup to be safe. If using MySQL dump or the enterprise options, yes you can use them off a slave easier just replication is not a backup solution. <br />
<br />
Take advantage of the <a href="http://sqlhjalp.blogspot.com/2012/10/binlogs-101.html">mysqlbinlog</a> and use it to <a href="http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog-backup.html">backup your binlogs</a>. The binlogs are the life of your MySQL server, take care of them. <br />
<br />
The best option in my opinion is <a href="http://www.mysql.com/products/enterprise/backup.html">MySQL Enterprise Backup</a>. Nothing against <a href="http://www.percona.com/software/percona-xtrabackup/users">Percona XtraBackup</a> but since I already encourage the use of <a href="http://www.mysql.com/products/enterprise/monitor.html">enterprise monitor</a> I typically would support and stay with enterprise backup since I have access to it. Regardless of your choice, the point is simple, take advantage of on-line backups. What happens when you have a serious replication issue and your slaves are useless? Do you really want to do a mysqldump off the master? They also offer incremental and compression to help with your backup needs.<br />
<br />
<b>Recovery</b>: <br />
<br />
This is often the piece of the process that tested in theory but less in reality. It is often not realistic for some companies to be able to restore their backups often. The hardware required to hold the database is not cheap and can be used for other things than just backup restores. You do need to test your backups though. Maybe it is just once a quarter and you can afford to test a slave with a restored backup. Maybe you have a virtual environment and you can test a backup into a VM just to see if it works? Execute some reporting on this database to verify numbers. Take advantage of the different database <a href="https://www.google.com/search?q=MySQL+checksum&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:unofficial&client=firefox-a">checksum options available</a> in the community. <br />
<br />
Whatever it is something is better than nothing. <br />
<br />
<br />
<br />
This again is just a overview of the concepts about monitoring, backup and recovery. Please use the links provided to find out more information. <br />
<br />
<b>More community and MySQL resources and options</b>:<br />
<ul>
<li><a href="http://www.mysql.com/products/enterprise/backup.html">MySQL Enterprise Backup</a></li>
<li><a href="http://www.mysql.com/products/enterprise/monitor.html">MySQL Enterprise Monitor</a></li>
<li><a href="http://ronaldbradford.com/blog/mysql-monitoring-101-2009-04-22/">Ronald's MySQL Monitoring 101 </a></li>
<li><a href="http://ronaldbradford.com/blog/monitoring-101-2008-02-17/">Ronald's MySQL Monitoring 101 Graph results</a></li>
<li><a href="http://sourceforge.net/projects/logwatch/files/">Logwatch</a></li>
<li><a href="http://www.mysqlperformanceblog.com/2012/01/18/backing-up-binary-log-files-with-mysqlbinlog/">Backing up binary log files with mysqlbinlog</a></li>
</ul>
<br /><br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-4703685993576564082012-11-08T16:42:00.000-07:002012-11-08T16:45:49.509-07:00 MySQL Community Server 5.6.8-rc has been released<pre>In case you missed this...... </pre>
<pre> </pre>
<pre>MySQL Server 5.6.8 RC was <a href="http://lists.mysql.com/announce/809">announced today</a>.</pre>
<pre>MySQL Server 5.6.8 (Release Candidate) is a new version of the world's most popular open source database. </pre>
<pre>Please <a href="http://dev.mysql.com/downloads/mysql/#downloads">download and test it out</a>. Oracle is eager for any feedback that you might have on this release. </pre>
<pre> </pre>
<pre></pre>
<pre> </pre>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-39293475157905026292012-11-01T17:21:00.000-06:002012-11-08T08:42:23.072-07:00Debugging Stored Routines in MySQL<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-t54N8SX-eG4/UJvStf0WJAI/AAAAAAAAAL8/pzWM5NEz4rc/s1600/meetthemysqlexperts.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="http://3.bp.blogspot.com/-t54N8SX-eG4/UJvStf0WJAI/AAAAAAAAAL8/pzWM5NEz4rc/s200/meetthemysqlexperts.jpeg" width="200" /></a></div>
A new "<a href="http://dev.mysql.com/podcasts/mysql/">Meet the MySQL Experts Podcasts</a>" is available. <br />
<br />
<a href="http://feedproxy.google.com/~r/MeetTheMysqlExperts/~3/0EvkHxK4Q_g/12793056_MySQL_103112.mp3">Debugging Stored Routines in MySQL</a> with Fernando Gonzalez. <br />
<br />
A big thanks to Fernando and the Podcast team at Oracle for helping with this podcast. Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-63621092008508300562012-11-01T12:18:00.001-06:002012-11-02T15:29:00.375-06:00MySQL November 2012 MeetupsNovember is here and what do we have to be thankful for? A great community overall is the simple answer.<br />
<br />
This month looks to have some great MySQL User Group Meetups:<br />
<br /><ul>
<li><a class="D_chapter_name omnCamp omnrv_rv17" data-chapterid="582093" href="http://www.laphp.org/events/86464842/">The Los Angeles PHP Developers Group (LAPHP)</a>
</li>
<ul>
<li><a class="D_event_title omnCamp omnrv_rv17" data-eventid="86464842" href="http://www.laphp.org/events/86464842/">Joint LAPHP/LAMySQL meetup. V.Anuganti SQL, NoSQL, Big Data in Data Architecture
</a>
</li>
<ul>
<li><span class="D_event_time">
7:00<span class="ampm">PM</span>
</span>
<span class="D_event_date">
Thursday, November 1
</span>
</li>
</ul>
</ul>
<li><a class="D_chapter_name omnCamp omnrv_rv17" data-chapterid="107607" href="http://www.meetup.com/seattlemysql/events/83132132/">The Seattle MySQL Meetup Group</a>
</li>
<ul>
<li><a class="D_event_title omnCamp omnrv_rv17" data-eventid="83132132" href="http://www.meetup.com/seattlemysql/events/83132132/">The Seattle MySQL Meetup Group Monthly Meetup
</a>
</li>
<ul>
<li><span class="D_event_time">
7:00<span class="ampm">PM</span>
</span>
<span class="D_event_date">
Monday, November 5
</span>
</li>
</ul>
</ul>
<li><span class="D_event_date"><a class="D_chapter_name omnCamp omnrv_rv17" data-chapterid="2427652" href="http://www.meetup.com/Colorado-MySQL-Meetup-Group/events/81143892/">Colorado MySQL Meetup Group</a>
</span></li>
<ul>
<li><span class="D_event_date"><a class="D_event_title omnCamp omnrv_rv17" data-eventid="81143892" href="http://www.meetup.com/Colorado-MySQL-Meetup-Group/events/81143892/">MySQL Cluster - Web Scalability with Carrier Grade Availability
</a>
</span></li>
<ul>
<li><span class="D_event_time">
3:00<span class="ampm">PM</span>
</span>
<span class="D_event_date">
Wednesday, November 7 </span></li>
</ul>
</ul>
<li><span class="D_event_date"><a class="D_chapter_name omnCamp omnrv_rv17" data-chapterid="3117022" href="http://www.meetup.com/The-Montevideo-MySQL-Meetup-Group/events/51233232/">The Montevideo MySQL Meetup Group</a> </span></li>
<ul>
<li><span class="D_event_date"><a class="D_event_title omnCamp omnrv_rv17" data-eventid="51233232" href="http://www.meetup.com/The-Montevideo-MySQL-Meetup-Group/events/51233232/">Reunión mensual del grupo (Noviembre)
</a>
</span></li>
<ul>
<li><span class="D_event_time">
7:00<span class="ampm">PM</span>
</span>
<span class="D_event_date">
Thursday, November 8
</span>
</li>
</ul>
</ul>
<li> <a class="D_chapter_name omnCamp omnrv_rv17" data-chapterid="107612" href="http://www.meetup.com/mysql-nj/events/gmcdnyqpblb/">The Northern NJ MySQL Meetup Group</a>
</li>
<ul>
<li><a class="D_event_title omnCamp omnrv_rv17" data-eventid="12903015" href="http://www.meetup.com/mysql-nj/events/gmcdnyqpblb/">The Northern NJ MySQL Meetup Group Monthly Meetup
</a>
</li>
<ul>
<li><span class="D_event_time">
7:30<span class="ampm">PM</span>
</span>
<span class="D_event_date">
Thursday, November 8 </span></li>
</ul>
</ul>
<li><span class="D_event_date"><a class="D_chapter_name omnCamp omnrv_rv17" data-chapterid="212864" href="http://www.meetup.com/mysqlbos/events/73973832/">The Boston MySQL Meetup Group</a></span></li>
<ul>
<li><span class="D_event_date"><a class="D_event_title omnCamp omnrv_rv17" data-eventid="73973832" href="http://www.meetup.com/mysqlbos/events/73973832/">The Boston MySQL Meetup Group Monthly Meetup
</a>
</span></li>
<ul>
<li><span class="D_event_time">
7:00<span class="ampm">PM</span>
</span>
<span class="D_event_date">
Monday, November 12 </span></li>
</ul>
</ul>
<li><span class="D_event_date"> <a class="D_chapter_name omnCamp omnrv_rv17" data-chapterid="107604" href="http://www.sfmysql.org/events/85368022/">The SF MySQL Meetup Group</a>
</span></li>
<ul>
<li><span class="D_event_date"><a class="D_event_title omnCamp omnrv_rv17" data-eventid="85368022" href="http://www.sfmysql.org/events/85368022/">Hadoop for MySQL DBAs
</a>
</span></li>
<ul>
<li><span class="D_event_time">
6:30<span class="ampm">PM</span>
</span>
<span class="D_event_date">
Wednesday, November 14 </span></li>
</ul>
</ul>
<li><span class="D_event_date"><a class="D_chapter_name omnCamp omnrv_rv17" data-chapterid="187311" href="http://www.meetup.com/mysql-silicon-valley/events/82847822/">The Silicon Valley MySQL Meetup Group</a></span></li>
<ul>
<li><span class="D_event_date"><a class="D_event_title omnCamp omnrv_rv17" data-eventid="82847822" href="http://www.meetup.com/mysql-silicon-valley/events/82847822/">MySQL / MariaDB Galera Cluster overview, pros, cons, deployment srategy
</a>
</span></li>
<ul>
<li><span class="D_event_time">
7:00<span class="ampm">PM</span>
</span>
<span class="D_event_date">
Thursday, November 15 </span></li>
</ul>
</ul>
<li><span class="D_event_date"> <a class="D_chapter_name omnCamp omnrv_rv17" data-chapterid="5433682" href="http://www.meetup.com/MySQL-User-Group-NL/events/88722382/">MySQL User Group NL</a>
</span></li>
<ul>
<li><span class="D_event_date"><a class="D_event_title omnCamp omnrv_rv17" data-eventid="88722382" href="http://www.meetup.com/MySQL-User-Group-NL/events/88722382/">The first MySQL User Group meeting in NL
</a>
</span></li>
<ul>
<li><span class="D_event_time">
6:00<span class="ampm">PM</span>
</span>
<span class="D_event_date">
Friday, November 16 </span></li>
</ul>
</ul>
<li><span class="D_event_date"><span class="fbEventPrivacy"><a data-hovercard="/ajax/hovercard/group.php?id=154523608011019" href="https://www.facebook.com/groups/154523608011019/" id="js_0">Sweden MySQL User Group</a></span> </span><span class="fsl"> </span></li>
<ul>
<li><span class="fsl">Wednesday, November 21, 2012</span><span class="lfloat fsl fcg"><span class="fcb"><span title="7:00am in your time"> 3:00pm</span></span> until <span class="fcb"><span title="10:00am in your time">6:00pm in UTC+01</span></span></span></li>
</ul>
</ul>
<div class="D_event_datetime">
<div class="D_event_datetime">
<div class="D_event_datetime">
<div class="D_event_datetime">
<div class="D_event_datetime">
<div class="D_event_datetime">
<br /></div>
<div class="D_event_datetime">
<br /></div>
<div class="D_event_datetime">
A full <a href="https://wikis.oracle.com/display/mysql/List+of+MySQL+User+Groups">list of user groups</a> is available via the <a href="https://wikis.oracle.com/display/mysql/Home">MySQL Wiki </a></div>
<div class="D_event_datetime">
<a class="external-link" href="http://mysql.meetup.com/all/" rel="nofollow">Meetup.com</a> also has a list of user groups available.
</div>
<span class="D_event_date"> </span>
</div>
<span class="D_event_date"> </span>
</div>
<span class="D_event_date"> </span>
</div>
<span class="D_event_date"> </span>
</div>
</div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-63760901815668593652012-10-31T15:22:00.000-06:002013-05-02T12:52:51.910-06:00Binlogs 101 The <a href="http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog.html">mysqlbinlog</a> are not new. We often reference it and all of the valuable information that it provides. I thought it might be useful to show some simple examples on how to get some of that information, for those unfamiliar with the mysqlbinlog tool. <br />
<br />
For this example, I used the <a href="http://dev.mysql.com/doc/refman/5.6/en/mysql-benchmarks.html">MySQL benchmark tools</a> to populate data. <br />
<br />
You can review binary log events a couple if different ways.<br />
You can use the command line :<br />
<br />
mysqlbinlog mysql56rc-bin.000010<br />
or within MySQL via a simple query. <br />
SHOW BINLOG EVENTS IN 'mysql56rc-bin.000010' ;<br />
<br />
These will both dump out all of the data, and this demo currently has 2284725 rows of data, to much to review one by one. <br />
<br />
Keep in mind that some of the differences between these two options. You will gather more information via the command line mysqlbinlog versus just the query "SHOW BINLOG EVENTS".<br />
<br />
example: If we wanted to get an idea of how long a query took to run? <br />
<br />
# mysqlbinlog mysql56rc-bin.000010 <br />
....<br />
# at 915<br />
#121031 7:52:49 server id 1 end_log_pos 1029 CRC32 0xd3201bdc Query thread_id=47 exec_time=0 error_code=0<br />
...<br />
insert into bench1 values ('C',2,9997,6)<br />
....<br />
<br />
I could also be more direct and check the logs for just that bin log position: <br />
# mysqlbinlog mysql56rc-bin.000010 --start-position=915 --stop-position=1029 <br />
<br />
<br />
The mysqlbinlog will also allow you to gather an idea of the execution time a query took on a master server. It is not perfect when checking the same query on a slave. Baron has a <a href="http://www.mysqlperformanceblog.com/2011/01/31/what-is-exec_time-in-binary-logs/">blog</a> about this if you want to learn more.<br />
<br />
We are unable to see execution time via the "SHOW BINLOG EVENTS".<br />
<br />
MySQL 5.6 RC> SHOW BINLOG EVENTS IN 'mysql56rc-bin.000010' FROM 915 LIMIT 1\G<br />
*************************** 1. row ***************************<br />
Log_name: mysql56rc-bin.000010<br />
Pos: 915<br />
Event_type: Query<br />
Server_id: 1<br />
End_log_pos: 1029<br />
Info: use `test`; insert into bench1 values ('C',2,9997,6)<br />
1 row in set (0.00 sec)<br />
<br />
<br />
The mysqlbinlog also allows you to be able to search within a date range.<br />
<br />
# mysqlbinlog mysql56rc-bin.000010 --start-datetime="2012-10-31 07:52:49" --stop-datetime="2012-10-31 07:52:50"<br />
<br />
# at 915<br />
#121031 7:52:49 server id 1 end_log_pos 1029 CRC32 0xd3201bdc Query thread_id=47 exec_time=0 error_code=0<br />
SET TIMESTAMP=1351695169/*!*/;<br />
insert into bench1 values ('C',2,9997,6)<br />
/*!*/;<br />
<br />
<br />
This is just a simple small sample intro into MySQL Binlog. Find more information via these great blogs and sites. <br />
<br />
<a href="http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog.html">http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog.html </a><br />
<a href="http://www.pythian.com/news/1174/mysqlbinlog-tips-and-tricks/">http://www.pythian.com/news/1174/mysqlbinlog-tips-and-tricks/ </a><br />
<a href="http://ronaldbradford.com/blog/tag/mysqlbinlog/">http://ronaldbradford.com/blog/tag/mysqlbinlog/</a><br />
<a href="http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog-backup.html">http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog-backup.html</a><br />
<a href="http://flylib.com/books/en/2.304.1.130/1/">http://flylib.com/books/en/2.304.1.130/1/</a><br />
<a href="http://www.databasejournal.com/features/mysql/article.php/3903646/Inside-MySQL-Binary-Logs.htm">http://www.databasejournal.com/features/mysql/article.php/3903646/Inside-MySQL-Binary-Logs.htm</a><br />
<a href="http://www.mysqlperformanceblog.com/2011/01/31/what-is-exec_time-in-binary-logs/">http://www.mysqlperformanceblog.com/2011/01/31/what-is-exec_time-in-binary-logs/ </a><br />
<br />
<br />
<br />
<br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-5858487555222124372012-10-26T09:37:00.001-06:002013-05-02T12:54:04.201-06:00Keyser Soze in MySQL?Who is Keyser Soze?<br />
<br />
Some recall: <br />
"...a rarely seen, nearly mythical kingpin... Most believe he is not real, but rather boogeyman story or name-drop to intimidate people."<br />
<br />
Some people think of it as :<br />
"Keyser Soze – DBA or developer who looks ordinary but has insanely good skills, hardly anybody knows about it."<br />
<br />
What does any of this have to do with MySQL ? <br />
<br />
Well for this blog post, "Keyser Soze" is the nearly mythical query that most believe is not real, but rather a "boogeyman sql query" that wastes resources in a MySQL Database. Typically, every application has at least one. Your developers blame the database for being slow and they have caught the ear of the CEO. It is time to resolve the boogeyman issue and find out. The difference is we want a better agent than <a href="http://www.imdb.com/character/ch0186542/">Dave Kujan</a>, so we have the <a href="http://www.mysql.com/products/enterprise/query.html">MySQL Query Analyzer</a> and <a href="http://www.mysql.com/products/enterprise/monitor.html">Enterprise Monitor</a>. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.mysql.com/common/images/enterprise/QueryAnalyzerTab.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://www.mysql.com/common/images/enterprise/QueryAnalyzerTab.png" height="177" width="320" /></a></div>
<br />
First, we get them on the case:<br />
./<a href="http://dev.mysql.com/doc/mysql-monitor/2.3/en/mem-install.html">mysqlmonitor-2.3.12.2175-linux-x86_64-installer.bin </a><br />
<br />
<i>FYI: Requires MySQL Server version 5.1.43 or later with partitioning and InnoDB storage engine enabled is required.</i><br />
<br />
<br />
The install is very straight forward and just follow the prompts. <br />
You will be asked:<br />
<br />
Database Installation<br />
<br />
Please select which database configuration you wish to use<br />
<br />
[1] I wish to use the bundled MySQL database<br />
[2] I wish to use an existing MySQL database<br />
<br />
It is up to you which database you decide. In my opinion, a monitor should not alter the environment of what is is monitoring. I would choose option 1. It would not hurt to still backup this database, just in case. <br />
<br />
<br />
Once this is installed we start to look over our graphs and advisor...<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-9lB-NBgWVf4/UIXR_73kZ_I/AAAAAAAAAKc/taP1cceWKLA/s1600/select_safe.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-9lB-NBgWVf4/UIXR_73kZ_I/AAAAAAAAAKc/taP1cceWKLA/s320/select_safe.png" height="199" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Very mellow server load here.<br />
( granted this is a demo)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-MWCA1QN1BoQ/UIg4K16MF1I/AAAAAAAAAKs/5gWqSZimRWU/s1600/spike_insert.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-MWCA1QN1BoQ/UIg4K16MF1I/AAAAAAAAAKs/5gWqSZimRWU/s320/spike_insert.png" height="199" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
The <a href="http://www.mysql.com/products/enterprise/query.html">MySQL Query Analyzer</a> can shed more light on curious queries. <br />
It will take a couple edits to the ..<a href="http://dev.mysql.com/doc/mysql-monitor/2.3/en/mem-qanal-using-proxy.html">/enterprise/agent/etc/mysql-monitor-agent.ini file</a>. I prefer the <a href="http://dev.mysql.com/doc/mysql-monitor/2.3/en/mem-query-analyzer-enabling-mysql.html">server method</a> because it is quick and simple and catches all default interactions with the database. <br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-f_C5NQOMZO4/UIm6yYomlwI/AAAAAAAAALE/BATvdf7gqYg/s1600/dashboard.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-f_C5NQOMZO4/UIm6yYomlwI/AAAAAAAAALE/BATvdf7gqYg/s320/dashboard.png" height="213" width="320" /></a></div>
<br />
<br />
<br />
<br />
So now if an event was to hit your database you are aware whenever it happens. You will be able to scroll back overnight for example to see not only what ran, but how it ran. If someone decided to put a small query into a infinite loop by mistake, you will find it here. <br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/--qt6mQ1NqSo/UIm6x6R9UVI/AAAAAAAAAK8/gRWw-zmOUUU/s1600/analyize.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/--qt6mQ1NqSo/UIm6x6R9UVI/AAAAAAAAAK8/gRWw-zmOUUU/s320/analyize.png" height="205" width="320" /></a></div>
<br />
Once you do see something you are curious about... (Maybe it is "Keyser Soze" or maybe it is a planned query)<br />
<br />
You can then highlight the graph and then pull up all queries related to that time frame. <br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-FijfwJ2Wmh4/UIm6zIy8aBI/AAAAAAAAALM/5ACtMiK32zU/s1600/perquery.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-FijfwJ2Wmh4/UIm6zIy8aBI/AAAAAAAAALM/5ACtMiK32zU/s320/perquery.png" height="178" width="320" /></a></div>
<br />
<br />
<br />
You will then be allowed to see the explain (as long as it meets time thresholds) as well as graphs of how the selected query was executed via your server. <br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-ssvSIMFBqA8/UIm6zp7bTNI/AAAAAAAAALU/tXj9PqHipjA/s1600/query_1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-ssvSIMFBqA8/UIm6zp7bTNI/AAAAAAAAALU/tXj9PqHipjA/s320/query_1.png" height="289" width="320" /></a></div>
<br />
<br />
<br />
<br />
If you find yourself not getting the explains like you expected make sure to check your configuration and adjust the threshold. <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
While this is just a demo, this tool is very useful for exploring trends in your data, as well as find the critical events. The advisers can help you fine tune the server per the data that has been executed on it. The Enterprise monitor will allow you to do a deep dive into the system and explore all options as you look for the "Keyser Soze" in your application. <br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.mysql.com/common/images/enterprise/replicationmonitor_main.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://www.mysql.com/common/images/enterprise/replicationmonitor_main.png" height="121" width="640" /></a></div>
<br />
<br />
Of course don't forget, the monitor also delivers replication information. So you can keep track
of topology, server type, position, errors, and log space.<br />
<br />
<br />
<br />
<br />
While all this might not make an interesting movie like <a href="http://www.imdb.com/title/tt0114814/">the Usual Suspects</a> did, it does show that while a DBA might have a list of usual suspects when it comes to a problem, they also can lean on the tools available for a wealth of additional information. <br />
<h4 style="text-align: left;">
MySQL Enterprise Edition</h4>
<ul>
<li><a href="http://www.mysql.com/products/enterprise/demo.html">Online DEMOS are available here </a></li>
<li><a href="http://www.mysql.com/products/enterprise/backup.html">MySQL Enterprise Backup</a></li>
<li><a href="http://www.mysql.com/products/enterprise/monitor.html">MySQL Enterprise Monitor</a></li>
<li><a href="http://www.mysql.com/products/enterprise/high_availability.html">MySQL Enterprise HA</a> </li>
<li><a href="http://www.mysql.com/products/enterprise/scalability.html">MySQL Enterprise Scalability</a> </li>
<li><a href="http://www.mysql.com/products/enterprise/security.html">MySQL Enterprise Security</a></li>
<li><a href="http://www.mysql.com/products/enterprise/audit.html">MySQL Enterprise Audit</a> </li>
<li><a href="http://www.mysql.com/products/enterprise/whitepapers.html">White Papers</a> </li>
<li><a href="http://www.mysql.com/trials/">Try Now</a> </li>
<li><a href="http://www.mysql.com/about/contact/sales.html?s=corporate">Contact MySQL Sales</a> </li>
<li><a href="https://shop.oracle.com/pls/ostore/product?p1=MySQL">Buy Now</a> </li>
</ul>
<br />
<br />
<br />
More Reference urls: <br />
<ul>
<li><a href="http://www.urbandictionary.com/define.php?term=keyser%20soze">http://www.urbandictionary.com/define.php?term=keyser%20soze</a></li>
<li><a href="http://www.brentozar.com/archive/2012/10/learn-speak-dba-slang-terms/">http://www.brentozar.com/archive/2012/10/learn-speak-dba-slang-terms/</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.5/en/mysql-benchmarks.html">http://dev.mysql.com/doc/refman/5.5/en/mysql-benchmarks.html </a></li>
<li><a href="http://dev.mysql.com/doc/mysql-monitor/2.3/en/mem-query-analyzer-enabling-mysql.html">http://dev.mysql.com/doc/mysql-monitor/2.3/en/mem-query-analyzer-enabling-mysql.html </a></li>
<li><a href="http://dev.mysql.com/doc/mysql-monitor/2.3/en/mem-install.html">http://dev.mysql.com/doc/mysql-monitor/2.3/en/mem-install.html</a><br /> </li>
</ul>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-74690696996647660732012-10-19T08:59:00.000-06:002012-10-19T08:59:00.229-06:00 Amsterdam, MySQL User Group A comment was recently posted on the <a href="https://wikis.oracle.com/display/mysql/List+of+MySQL+User+Groups">MySQL User Group Wiki page</a> about a new user group in the <a href="http://www.meetup.com/MySQL-User-Group-NL/">Netherlands</a> available via <a href="http://mysql.meetup.com/all/">Meetup.com</a>.<br />
<br />
I wanted to take a moment and say thank you and ask everyone to support this new user group. <br />
<br />
If people are aware of any user groups not listed, please feel free to post on the <a href="https://wikis.oracle.com/display/mysql/List+of+MySQL+User+Groups">wiki page</a> this information. Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-44634372137058835682012-10-17T15:29:00.000-06:002013-05-02T12:52:01.032-06:00MySQL Failover UtilityI was giving a replication talk at Ohio Linux Fest last week and we touched a little bit on the MySQL Failover Utility and how it works with MySQL 5.6 .<br />
<br />
The first thing that this along with Innodb and other replication enhancements are big GPL offerings from Oracle to the community.<br />
<br />
First the usage:<br />
<code><br />
[root@mysql-master python]# ./mysqlfailover --help<br />Usage: mysqlfailover --master=roo@localhost --discover-slaves-login=root --candidates=root@host123:3306,root@host456:3306 <br /><br />mysqlfailover - automatic replication health monitoring and failover</code><br />
<br />
<code>....</code><br />
<code><br /></code>
<code> --candidates=CANDIDATES<br /> connection information for candidate slave servers for<br /> failover in the form:<br /> <user>:<password>@<host>:<port>:<socket>. Valid only<br /> with failover command. List multiple slaves in comma-<br /> separated list.<br /> --discover-slaves-login=DISCOVER<br /> at startup, query master for all registered slaves and<br /> use the user name and password specified to connect.<br /> Supply the user and password in the form<br /> user:password. For example, --discover-slaves-<br /> login=joe:secret will use 'joe' as the user and<br /> 'secret' as the password for each discovered slave.<br /> --exec-after=EXEC_AFTER<br /> name of script to execute after failover or switchover</code><br />
<br />
So I set up a test, I will monitor the master @ 192.168.0.17 and have a slave @ 192.168.0.7 all from a server @ 192.168.0.34.<br />
<br />
Personally I would run this in screen, with a password on it, so I can have access to it easily from any location. <br />
<br />
# screen<br />
# ./mysqlfailover --master=root:<PASSWORD>@192.168.0.17 --discover-slaves-login=root --candidates=root:<PASSWORD>@192.168.0.7<br />
<br />
Keep in mind that the password would be easily found in history and ps -ef views.<br />
<br />
Now once it executes you realize that you never had GTID on in the first place..... <br />
<br />
ERROR: Topology must support global transaction ids and have GTID_MODE=ON <br />
<br />
This is simple enough but 'gtid_mode' is a read only variable so it must be done via the my.cnf file. <br />
<br />
vi /etc/my.cnf <br />
[mysqld]<br />
gtid_mode =ON<br />
disable-gtid-unsafe-statements =1<br />
<br />
show variables like '%gtid%';<br />
+--------------------------------+-----------+<br />
| Variable_name | Value |<br />
+--------------------------------+-----------+<br />
| disable_gtid_unsafe_statements | ON |<br />
| gtid_done | |<br />
| gtid_lost | |<br />
| gtid_mode | ON |<br />
| gtid_next | AUTOMATIC |<br />
| gtid_owned | |<br />
+--------------------------------+-----------+<br />
<br />
<br />
So now that those are all updated...<br />
<br />
Again if your not in a screen this might be a good point to do so..<br />
#screen <br />
# ./mysqlfailover --master=root:<PASSWORD>@192.168.0.17 --discover-slaves-login=root --candidates=root:<PASSWORD>@192.168.0.7<br />
<br />
# Discovering slaves for master at 192.168.0.17:3306<br />
# Checking privileges.<br />
# Checking privileges on candidates.<br />
<br />
We get a simple display to start<br />
<br />
MySQL Replication Failover Utility<br />
Failover Mode = auto Next Interval = Wed Oct 3 13:52:01 2012<br />
<br />
Master Information<br />
------------------<br />
Binary Log File Position Binlog_Do_DB Binlog_Ignore_DB <br />
mysql56rc-bin.000016 151 <br />
<br />
Replication Health Status<br />
+---------------+-------+---------+--------+------------+---------+<br />
| host | port | role | state | gtid_mode | health |<br />
+---------------+-------+---------+--------+------------+---------+<br />
| 192.168.0.17 | 3306 | MASTER | UP | ON | OK |<br />
+---------------+-------+---------+--------+------------+---------+<br />
Q-quit R-refresh H-health G-GTID Lists U-UUIDs<br />
<br />
Transactions executed on the servers:<br />
+---------------+-------+---------+-----------------------------------------+<br />
| host | port | role | gtid |<br />
+---------------+-------+---------+-----------------------------------------+<br />
| 192.168.0.17 | 3306 | MASTER | 98CCBD8A-EB09-11E1-B4D5-08002701A7D7:1 |<br />
+---------------+-------+---------+-----------------------------------------+<br />
<br />
UUIDs<br />
+---------------+-------+---------+---------------------------------------+<br />
| host | port | role | uuid |<br />
+---------------+-------+---------+---------------------------------------+<br />
| 192.168.0.17 | 3306 | MASTER | 98ccbd8a-eb09-11e1-b4d5-08002701a7d7 |<br />
+---------------+-------+---------+---------------------------------------+<br />
<br />
<br />
Since we are in screen we can control-A D and exit the screen and resume it later whenever we want to check on the status.<br />
<br />
# screen -r<br />
<br />
Now lets crash the master... a quick power off of the virtual box should do it.<br />
<br />
The output now refreshes and soon displays the new master. <br />
<br />
# Discovering slaves for master at 192.168.0.7:3306<br />
<br />
MySQL Replication Failover Utility<br />
Failover Mode = auto Next Interval = Wed Oct 17 08:50:19 2012<br />
<br />
Master Information<br />
------------------<br />
Binary Log File Position Binlog_Do_DB Binlog_Ignore_DB <br />
mysql56rc-bin.000020 191 <br />
<br />
Replication Health Status<br />
+--------------+-------+---------+--------+------------+---------+<br />
| host | port | role | state | gtid_mode | health |<br />
+--------------+-------+---------+--------+------------+---------+<br />
| 192.168.0.7 | 3306 | MASTER | UP | ON | OK |<br />
+--------------+-------+---------+--------+------------+---------+<br />
<br />
<br />
Now if you added the <code>"</code><code><code>--exec-after= </code>" </code>you will be able to execute a script that fits your environment. This script can be used to adjust the reference point for your application to the new master automatically. <br />
<br />
Test it out with the new MySQL 5.6 RC... Oracle would love your feedback.<br />
<br />
<br />
<code><br /></code>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-42379611342531475932012-10-16T17:56:00.000-06:002012-10-16T17:56:22.136-06:00RMOUG Training Days 2013 & MySQL <br />
<span style="color: red; font-family: arial,helvetica,sans-serif; font-size: 14px;">Call for Abstracts Deadline Extended until October 22! </span><br />
<br />
<span style="font-family: arial,helvetica,sans-serif; font-size: 14px;">MySQL Sessions are needed ! <a href="http://clicks.skem1.com/trkr/?c=693&g=6062&u=bd4c64d52b74554ba97b17921b04fd30&p=d125071c0f2415e2f9552fd558fbc899&t=1" target="_blank">Submit an abstract</a>
for RMOUG Training Days 2013! They have extended the abstract submission deadline to Monday,
October 22. </span><br />
<br /><span style="font-family: arial,helvetica,sans-serif; font-size: 14px;">They are looking for presentations on the following topics:</span><br />
<ul>
<li><span style="font-family: arial,helvetica,sans-serif; font-size: 14px;">Application Development</span></li>
<li><span style="font-family: arial,helvetica,sans-serif; font-size: 14px;">Business Intelligence</span></li>
<li><span style="font-family: arial,helvetica,sans-serif; font-size: 14px;">Database Administration </span></li>
<li><span style="font-family: arial,helvetica,sans-serif; font-size: 14px;">DBA Deep Dive</span></li>
<li><span style="font-family: arial,helvetica,sans-serif; font-size: 14px;">Database Tools of the Trade</span></li>
<li><span style="font-family: arial,helvetica,sans-serif; font-size: 14px;">Middleware</span></li>
</ul>
<span style="font-family: arial,helvetica,sans-serif; font-size: 14px;">All primary authors of selected abstracts receive a complimentary conference registration.</span><br /><br /><span style="font-family: arial,helvetica,sans-serif; font-size: 14px;">Visit <a href="http://clicks.skem1.com/trkr/?c=693&g=6062&u=5b289f495e4c81919824d3a2e3c07e7a&p=d125071c0f2415e2f9552fd558fbc899&t=1" target="_blank">www.rmoug.org</a> for topic descriptions and details on how to <a href="http://clicks.skem1.com/trkr/?c=693&g=6062&u=26c5195f14077c811f9d3b0a3953c510&p=d125071c0f2415e2f9552fd558fbc899&t=1" target="_blank">submit your abstract </a>online. </span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-84256342484038088242012-10-14T22:52:00.001-06:002012-10-14T22:52:28.520-06:00MySQL Cluster - Web Scalability with Carrier Grade AvailabilityJust a quick note that the <a href="http://www.meetup.com/Colorado-MySQL-Meetup-Group/events/81143892/">Colorado MySQL User Group</a> will be have Craig Sylvester in town <a href="http://www.meetup.com/Colorado-MySQL-Meetup-Group/events/81143892/">November 7th 201</a>2 for a MySQL Cluster talk. Please feel free to RSVP and join us! Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-47055297224138636852012-10-11T11:38:00.000-06:002012-10-11T11:38:01.171-06:00SCREENMany of us know the joys of the "Screen" command. I did notice that this topic became a point of many questions at the recent <a href="http://ohiolinux.org/">Ohio LinuxFest</a>, so I thought I could touch more on it here. <br />
<br />
Being able to detach and reattach to a shell is a wonderful thing. It is very useful when executing long query transactions like MySQL data exports or even running backups at times. It is also very useful to be able to change computers or locations and keep the same working shell environment. I often used Screen when I started a shell script that executed a full compressed backup, scp the files to a remote slave, and then would start to uncompress the backup onto the new slave. The entire process for this was around 24hrs easily so being able to reattached and monitor the progress was very helpful. <br />
<br />
Being able to have a visual display that is quick and clear as to what host your connected on is of course critical. A fast an easy way to know MySQL Hosts is also very valuable. At the very least you can change the mysql prompt in
the my.cnf file <br />
( ie my.cnf --> mysql --prompt=" this is a mysql box>" ) <br />
<br />
or just via your session<br />
<br />
( mysql> prompt MySQL Master> <br />PROMPT set to 'MySQL Master> '<br />MySQL Master> show master status\G<br />
<br />
). <br />
<br />
<br />
Screen becomes helpful keeping the shells organized. Personally, I do not like to have a different colors in my shell backgrounds. A simple white or black is just fine for me.<br />
<br />
<br />Here are a few other things I do with Screen: <br />
<br />
1st create or edit a file for yourself vi ~/.screenrc<br />
<br />
I like to enhance my status line at the bottom with the following:<br />
<br />
hardstatus string '%{gk}[ %{G}%H %{g}][%= %{wk}%?%-Lw%?%{=b kR}(%{W}%n*%f %t%?(%u)%?%{=b kR})%{= kw}%?%+Lw%?%?%= %{g}][%{Y}%l%{g}]%{=b C}[ %m/%d %c ]%{W}'<br />
<br />
You end up with something like the following on the bottom of all screen windows.<br />
<br />
<span style="font-size: x-small;">[ Remote Hostname ][ (0*$ bash) ][1.00 1.00 1.00][ 03/07 0:20 ]</span><br />
<br />
if you have multiple screens you get this:<br />
<br />
<span style="font-size: x-small;">[ Remote Hostname ][ (0*$ bash) (1*$ bash) ][1.00 1.00 1.00][ 03/07 0:20 ]</span><br />
<br />
Yes you can have multiple screens just type screen when your inside a current screen to start another. <br />
<br />
It is always best to name your screens as well.<br />
<br />
Cntrl A then :<br />
Then type "Title < title name>" of what you want to label the tab window. Your results are similar to below.<br />
<br />
<span style="font-size: x-small;">[ Remote Hostname ][ 0-$ MySQL_Master (1*$ MySQL_Slave) ][1.00 1.00 1.00][ 03/07 0:25 ]</span><br />
<br />
Then Cntrl A <0--9> to switch between tab windows.<br />
<br />
You can access a screen session via any computer that is allowed to connect to the screen host. So always keep in mind to lock your screen sessions.<br />
<br />
Cntrl A password -- So you can lock with a password of your choice.<br />
<br />
You might have several different Screen sessions so try to also name your screen sessions. You might be executing a MySQL dump in one Screen session and working with a data export in another. <br />
<br />
ie: <br />
screen -S MySQL_dump<br />
-S sockname Name this session <pid>.sockname instead of <pid>.<tty>.<host>.<br />
<br />
This naming comes in very handy when you have to reattach.<br />
I often use the handy shell script found here: <a href="https://github.com/cep21/jackbash/blob/master/bin/screens">https://github.com/cep21/jackbash/blob/master/bin/screens</a><br />
<br />
<br />
Another big advantage of Screen is being able to work with remote workers in training or just reviewing MySQL queries. For example, you can have a few different developers on the same screen session and execute explain on their recent queries so you can all review the best index options together. <br />
If you want to learn more about that <a href="http://www.linux.com/learn/tutorials/442418-using-screen-for-remote-interaction">here is a nice article</a>. <br />
<br />
<br />
<br />
Some good tips on screen are also available here<br />
<a href="http://www.softpanorama.org/Utilities/Screen/tips.shtml">http://www.softpanorama.org/Utilities/Screen/tips.shtml</a><br />
<a href="http://polishlinux.org/howtos/screen-tips-tricks/">http://polishlinux.org/howtos/screen-tips-tricks/</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-27563164250613690982012-10-08T14:08:00.000-06:002012-10-08T14:08:33.220-06:00Thanks for the support!I wanted to post a big thanks to the Chinese MySQL Bloggers. Almost a month ago we published the <a href="http://cn.planet.mysql.com/"> Chinese version of Planet</a> ( <a href="http://sqlhjalp.blogspot.com/2012/09/chinese-planet.html">my previous blog post</a> ). In the last month, we have collected 68 different blog posts about MySQL across 8 different MySQL Bloggers.<br />
<br />
Thanks for the support, this is an encouraging start.<br />
<br />
<br />
<br />
<br />
<br />
<br />
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-71720766992166049472012-09-29T14:29:00.002-06:002012-11-02T15:02:16.661-06:00MySQL Connect 2012 Table of ContentsIn case you have missed any of the recent blog posts about MySQL 5.6 and MySQL 7.3 from MySQL Connect.<br />
<br />
MySQL Connect 2012 Table of Contents:<br />
<ul>
<li><span style="color: blue;"><a href="https://blogs.oracle.com/mysqlinnodb/entry/new_enhancements_for_innodb_memcached">New Enhancements for InnoDB Memcached</a></span></li>
<li><span style="color: blue;"><a href="https://blogs.oracle.com/mysqlinnodb/entry/helping_to_reduce_the_rate">Helping to Reduce Page Compression Failures Rate </a></span></li>
<li><span style="color: blue;"><a href="https://blogs.oracle.com/mysqlinnodb/entry/innodb_compression_improvements_in_mysql">InnoDB Compression Improvements in MySQL 5.6</a></span></li>
<li><span style="color: blue;"><a href="https://blogs.oracle.com/mysqlinnodb/entry/performance_enhancement_in_full_text">Performance Enhancement in Full-Text Search Query</a></span></li>
<li><span style="color: blue;"><a href="https://blogs.oracle.com/mysqlinnodb/entry/online_alter_table_in_mysql">Online ALTER TABLE in MySQL 5.6</a></span></li>
<li><span style="color: blue;"><a href="http://www.clusterdb.com/mysql-cluster/foreign-keys-in-mysql-cluster/?utm_source=rss&utm_medium=rss&utm_campaign=foreign-keys-in-mysql-cluster">Foreign Keys in MySQL Cluster</a></span></li>
<li><span style="color: blue;"><a href="http://feedproxy.google.com/~r/PythianGroupBlog/~3/YFT_PLdPI-Y/">MySQL Oracle Connect 2012 Keynotes
</a></span></li>
<li><span style="color: blue;"><a href="http://lstigile.wordpress.com/2012/09/29/mysqlconnect-auditing-online-ddl-fk-in-cluster-and-more/" style="background-color: white; font-family: Arial, Verdana, sans-serif; font-size: 15px;">MySQLConnect — Auditing, Online DDL, FK in Cluster and More</a></span></li>
<li><span style="color: blue;"><a href="http://geert.vanderkelen.org/connector-python-1-0-ga/" style="background-color: white; font-family: Arial, Verdana, sans-serif; font-size: 15px;">MySQL Connector/Python v1.0 goes GA!</a></span></li>
<li><span style="color: blue;"><a href="http://drcharlesbell.blogspot.com/2012/09/new-in-mysql-utilities-release-110.html" style="background-color: white; font-family: Arial, Verdana, sans-serif; font-size: 15px;">New in MySQL Utilities release-1.1.0</a></span></li>
<li><span style="color: blue;"><a href="http://messagepassing.blogspot.com/2012/09/saturday-at-mysql-connect.html" style="background-color: white; font-family: Arial, Verdana, sans-serif; font-size: 15px;">Saturday at MySQL Connect</a></span></li>
<li><span style="color: blue;"><a href="https://blogs.oracle.com/MySQL/entry/new_in_mysql_enterprise_edition" title="permalink">New in MySQL Enterprise Edition: Policy-based Auditing!</a></span></li>
<li><span style="color: blue;"><a href="https://blogs.oracle.com/MySQL/entry/tutorial_getting_started_with_the" title="permalink">Tutorial: Getting Started with the NoSQL JavaScript / Node.js API for MySQL Cluster</a></span></li>
<li><span style="color: blue;"><a href="http://dimitrik.free.fr/blog/archives/09-01-2012_09-30-2012.html#151">MySQL Performance: Welcome 5.6 RC, the best MySQL ever </a></span></li>
<li><span style="color: blue;"><a href="http://www.clusterdb.com/mysql-cluster/mysql-now-provides-support-for-drbd/?utm_source=rss&utm_medium=rss&utm_campaign=mysql-now-provides-support-for-drbd">MySQL now provides support for DRBD </a></span></li>
<li><span style="color: blue;"><a href="http://www.sheeri.com/content/my-thoughts-about-mysql-56">My Thoughts About MySQL 5.6
</a> </span></li>
<li><span style="color: blue;"><a href="http://www.clusterdb.com/mysql-cluster/auto-installer-labs-release/?utm_source=rss&utm_medium=rss&utm_campaign=auto-installer-labs-release">MySQL Cluster Auto-Installer – labs release </a></span></li>
<li><span style="color: blue;"><a href="http://www.sheeri.com/content/mysql-connect-liveblog-big-data-big-scam-m">MySQL Connect Liveblog: Big Data is a Big Scam: Most of the Time </a></span></li>
<li><span style="color: blue;"><a href="http://schlueters.de/blog/archives/169-MySQL,-Memcache,-PHP-revised.html">MySQL, Memcache, PHP revised
</a> </span></li>
<li><span style="color: blue;"><a href="http://datacharmer.blogspot.com/2012/09/mysql-sandbox-updated-with-minimal.html">
MySQL Sandbox updated with minimal support for MySQL 5.6.7 </a></span></li>
<li><span style="color: blue;"><a href="http://www.xaprb.com/blog/2012/09/30/binary-log-checksums-in-mysql-5-6/">Binary log checksums in MySQL 5.6
</a></span></li>
<li><span style="color: blue;"><span style="color: blue;"><a href="https://blogs.oracle.com/MySQL/entry/attending_mysql_connect_your_opinion">Attending MySQL Connect? Your Opinion Matters. </a></span></span></li>
<li><span style="color: blue;"><span style="color: blue;"><a href="http://www.tusacentral.net/joomla/index.php/mysql-blogs/144-another-day-at-mysql-connect-2012">Another day at MySQL connect 2012
</a> </span></span></li>
<li><a href="https://blogs.oracle.com/svetasmirnova/entry/slides_for_mysql_connect_session">Slides for MySQL Connect session "Managing and Troubleshooting MySQL for Oracle DBAs" </a></li>
<li><a href="http://binlogtorelaylog.blogspot.com/2012/10/sneak-peek-inside-mysql-56-RBR.html">A sneak peek inside the Row Based Replication (RBR) in MySQL 5.6 </a></li>
<li><a href="http://opensourcedba.wordpress.com/2012/10/01/mysql-connect/">MySQL Connect
</a> </li>
<li><a href="http://larsthalmann.blogspot.com/2012/10/mysql-connect-2012.html">MySQL Connect 2012 </a></li>
<li><a href="https://blogs.oracle.com/santo/entry/slides_of_my_hol_on">Slides of my HOL on MySQL Cluster </a></li>
<li><a href="http://mikaelronstrom.blogspot.com/2012/10/my-personal-list-of-new-features-in.html">My personal list of new features in MySQL 5.6
</a></li>
<li><a href="https://blogs.oracle.com/MySQL/entry/what_s_new_in_5">What's New in 5.6 RC and more from MySQL Connect conference </a></li>
<li><a href="http://mysqlmusings.blogspot.com/2012/10/round-robin-replication-using-gtid.html">Round Robin Replication using GTID </a></li>
<li><a href="https://blogs.oracle.com/DatabaseEmporium/entry/mysql_syslog_audit_plugin">MySQL Syslog Audit Plugin
</a></li>
<li><a href="https://blogs.oracle.com/MySQL/entry/mysql_connect_keynotes_and_presentations">MySQL Connect Keynotes and Presentations Available Online </a></li>
<li><a href="http://mysql.wisborg.dk/2012/10/15/slides-and-other-files-from-my-hands-on-labs-at-mysql-connect-2012/">Slides and Other Files From My Hands-On Labs at MySQL Connect 2012
</a> </li>
</ul>
Keep in mind for next year: <a href="http://www.sheeri.com/content/conference-tips">Conference Tips
</a> <br />
<ul>
</ul>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-39575495202260597082012-09-14T14:50:00.002-06:002012-09-14T14:50:58.482-06:00MySQL Connect Schedule So the <a href="http://www.oracle.com/mysqlconnect/register/packages/index.html?src=7308729&Act=888">MySQL Connect Conference</a> is just around the corner. For those of you that do not get the newsletter: <br />
<br />
The Oracle<a href="http://www.oracle.com/us/corporate/newsletter/samples/mysql-1384701.html"> <span style="color: black; font-size: small;"><b>INFORMATION <span style="color: red;">INDEPTH</span> NEWSLETTER</b></span></a><span style="font-size: small;"><a href="http://www.oracle.com/us/corporate/newsletter/samples/mysql-1384701.html"> MySQL Edition </a>was recently sent out. Take advantage of this newsletter because it highlights the schedule nicely with links into the abstracts. It also lists the receptions, demo pods.</span><b><span style="color: #333333; font-family: arial; font-size: small;"></span></b> <br />
<br />
<br />
<a href="http://www.oracle.com/us/corporate/newsletter/samples/mysql-1384701.html">http://www.oracle.com/us/corporate/newsletter/samples/mysql-1384701.html</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-86468523045452379902012-09-12T17:07:00.003-06:002012-09-14T08:41:11.806-06:00MySQL Replication 101 OverviewSince <a href="http://www.oracle.com/mysqlconnect/register/packages/index.html?src=7308729&Act=888">MySQL Connect</a> is just around the corner and <a href="https://oracleus.activeevents.com/connect/search.ww?event=openworld#loadSearch-event=openworld&searchPhrase=&searchType=session&tc=0&sortBy=&p=&i%2810942%29=15982&i%2811425%29=&i%2810053%29=&i%2811404%29=&i%2811562%29=&i%2811488%29=&i%2810089%29=&i%2811840%29=">several of the sessions</a> are related to the <a href="http://dev.mysql.com/tech-resources/articles/whats-new-in-mysql-5.6.html#replication">replication features in MySQL 5.6</a>, I figured I would put together a quick MySQL Replication 101 Overview for any of the new users.<br />
<br />
<b>Topology</b><br />
<br />
First you must decide what type of Topology will be serve you and your applications needs. Below are a list of typical topologies. For this blog post example we will set up a couple of versions. <br />
<br />
<br />
Single Master and on slave: <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://dev.mysql.com/doc/refman/5.1/ja/images/slave-single.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="47" src="http://dev.mysql.com/doc/refman/5.1/ja/images/slave-single.png" width="320" /></a></div>
Single Master and muliple slaves:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://dev.mysql.com/doc/refman/5.1/ja/images/slaves-multiple.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="136" src="http://dev.mysql.com/doc/refman/5.1/ja/images/slaves-multiple.png" width="320" /></a></div>
Circular: <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://dev.mysql.com/doc/refman/5.1/ja/images/twinmaster.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="146" src="http://dev.mysql.com/doc/refman/5.1/ja/images/twinmaster.png" width="320" /></a></div>
<br />
Chain:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://dev.mysql.com/doc/refman/5.1/ja/images/multimaster-chain.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="http://dev.mysql.com/doc/refman/5.1/ja/images/multimaster-chain.png" width="320" /></a></div>
<br />
<b><br /></b>
<b>MySQL Configuration file edits</b><br />
<b> </b><br />
MySQL 5.6 will allow the us to <a href="http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html#option_mysqld_master-info-repository">take advantage of the database for our repository information</a>. The "<a href="http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html#option_mysqld_master-info-repository">master-info-repository=TABLE</a>" and the "<a href="http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html#option_mysqld_relay-log-info-repository">relay-log-info-repository=TABLE</a>" reference allows this. A unique value is required for server id per server. <br />
<br />
<br />
<span style="color: blue;">Master</span> my.cnf<br />
<code><br />
# vi /etc/my.cnf<br />
[mysqld]<br />
server-id=1<br />
log-bin = /var/lib/mysql/yoda-bin <br /> master-info-repository=TABLE<br />
<br />
[mysql]<br />prompt=mysql_yoda>\\_ <br />
</code>
<br />
<br />
<br />
Start and Log into MySQL<br />
<code><br />
master_yoda>show master status\G<br />
*************************** 1. row ***************************<br />
File: yoda-bin.000001<br />
Position: 114<br />
Binlog_Do_DB: <br />
Binlog_Ignore_DB: <br />
1 row in set (0.00 sec) <br />
<br />
</code><br />
<br />
<span style="color: blue;">Master</span> SQL<br />
<code></code><br />
<code></code><br />
<code><br /></code><code>mysql_yoda></code><code> show variables like 'master_info_repository';<br />+------------------------+-------+<br />| Variable_name | Value |<br />+------------------------+-------+<br />| master_info_repository | TABLE |<br />+------------------------+-------+<br /> </code><br />
<br />
<code>mysql_yoda>CREATE USER 'replication'@'192.168.0.%' IDENTIFIED BY 'slavepass'; <br />mysql_yoda>GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';<br />mysql_yoda>flush privileges;<br />
</code><br />
<br />
Now lets create a copy of the database to start from.<br />
<code> </code><br />
<code></code><br />
<code><br /> # mysqldump -p --all-databases --master-data=2 > /tmp/replication_example.sql<br /><span style="color: red;">THIS LOCKS THE DATABASE! </span></code><br />
<code><span style="color: red;"><br /></span></code>
<br />
<div style="color: black;">
or try the <a href="https://launchpad.net/mysql-utilities">MySQL utilities </a></div>
<code><span style="color: red;"><br /></span></code>
<br />
<pre><a href="http://dev.mysql.com/doc/workbench/en/mysqldbexport.html">mysqldbexport</a> --server=root@server1:3306 --format=csv db1 --export=data</pre>
<br />
If you do not want to lock the database as you make a copy, Oracle offers <a href="https://edelivery.oracle.com/">MySQL Enterprise Backup</a> You can test this for 30 days as well for free.<br />
<br />
Remember to adjust all firewall rules if required for MySQL Port. (<span style="color: red;">3306</span>)<br />
<br />
<br />
<span style="color: #38761d;">SLAVE</span> my.cnf<br />
<code> vi /etc/my.cnf<br /> [mysqld]<br /> Server-id=2<br /> relay-log=/var/lib/mysql/luke-relay-bin
<br />
relay-log-info-repository =TABLE
</code><br />
<code>[mysql]<br />prompt=mysql_luke>\\_ </code><br />
<br />
<code># mysql --user=root -p < /tmp/replication_example.sql </code><br />
<br />
<span style="color: #38761d;">SLAVE</span> SQL<br />
<br />
<code>mysql_luke> CHANGE MASTER TO<br /> MASTER_HOST='yoda',<br /> MASTER_USER='replication',<br /> MASTER_PASSWORD='slavepass',<br /> MASTER_PORT=3306,<br /> MASTER_LOG_FILE='yoda-bin.000002',<br /> MASTER_LOG_POS=83415,<br /> MASTER_CONNECT_RETRY=10;</code><br />
<br />
<code>mysql_luke</code><code>> start slave; </code><br />
<br />
We gathered this info from the mysqldump file via the “ --<a href="http://dev.mysql.com/doc/refman/5.6/en/backup-policy.html">master-data</a>=2 ” flag.<br />
<br />
<code>mysql_luke> show slave status\G<br /><br />mysql_luke> show slave status\G<br />*************************** 1. row ***************************<br /> Slave_IO_State: Waiting for master to send event<br /> Master_Host: yoda<br /> Master_User: replication<br /> Master_Port: 3306<br /> Connect_Retry: 10<br /> Master_Log_File: yoda-bin.000003<br /> Read_Master_Log_Pos: 323<br /> Relay_Log_File: luke-relay-bin.000004<br /> Relay_Log_Pos: 475<br /> Relay_Master_Log_File: yoda-bin.000003<br /> Slave_IO_Running: <b>Yes</b><br /> Slave_SQL_Running: <b>Yes</b><br /> Master_Server_Id: 1<br /> Master_UUID: 75d407df-2be4-11e1-9668-b4be9bce39b0<br /> Seconds_Behind_Master: 0<br /> SQL_Remaining_Delay: NULL </code><br />
<br />
<br />
Now we also have some alternative options to the above set up.<br />
<br />
-- If you can afford to have both the master and slave database offline, <a href="http://www.mysql.com/products/workbench/">MySQL Workbench</a> comes with <a href="http://dev.mysql.com/doc/workbench/en/mysql-utilities.html">MySQL Utilties</a> (also via <a href="https://launchpad.net/mysql-utilities">launchpad</a>) which has <a href="http://dev.mysql.com/doc/workbench/en/mysqlreplicate.html">mysqlreplicate </a><br />
<code><br />
mysqlreplicate \ --master=root@master.example.com \ --slave=root@slave.example.com \ --rpl-user=repl:xyzzy<br /><br />
</code>
<br />
-- If you wanted to create a Chain or Circular topology, the slave ( or master 2 ) will also need a bin log which I have added below. Then you can set up another slave that is using "Luke", per the example, as the master. <br />
<br />
<span style="color: #38761d;">SLAVE</span> my.cnf<br />
<code> vi /etc/my.cnf<br /> [mysqld]<br /> Server-id=2<br /> relay-log=/var/lib/mysql/luke-relay-bin
<br />
relay-log-info-repository =TABLE </code><br />
<code> log-bin = /var/lib/mysql/luke-bin </code><br />
<br />
To adjust the server examples above to a Circular Topology we will need to make a few more variable edits. The edits below will prevent index collisions. <br />
<br />
SQL<br />
<code> </code><code><span style="color: blue;">mysql_yoda</span>> </code><code>SET GLOBAL auto_increment_offset=2;<br />
</code><code><span style="color: blue;">mysql_yoda</span>> </code><code>SET GLOBAL auto_increment_increment=1;</code> <code> </code><br />
<code> </code><br />
<code> </code><code><span style="color: #38761d;">mysql_luke</span>> </code><code>SET GLOBAL auto_increment_offset=2; <br /> </code><code><span style="color: #38761d;">mysql_luke</span>> </code><code>SET GLOBAL auto_increment_increment=2;</code><br />
<br />
<br />
<code> </code><code><span style="color: blue;">mysql_yoda</span></code><code>>show global variables like '%auto_increment%';<br />+--------------------------+-------+<br />| Variable_name | Value |<br />+--------------------------+-------+<br />| auto_increment_increment | 2 |<br />| auto_increment_offset | 1 |<br />+--------------------------+-------+</code><code> </code><code><span style="color: #38761d;">mysql_luke</span></code><code>>show global variables like '%auto_increment%';<br />+--------------------------+-------+<br />| Variable_name | Value |<br />+--------------------------+-------+<br />| auto_increment_increment | 2 |<br />| auto_increment_offset | 2 |<br />+--------------------------+-------+</code><br />
<br />
<code> </code><code><span style="color: #38761d;">mysql_luke</span>></code><code>SHOW MASTER STATUS\G<br />*************************** 1. row ***************************<br /> File: luke-bin.000005<br /> Position: 295</code><br />
<br />
<code>mysql_yoda>CHANGE MASTER TO<br /> MASTER_HOST='luke',<br /> MASTER_USER='replication2',<br /> MASTER_PASSWORD='slavepass',<br /> MASTER_PORT=3306,<br /> MASTER_LOG_FILE='luke-bin.000005',<br /> MASTER_LOG_POS=295,<br /> MASTER_CONNECT_RETRY=10;<br />mysql_yoda> start slave; </code><br />
<br />
<br />
This was a simple overview but it gets you started. If you would like to dig further, below is a list of related MySQL 5.6 and replication urls. <br />
<ul>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/replication-howto.html">http://dev.mysql.com/doc/refman/5.6/en/replication-howto.html</a> </li>
<li><a href="http://dev.mysql.com/tech-resources/articles/whats-new-in-mysql-5.6.html#replication">http://dev.mysql.com/tech-resources/articles/whats-new-in-mysql-5.6.html#replication</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/replication.html">http://dev.mysql.com/doc/refman/5.6/en/replication.html</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/replication-formats.html">http://dev.mysql.com/doc/refman/5.6/en/replication-formats.html</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/binary-log-setting.html">http://dev.mysql.com/doc/refman/5.6/en/binary-log-setting.html</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/replication-semisync.html">http://dev.mysql.com/doc/refman/5.6/en/replication-semisync.html</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/replication-howto-masterbaseconfig.html">http://dev.mysql.com/doc/refman/5.6/en/replication-howto-masterbaseconfig.html</a></li>
<li><a href="http://wagnerbianchi.com/blog/?p=93">http://wagnerbianchi.com/blog/?p=93 </a></li>
<li><a href="https://github.com/greyrl/generaltools/blob/master/mysqlreplicate.py">https://github.com/greyrl/generaltools/blob/master/mysqlreplicate.py</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html">http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html</a></li>
<li><a href="http://mysqlmusings.blogspot.com/2011/04/replication-event-checksum.html">http://mysqlmusings.blogspot.com/2011/04/replication-event-checksum.html</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html#sysvar_slave_parallel_workers">http://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html#sysvar_slave_parallel_workers</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/replication-delayed.html">http://dev.mysql.com/doc/refman/5.6/en/replication-delayed.html</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/start-slave.html">http://dev.mysql.com/doc/refman/5.6/en/start-slave.html</a></li>
<li><a href="http://d2-systems.blogspot.com/2011/04/mysql-562-dm-optimized-row-based.html">http://d2-systems.blogspot.com/2011/04/mysql-562-dm-optimized-row-based.html</a></li>
<li><a href="http://dev.mysql.com/doc/workbench/en/mysql-utils-man.html">http://dev.mysql.com/doc/workbench/en/mysql-utils-man.html</a><br /><a href="http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html#sysvar_binlog_row_image">http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html#sysvar_binlog_row_image</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html#option_mysqld_binlog-rows-query-log-events">http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html#option_mysqld_binlog-rows-query-log-events</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog-backup.html">http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog-backup.html</a></li>
<li><a href="http://d2-systems.blogspot.com/2012/04/global-transaction-identifiers-are-in.html">http://d2-systems.blogspot.com/2012/04/global-transaction-identifiers-are-in.html</a></li>
<li><a href="http://d2-systems.blogspot.com/2011/10/global-transaction-identifiers-feature.html">http://d2-systems.blogspot.com/2011/10/global-transaction-identifiers-feature.html</a></li>
<li><a href="http://datacharmer.blogspot.com/2011/03/advanced-replication-for-masses-part.html">http://datacharmer.blogspot.com/2011/03/advanced-replication-for-masses-part.html </a></li>
<li><a href="http://php.net/manual/de/mysqlnd-ms.quickstart.gtid.php">http://php.net/manual/de/mysqlnd-ms.quickstart.gtid.php</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html#option_mysqld_replicate-do-db">http://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html#option_mysqld_replicate-do-db</a></li>
</ul>
<br />
<br />
<ul>
</ul>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-17514523337487969042012-09-11T06:50:00.000-06:002012-09-11T06:50:18.212-06:00Chinese Planet A big welcome to the China MySQL Community. We have just launched the <a href="http://cn.planet.mysql.com/">Chinese MySQL Planet</a>. <a href="http://isky000.com/">Zhaoyang Jian</a> (an <a href="http://apex.oracle.com/pls/otn/f?p=19297:4:11170932032739::NO:4:P4_ID:2560">Oracle Ace Director</a>) has started us off with his blogs so please feel free to <a href="http://cn.planet.mysql.com/new">submit your Chinese Feeds</a>.<br />
<br />
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-27729800893474720292012-09-09T12:29:00.000-06:002012-09-09T12:29:03.112-06:00SCALE 11X CFPThe Southern California Linux Expo ( <a href="https://www.socallinuxexpo.org/scale11x/">SCALE</a> ) <a href="https://www.socallinuxexpo.org/cfp">call for papers is now open</a>. <br />
<br />
They had a great MySQL day last year and with the help of the MySQL Community they can have another one this year ! The event will be held Februrary 22-24, 2013 at the Hilton Los Angeles Airport Hotel.<br />
<br />
<br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-14897199487333981012012-09-05T15:11:00.003-06:002012-09-05T15:11:54.351-06:00MySQL Tech ToursThe MySQL Tech tours are back! The postponed Denver Tech Tour has been rescheduled and we have added another in Austin. See the links before for more information. <br />
<h2>
MySQL Tech Tours</h2>
<h3>
Improving Your Products with New MySQL Features and Faster Performance. </h3>
<b>September 20, 2012 - Denver Area</b><br />
<a href="http://www.oracle.com/webapps/events/ns/EventsDetail.jsp?p_eventId=157150&src=7635949&Act=6">Learn more and register for the event »</a><br />
<br /><b><span class="Object" id="OBJ_PREFIX_DWT18">September 25, 2012</span> - Austin</b><br />
<span class="Object" id="OBJ_PREFIX_DWT19"><a href="http://www.oracle.com/webapps/events/ns/EventsDetail.jsp?p_eventId=159336&src=7635949&src=7635949&Act=27" target="_blank">Learn more and register for the event »</a></span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-3812360659149323517.post-48045227398099449892012-08-30T10:39:00.000-06:002012-08-30T10:39:14.174-06:00PyCONPyCONs are in full swing !<br />
<br />
Oracle will be at PyCON India with two MySQL Sessions:<br />
<br />
<ul>
<li><a href="http://in.pycon.org/2012/funnel/pyconindia2012/60-introduction-to-mysql-connector-python">Introduction to MySQL Connector/Python by Uma Bhat</a> </li>
<li><a href="http://in.pycon.org/2012/funnel/pyconindia2012/50-mysql-utilities-time-saving-scripts-for-dba">MySQL Utilities - Time saving scripts for DBA by Megha Singhvi </a></li>
</ul>
Oracle will also have a booth so please come by !<br />
<br />
<a href="https://us.pycon.org/2013/">PyCON 2013 in Santa Clara</a> will be March 15th - 17th.<br />
Tutorials: March 13–14<br /> Main Conference: March 15–17<br /> Development Sprints: March 18–21 <br />
<br />
The <a href="https://us.pycon.org/2013/speaking/cfp/">CFP is open</a> so join Oracle and lets show support for MySQL and the Python community. Unknownnoreply@blogger.com