Friday, October 09, 2009

Repair MYISAM table

1. online
Check table tablename
repair table tablename

2. offline
- Check all myisam table in particular database
shell> myisamchk *.MYI

- Check all myisma table in all database
shell> myisamchk /path/to/datadir/*/*.MYI

- Check and repair all myisam table
If you want to check all MyISAM tables and repair any that are corrupted, you can use the following command:

shell> myisamchk --silent --force --fast --update-state \
--key_buffer_size=64M --sort_buffer_size=64M \
--read_buffer_size=1M --write_buffer_size=1M \
/path/to/datadir/*/*.MYI


Reference
myisamchk — MyISAM Table-Maintenance Utility
Checking Tables with mysqlcheck and myisamchk
How to Repair Tables

Thursday, October 08, 2009

"MySQL server has gone away" using mysqlhotcopy

"MySQL server has gone away" using mysqlhotcopy

I add the below statement in my.cnf

[mysqlhotcopy]
interactive-timeout

and mysqlhotcopy successful

Thursday, October 01, 2009

show processlist and kill thread

If user not root user and no grant necessary permission,
They only allow seeing their thread when they issue "show processlist"

In order to see all threads in the server, they need "process privilege"
Logon as root and issue the below statement:
grant process on *.* to 'someone'@'%';
flush privileges;

Logon as “someone and issue the below statement:
show processlist;
All threads in mysql server will show.

We try kill one of the thread which no belong to "someone" with issue the below statement:
kill 95;
mysql give this error : You are not owner of Thread 95

If we want "someone" to kill other thread

We need to grant "super privileges"
Logon as root and issue the below statement
grant super on *.* to 'someone'@'%';
flush privileges;

Open the new connection, logon as “someone” and issue the below statement:
show processlist;
All threads in the server will be shows.
Issue the below statement to kill thread which no belong to “someone”
kill 95;
Thread Id 95 successful kill.

Notes:
- The PROCESS privilege can be used to view the plain text of currently executing statements, including statements that set or change passwords.

- The SUPER privilege can be used to terminate other sessions or change how the server operates.

- The SUPER privilege enables an account to use CHANGE MASTER TO, KILL or mysqladmin kill to kill threads belonging to other accounts (you can always kill your own threads), PURGE BINARY LOGS, configuration changes via SET GLOBAL to modify global system variables, the mysqladmin debug command, enabling or disabling logging, performing updates even if the read_only system variable is enabled, starting and stopping replication on slave servers, and allows you to connect (once) even if the connection limit controlled by the max_connections system variable is reached.

Conclusion:
If you have the PROCESS privilege, you can see all threads.
If you have the SUPER privilege, you can kill all threads and statements.
Otherwise, you can see and kill only your own threads and statements.
Reference: http://dev.mysql.com/doc/refman/4.1/en/kill.html

Monday, September 28, 2009

Impossible WHERE noticed after reading const tables

When I use explain it show me the below result

*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: NULL
type: NULL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: NULL
Extra: Impossible WHERE noticed after reading const tables

mysql optimizer only work with data with match data.
else optimizer can't work

"Impossible WHERE noticed after reading const tables" mean mysql optimizer don't know estimated what index/ or it data should retrieve without data matching

Thursday, September 24, 2009

MySQL Magazine - Issue 7

New magazine from the site

Issue 7

Tuesday, September 22, 2009

Performance Tuning Best Practices for MySQL

A video by Jay Pipes in one of Google’s Techtalk sessions recorded at 2006. A quit old talk but lot of useful information. Total lenght video around 45min. Take you time and go through on it

Tuesday, May 19, 2009

How to reset Password in mysql

Change you own password
login into mysql

at the "mysql>" prompt, type:
set password = password("yournewpassword");

Change other user password
SET PASSWORD FOR 'bob'@'%' = PASSWORD('yournewpassword')

Reference
12.4.1.6. SET PASSWORD Syntax

Addition information
Friend feedback and say he follow the instruction but change password fail! why ??
SET PASSWORD FOR 'user1'@'%localhost' = PASSWORD('yournewpassword')

