[HOWTO] Cài đặt Percona: cài đặt mới hoặc thay thế MySQL

[HOWTO] Cài đặt Percona: cài đặt mới hoặc thay thế MySQL

Why Percona?

Percona là 1 nhánh khác của MySQL, cùng thuộc sở hữu của Oracle . Percona cho hiệu năng sử dụng tốt hơn, tính mở rộng cao hơn so với MySQL thuần. Các câu lệnh query chạy trên MySQL hoàn toàn có thể dùng trên Percona mà không cần chỉnh sửa. Bài viết này sẽ hướng dẫn bạn cách cài đặt và config Percona trên server CentOS hoặc AWS Instance

 

Step 1: Kiểm tra version (trường hợp thay thế MySQL)

Để tránh bị xung đột khi chuyển từ MySQL sang Percona, trước tiên ta nên kiểm tra version hiện tại của MySQL server

Đăng nhập với quyền root

mysql -uroot -p

Mặc định khi cài MySQL server thì user root sẽ không có password

bash-4.1$ mysql -uroot -p
 Enter password:
 Welcome to the MySQL monitor.  Commands end with ; or \g.

Tra cứu phiên bản

SHOW VARIABLES LIKE "version"

Kết quả

mysql>     SHOW VARIABLES LIKE "version";
 +---------------+----------------+
 | Variable_name | Value          |
 +---------------+----------------+
 | version       | 5.6.17-65.0-56 |
 +---------------+----------------+
 1 row in set (0.00 sec)

 

Như vậy ta cần cài Percona version 5.6

Step 2: Gỡ bỏ MySQL

Trước tiên dừng mysql service lại và gỡ bỏ mysql-server

sudo service mysqld stop
sudo yum remove mysql-server

Step 3: Cài đặt Percona

Chạy lệnh cài đặt Percona, ở đây ta chọn version 5.6

sudo yum install http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
sudo yum install Percona-Server-server-56.x86_64

Khởi động Percona. Lưu ý service của Percona sẽ là mysql thay vì mysqld như với MySQL thông thường.

sudo service mysql start

Sau khi cài đặt xong thì Percona sẽ tự tạo 1 user root mặc định không có password. Để đảm bảo an toàn, chạy lệnh sau để set password cho root (có thể cần quyền sudo)

sudo mysql_secure_installation

 

Step 4: Config cho Percona

Percona khi được start thì sẽ tìm nội dung config ở file my.cnf, đối với CentOS thì thường nằm ở /etc/my.cnf.

Nếu trước đó server đã cài sẵn MySQL thì file my.cnf sẽ có sẵn. Với trường hợp cài đặt mới Percona, ta có thể truy cập vào https://tools.percona.com/wizard để tạo 1 file config phù hợp với cấu hình server và nhu cầu sử dụng. Dưới đây là sample của file config

# Generated by Percona Configuration Wizard (http://tools.percona.com/) version REL5-20120208

[mysql]

# CLIENT #
port                           = 3306
socket                         = /var/lib/mysql/mysql.sock

[mysqld]

# GENERAL #
user                           = mysql
default-storage-engine         = InnoDB
socket                         = /var/lib/mysql/mysql.sock
pid-file                       = /var/lib/mysql/mysql.pid

# MyISAM #
key-buffer-size                = 32M
myisam-recover                 = FORCE,BACKUP

# SAFETY #
max-allowed-packet             = 16M
max-connect-errors             = 1000000

# DATA STORAGE #
datadir                        = /var/lib/mysql/

# BINARY LOGGING #
log-bin                        = /var/lib/mysql/mysql-bin
expire-logs-days               = 14
sync-binlog                    = 1

# CACHES AND LIMITS #
tmp-table-size                 = 32M
max-heap-table-size            = 32M
query-cache-type               = 0
query-cache-size               = 0
max-connections                = 500
thread-cache-size              = 50
open-files-limit               = 65535
table-definition-cache         = 1024
table-open-cache               = 2048

# INNODB #
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 2
innodb-log-file-size           = 64M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table          = 1
innodb-buffer-pool-size        = 256M

# LOGGING #
log-error                      = /var/lib/mysql/mysql-error.log
log-queries-not-using-indexes  = 1
slow-query-log                 = 1
slow-query-log-file            = /var/lib/mysql/mysql-slow.log

Khởi động lại Percona để nhận nội dung config mới

sudo service mysql restart

 

Trouble Shooting

Lỗi không khởi động được Percona

bash-4.1$ sudo service mysql restart
 ERROR! MySQL (Percona Server) PID file could not be found!
Starting MySQL (Percona Server).......... ERROR! The server quit without updating PID file (/var/lib/mysql/mysql.pid).

Nguyên nhân thường gặp là do innodb-buffer-pool-size lớn hơn mức server có thể đáp ứng. Thử thay giảm innodb-buffer-pool-size  xuống

# INNODB #
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 2
innodb-log-file-size           = 64M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table          = 1
innodb-buffer-pool-size        = 256M

Sau đó restart lại Percona

bash-4.1$ sudo vi my.cnf
bash-4.1$ sudo service mysql restart
 ERROR! MySQL (Percona Server) PID file could not be found!
Starting MySQL (Percona Server)...... SUCCESS!

Các lỗi khác có thể xem ở chi tiết ở Percona log. Tên file log trùng với IP-private của server, phần mở rộng là .err.

Thường là 2 file sau:
/var/log/mysqld.log

/var/lib/mysql/ip-10-134-9-94.err

Chạy lệnh

sudo tail -n 100 /var/lib/mysql/ip-10-134-9-94.err

để xem lỗi của Percona. Một lỗi khác hay gặp là lỗi liên quan tới permission:

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

Phương án giải quyết là chạy lệnh

sudo yum -y install perl-Data-Dumper
sudo mysql_install_db --user=mysql

Sau đó thì đã có thể khởi động Percona bình thường

sudo service mysql start
Starting MySQL (Percona Server).. SUCCESS!

 

 

Tham khảo thêm: Tối ưu hoá Percona