Showing posts with label mysql. Show all posts
Showing posts with label mysql. Show all posts

5/05/2012

Changing tables engine from MyISAM to InnoDB

1. Edit /etc/my.cnf , make sure that:
  
#skip-innodb - commented out
innodb_file_per_table = ON

2. install Percona toolkit

Visit http://www.percona.com/software/percona-toolkit/ to download the latest release of Percona Toolkit. Or, get the latest release from the command line:
 
wget percona.com/get/percona-toolkit.tar.gz

wget percona.com/get/percona-toolkit.rpm

wget percona.com/get/percona-toolkit.deb

You can also get individual tools from the latest release:
 
wget percona.com/get/TOOL 
 
Replace TOOL with the name of any tool.

3. using pt-find convert tables from MyISAM to  InnoDB

pt-find db-name --engine MyISAM --exec "ALTER TABLE %D.%N ENGINE=INNODB" --print

5/31/2011

hackmysql mirror

I've created mirror of hackmysql for personal usage

replace mysql-server with percona server

what is percona-server:

Quote:
Percona Server is an enhanced drop-in replacement for MySQL. With Percona Server,

Your queries will run faster and more consistently.
You will consolidate servers on powerful hardware.
You will delay sharding, or avoid it entirely.
You will save money on hosting fees and power.
You will spend less time tuning and administering.
You will achieve higher uptime.
You will troubleshoot without guesswork.

Does this sound too good to be true? It's not. Percona Server offers breakthrough performance, scalability, features, and instrumentation. Its self-tuning algorithms and support for extremely high-performance hardware make it the clear choice for companies who demand the utmost performance and reliability from their database server


now if you want to have such miracle on your cpanel server you need to do this steps for replacing mysql-server with percona-server:

1. backup VPS.
2. dump all dbs.
3. stop all services on the vps
Code:
/etc/init.d/httpd stop ; /etc/init.d/exim stop ; /etc/init.d/pure-ftpd stop ; /etc/init.d/dovecot stop ; /etc/init.d/cpanel stop ; /etc/init.d/lfd stop ; /etc/init.d/munin-node stop ; /etc/init.d/crond stop ; /etc/init.d/mysql stop ; /etc/init.d/exim stop ;


4. make sure that everything is stopped
5. check what mysql packages are installed

Code:
rpm -qa | grep -i mysql


in my case it was MySQL-client MySQL-devel MySQL-test MySQL-bench MySQL-shared MySQL-server
so I run this command to completely remove mysql from vps
Code:
yum remove MySQL-client MySQL-devel MySQL-test MySQL-bench MySQL-shared MySQL-server


6. add percona repo

Code:
rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm


7. check what packages are available in percona repo

Code:
yum list | grep percona


should be something like

Code:
# yum list | grep percona
percona-release.x86_64                    0.0-1                        installed
Percona-SQL-50-debuginfo.x86_64           5.0.92-b23.85.rhel5          percona
Percona-SQL-client-50.x86_64              5.0.92-b23.85.rhel5          percona
Percona-SQL-devel-50.x86_64               5.0.92-b23.85.rhel5          percona
Percona-SQL-server-50.x86_64              5.0.92-b23.85.rhel5          percona
Percona-SQL-shared-50.x86_64              5.0.92-b23.85.rhel5          percona
Percona-SQL-shared-compat.x86_64          5.1.43-2                     percona
Percona-SQL-test-50.x86_64                5.0.92-b23.85.rhel5          percona
Percona-Server-51-debuginfo.x86_64        5.1.56-rel12.7.224.rhel5     percona
Percona-Server-55-debuginfo.x86_64        5.5.11-rel20.2.115.rhel5     percona
Percona-Server-client-51.x86_64           5.1.56-rel12.7.224.rhel5     percona
Percona-Server-devel-51.x86_64            5.1.56-rel12.7.224.rhel5     percona
Percona-Server-server-51.x86_64           5.1.56-rel12.7.224.rhel5     percona
Percona-Server-shared-51.x86_64           5.1.56-rel12.7.224.rhel5     percona
Percona-Server-test-51.x86_64             5.1.56-rel12.7.224.rhel5     percona
gnuplot.x86_64                            4.2.6-14                     percona
gnuplot-emacs.x86_64                      4.2.6-14                     percona
maatkit.noarch                            7284-1                       percona
xtrabackup.x86_64                         1.6-245.rhel5                percona
xtrabackup-debuginfo.x86_64               1.6-245.rhel5                percona


8. decide what version you need 5.1 or 5.5
in my case I've installed percona 5.5

Code:
# rpm -qa | grep Percona
Percona-Server-client-55-5.5.11-rel20.2.115.rhel5
Percona-Server-server-55-5.5.11-rel20.2.115.rhel5
Percona-Server-shared-55-5.5.11-rel20.2.115.rhel5
Percona-Server-shared-compat-5.5.11-rel20.2.115.rhel5
Percona-Server-devel-55-5.5.11-rel20.2.115.rhel5
Percona-Server-test-55-5.5.11-rel20.2.115.rhel5


