Arch Linux: Chuyển từ MySQL sang MariaDB

Từ 25/03/2013 gói MySQL trên Repository đã được chuyển sang AUR và thay vào đó là mariadb. Đã có nhiều thông tin so sánh, đánh giá, … về MySQL và MariaDB, mình không bàn đến đây vì nói cũng bằng thừa trước lượng thông tin quá lớn như vậy :zzz: Nấn ná khá lâu rồi mình mới chuyển từ MySQL sang MariaDB, một phần vì lười, ngại config hay fix gì đó nếu không suôn sẻ trước một đống data: local wiki, wordpress, CRM, feeds … chủ yếu là build MySQL từ AUR lâu quá :point_down:
Thực ra chuyển sang MariaDB cũng khá đơn giản, trên Arch Linux có script chạy tự động nên cũng không phải thao tác gì nhiều. Để chuyển đổi, bạn thực hiện như sau: (đơn giản nhất là chuyển sang dấu nhắc root # sau đó copy toàn bộ đoạn lệnh dưới đây vào Terminal để nó thực hiện tuần tự)
Backup toàn bộ dữ liệu trước khi tiến hành đề phòng ông giời ghen ăn tức ở cắt điện hay máy die bất thình lình:mask: :stuck_out_tongue_closed_eyes:

# systemctl stop mysqld
# pacman -S mariadb libmariadbclient mariadb-clients
# rm /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile1 /var/lib/mysql/aria_log_control
# systemctl start mysqld
# mysql_upgrade -p

Lưu ý:

  • Câu lệnh thứ 3 xóa log của MySQL, nếu không xóa thì sẽ phát sinh lỗi và không thể kích hoạt được dịch vụ mysqld
  • Lệnh cuối cùng cần nhập mật khẩu tài khoản root của MySQL chứ không phải tài khoản hệ thống.

Từ giờ trở đi bạn có thể cập nhật trực tiếp từ Repository thay vì phải chờ đợi hệ thống build từ AUR, khá lâu, có lúc đến cà tiếng :snail:

Giảm dung lượng log của MySQL (MariaDB)

Bạn đã bao giờ xem thử trong thư mục /var/lib/mysql/ chưa, hãy xem thử đi, bạn sẽ giật mình đấy. Khi mình vào thư mục này để xóa 3 file log trong lệnh thứ 3 ở trên thì thấy tầm 30.000 tập tin dạng mysql-bin.xxxxxx, tìm hiểu thì mới biết các tập tin này chỉ là nhật ký hoạt động (log) của dịch vụ mysqld. Nếu dùng trên máy cá nhân (thậm chí trên máy chủ bình thường) thì các tập tin này chả có nhiều giá trị, thậm chí làm nặng máy. Để giảm bớt nó, bạn thêm dòng dưới đây vào tập tin /etc/mysql/my.cnf

expire_logs_days = 1

Số ngày bạn có thể thay đổi cho phù hợp với công việc của mình. :v:

Khắc phục lỗi mysql-bin.index not found (Errcode: 13)

Lỗi này xảy ra khi có sự cố về ổ cứng hoặc liên quan đến tập tin mysql-bin.index, đơn giản hơn là khi copy dữ liệu trực tiếp từ máy này sang máy khác ở thư mục /var/lib/mysql dẫn đến sai lệch về phân quyền. Để xử lí, chỉ cần dùng lệnh:

# chown -R mysql.mysql /var/lib/mysql