We can check from here
login into mysql server
mysql> use mysql;
mysql> select user,host from user;

user | host |
+-------------+----------------------+
| root | mysqlserver
| user1 | localhost
| user2 | %

If we login and root and want change password for user1,
we should run this
SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('yournewpassword')

if we want change password for user2,
we should run this
SET PASSWORD FOR 'user2'@'%' = PASSWORD('yournewpassword')

Wednesday, February 18, 2009

How to know which MYSQL Version I Using?

How to know which MYSQL Version I using

mysql -e status|grep 'Server version'
or
mysql -u root -p -e status|grep 'Server version'


Windows users:
mysql -e status

Wednesday, February 04, 2009

MySQL Magazine - Issue 6

New magazine from the site

Issue Six

SQL monitoring

We have MYSQL in production, and want have something like monitor or feedback on SQL status.

In MSSQL, we can do lot thing
Example : Monitor blocking, long query, job status

Google and find

1. mtop :
mytop is a console-based (non-gui) tool for monitoring the threads and overall performance of a MySQL 3.22.x, 3.23.x, and 4.x server.

more information

2. Find this script:


#!/bin/sh
# Variables
DBUSER=someone
DBPASS=something
SECONDS=15
# Main loop
while true
do
mysqladmin -u$DBUSER -p$DBPASS processlist |
egrep -vw 'Sleep|processlist|Binlog Dump' |
awk -F'|' '{print $6, $7, $8, $9}'
# First line of vmstat is historical, so take the second
vmstat 1 2 | tail -1
# Sleep for a while
sleep $SECONDS
done

3. MYSQLReport
mysqlreport makes a friendly report of important MySQL status values. mysqlreport transforms the values from SHOW STATUS into an easy-to-read report that provides an in-depth understanding of how well MySQL is running. mysqlreport is a better alternative (and practically the only alternative) to manually interpreting SHOW STATUS.

Anything else?

Wednesday, April 16, 2008

MySQL Magazine

I found this site which provide free MYSQL magazines
Currently they have 4 downloaded magazine issue

Issue One - Summer 2007
Issue Two - Fall 2007
Issue Three - Winter 2007/2008
Issue Four - Spring 2008

Thursday, March 06, 2008

Saturday, February 16, 2008

Different way to install MYSQL

Different way to install MYSQL
1. Install through MYSQL RPM
- Download and run rpm rpmfile.
- The program file will install into file predefine by rpm file
- Example : Red Hat Enterprise Linux 4 RPM (x86)

2. Compile mysql from MYSQL source and install
- We can compile feature we need.
- We can predefine target install folder as well.
- Example : Source

3. Install MYSQL binary version
- Download and copy the code into target folder
- Advantage : We can download into folder we specific
- Example : Linux (non RPM packages) or
Linux (non RPM, Intel C/C++ compiled, glibc-2.3)

4. Use Operating System MYSQL compile version
- Most Linux come with mysql compile version.
- MYSQL version and start and using

MYSQL download page http://dev.mysql.com/downloads/mysql/5.0.html

Thursday, February 14, 2008

reset MYSQL "root" password

How to reset MYSQL "root" password :

Stop mysqld and restart it with the --skip-grant-tables --user=root options
(Windows users omit the --user=root portion).

Connect to the mysqld server with this command:

shell> mysql -u root
Issue the following statements in the mysql client:

mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd')
-> WHERE User='root';
mysql> FLUSH PRIVILEGES;

Friday, April 27, 2007

How to create two instance mysql in server

My practices
use binary version - Linux (non RPM packages)
tar to particular folder
change the port (3306.2207) and point socket to individual folder

Thursday, November 30, 2006

Install MYSQL gui Tool - Failed dependencies

Problem when install MYSQL administrator