9. after Percona-server installation it is necessary to check if it started correctly as some variables in my.cnf are not supported.
10. after successful start it is necessary to run mysql_upgrade.
11. for finishing installation run easyapache and recompile apache/php/etc
12. Go to Server Configuration -> Update Config and set MySQL to "never", save, double check it has been done
13. Test new Apache to be sure server is working

11/29/2010

how to convert tables to InnoDB

Using nice tool from Maatkit, we can easy convert tables from any storage engine to other. there is example how to convert from myisam to  innodb

mk-find db-name --engine MyISAM --exec "ALTER TABLE %D.%N ENGINE=INNODB" --print

9/10/2010

Mysql master-master replication

Today I’m going to write a short manual how to create failover mysql cluster.
What we need:

Server1 = master 1/slave2
Server2 = master2/slave2
Internal or external IPs (in this example I will use server1 _ip and server2_ip)
Replication user = replicau


Step-by-step how to:
Step 1.
On server 1 in my.cnf we need to add following lines

[mysqld]
#master config
Server-id =1
Log-bin = mysql-bin
binlog-do-db = test_db
… #we can add as many DB as we need to replicate
#slave config
replicate-do-db = test_db
… #we can add as many DB as we need to replicate
master-host = server2_ip
master-user= replicau
master-password =password_of_user_replicau
master-port = 3306


same lines we should add in my.cnf on server2, the only thing we should change is master-host parameter to use server1_ip instead of server2_ip and change server-id parameter
Step 2
Restart mysql servers
Step 3
On each server we need to create replication user:
Server1

mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicau'@'server2_ip' IDENTIFIED BY 'password';
server2

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicau'@'server1_ip' IDENTIFIED BY 'password';

Step 4
Add server2 as slave to server1
- we need to set read_only parameter as ON on server1 (master 1)

mysql> SET GLOBAL read_only = ON;
mysql> show master status;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 | 7984 | | |
+------------------+----------+--------------+------------------+
1 row in set (0,00 sec)
on server2

mysql>slave stop;
mysql> CHANGE MASTER TO MASTER_HOST = "server2_ip", MASTER_USER = "replicau", MASTER_PASSWORD = "password_of_user_replication", MASTER_LOG_FILE = "mysql-bin.000006", MASTER_LOG_POS = 7984;
mysql> slave start;


on server1

mysql> SET GLOBAL read_only = OFF;

on server2 check connection status

mysql> show slave status;

if we do not receive any errors, everything is perfect 

Step 5
Do Step 4 for connecting server 1 as slave to server2.

Step 6
Check if everything is fine, if no try from step 1 

Step 7
It’s time to have a cup of coffee/tea of a bottle of beer

7/12/2010

Installing Lighttpd With PHP5 And MySQL Support On Debian Etch

best manual I ever found is there

6/01/2010

[FIX] #1153 – Got a packet bigger than ‘max_allowed_packet’ bytes

If you get such king of error #1153 – Got a packet bigger than ‘max_allowed_packet’ bytes

there are the steps how to fix this

1. login into your server
2. enter into mysql

set this 2 variables

set global max_allowed_packet=1000000000;
set global net_buffer_length=1000000;

3. exit from mysql

4. add this line into my.cnf

max_allowed_packet=16M

5 restart mysql

/etc/init.d/mysql restart

6. upload dump :)

4/24/2010

mysql tuning

for high load mysql servers you most probably will need suggestion what parameter you should change to improve performance

First of all I recommend to run mysqltuner script
usage:

wget http://mysqltuner.com/mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl

You will be prompted to enter valid mysql credentials and after that you will see recommendation what should you tune on your mysql server

mysql optimize tables

and there I found nice perl script which can be run on your server and you can optimize tables in DB
you can download it from there

10/12/2009

Changing MySQL Root Password

Changing MySQL Root Password


1. Login as root to the box with the MySQL server.
2. Stop MySQL server.
3. Open the mysql server startup script. This is the file you have just executed to stop MySQL server.
4. Find the line that contains the mysqld_safe command and add --skip-grant-tables as its parameter.
5. Start MySQL server.
6. Login as the mysql user and connect to the mysql user/permission database and run the update queries:
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newrootpassword') WHERE User='root';
mysql> FLUSH PRIVILEGES;
replacing newrootpassword with the new root password to the box with the MySQL server.
7. Exit mysql database by typing \q.
8. Exit mysql user console by typing exit
9. Stop MySQL server.
10. Open the mysql server startup script and remove the --skip-grant-tables parameter you added above.
11. Start MySQL server.
12. Open the file ~mysql/.my.cnf and update the password in the corresponding line.