[root@localhost src]#rpm -iv mysql-administrator-5.0r5-1fc5.i386.rpm
error: Failed dependencies:
libatkmm-1.6.so.1 is needed by mysql-administrator-5.0r5-1fc5.i386
libgdkmm-2.4.so.1 is needed by mysql-administrator-5.0r5-1fc5.i386
libglibmm-2.4.so.1 is needed by mysql-administrator-5.0r5-1fc5.i386
libgtkmm-2.4.so.1 is needed by mysql-administrator-5.0r5-1fc5.i386
libpangomm-1.4.so.1 is needed by mysql-administrator-5.0r5-1fc5.i386
libsigc-2.0.so.0 is needed by mysql-administrator-5.0r5-1fc5.i386

Problem when Install MYSQL Query Browser
[root@localhost src]# rpm -iv mysql-query-browser-5.0r5-1fc5.i386.rpm
error: Failed dependencies:
libatkmm-1.6.so.1 is needed by mysql-query-browser-5.0r5-1fc5.i386
libgdkmm-2.4.so.1 is needed by mysql-query-browser-5.0r5-1fc5.i386
libglibmm-2.4.so.1 is needed by mysql-query-browser-5.0r5-1fc5.i386
libgtkmm-2.4.so.1 is needed by mysql-query-browser-5.0r5-1fc5.i386
libpangomm-1.4.so.1 is needed by mysql-query-browser-5.0r5-1fc5.i386
libsigc-2.0.so.0 is needed by mysql-query-browser-5.0r5-1fc5.i386

how to solve?
yum install libatkmm-1.6.so.1

Result :
Successful Intall MYSQL Administrator and Browser

Tuesday, November 21, 2006

Post Installation MYSQL Testing

Test connection to mysql
1) connect to mysql
[root@localhost src]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.27-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>show databases
+-----------------------+
Database
+---------------------- +
information_schema
mysql
test
+-----------------------+
3 rows in set (0.02 sec)

2. ps aux grep mysql

3. mysqladmin -p ping
[root@localhost ~]# mysqladmin -p ping
Enter password :
mysql is alive

Install MYSQL Client

Install MySQL client

rpm -i MySQL-client-standard-5.0.27-0.rhel4.i386.rpm
Preparing... ###########################################
[100%]
1:MySQL-client-standard ###########################################
[100%]

Install MySQL rpm version

[root@localhost src]# rpm -i MySQL-server-standard-5.0.27.rhel4.i386.rpm
PLEASE REMEBER TO SET A PASSSWORD FOR THE MySQL root USER!
To do so, sert the server, then issue the follwing commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h locahost.localdomain password 'new-password'
See the manual for more instruction
Note: If you are upgrading from a MySQL <=3.22.10 you should runthe /usr/bin/mysql_fix_rilivege_tables. Otherwise you will not be able to use the new GRANT command! Please report any problems with the /usr/bin/mysqlbug script! The latest information about MySQL is available on the web at http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
Starting MySQL [ok]

Friday, November 17, 2006

MySQL RPMs unusable when SELinux is enabled

MYSQL Setup FAILED WITH SELinux enabled

"Starting MySQL...................................[FAILED]"

Run MySQL Setup
-----------------
[root@localhost src]# rpm -ivh MySQL-server-standard-5.0.27-0.rhel4.i386.rpm
Preparing... ###########################################
[100%]
1:MySQL-server-standard ###########################################
[100%]
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'
See the manual for more instructions.

NOTE: If you are upgrading from a MySQL <= 3.22.10 you should run the /usr/bin/mysql_fix_privilege_tables. Otherwise you will not be able to use the new GRANT command! Please report any problems with the /usr/bin/mysqlbug script! The latest information about MySQL is available on the web at http://www.mysql.com Support MySQL by buying support/licenses at http://shop.mysql.com Starting MySQL...................................[FAILED] What do to : From System->Administrator->Security and FireWall
Security Level Configuration
SElinux Setting : Enforcing
Modify Selinux Policy
SELinuxService Protection
Change this "Disable SELinux protection for mysqld daemon"

The Problem should solve

more information
http://bugs.mysql.com/bug.php?id=12676

Refer to this portion
[12 Oct 2005 2:18] michael chester
If you are using rhel 4 you can work around this issue by running the security
GUI system-config-securitylevel and exempting the MySQL service from the SELinux
configuration. You should then be able to run the RPM install as per the MySQL
instructions.