ขั้นตอนการอัพเกรดจาก MariaDB 5.5 ไปเป็น MariaDB 10.2 บน CentOS 7

ขั้นตอนการอัพเกรดจาก MariaDB 5.5 ไปเป็น MariaDB 10.2 บน CentOS 7

ขั้นตอนการอัพเกรดจาก MariaDB 5.5 ไปเป็น MariaDB 10.2  นั้นไม่ยากครับ แต่ที่หลายคนไม่กล้าทำเพราะกลัวทำแล้ว สตาร์ทไม่ขึ้น แล้วไม่รู้จะแก้ปัญหายังไง ผมมีวิธีการอัพเกรด และวิธีแก้ปัญาใน ขั้นตอนการอัพเกรดจาก MariaDB 5.5 ไปเป็น MariaDB 10.2 มาให้ศึกษากันดู ส่วนจะกล้าทำหรือไม่ ก็แล้วแต่ใจของท่านครับ ว่าใจสู้หรือเปล่า

เครื่องผม CentOS 7 ติดตั้ง MariaDB 5.5.58 ใช้งานอยู่แล้ว มีฐานข่อมูลอยู่แล้ว ความต้องการคือเปลี่ยนเป็น MariaDB 10.2

[root@mariadb55 ~]# rpm -qa|grep MariaDB
MariaDB-common-5.5.58-1.el7.centos.x86_64
MariaDB-server-5.5.58-1.el7.centos.x86_64
MariaDB-compat-5.5.58-1.el7.centos.x86_64
MariaDB-client-5.5.58-1.el7.centos.x86_64
MariaDB-shared-5.5.58-1.el7.centos.x86_64

หยุดการทำงานของ MariaDB 5.5

[root@mariadb55 ~]# systemctl stop mysql.service

ถอน MariaDB 5.5 ทุกแพ็กเกจที่มีออกไป ไม่ต้องกลัวฐานข้อมูลที่มีอยู่ไม่หาย

[root@mariadb55 yum.repos.d]# rpm -e --nodeps MariaDB-common
warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
[root@mariadb55 yum.repos.d]# rpm -e --nodeps MariaDB-server
[root@mariadb55 yum.repos.d]# rpm -e --nodeps MariaDB-compat
[root@mariadb55 yum.repos.d]# rpm -e --nodeps MariaDB-client
[root@mariadb55 yum.repos.d]# rpm -e --nodeps MariaDB-share
[root@mariadb55 yum.repos.d]# rpm -e --nodeps MariaDB-shared
[root@mariadb55 yum.repos.d]#

warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave

***จะเห็นว่า my.cnf เดิมที่เราใช้งานอยู่มันโดนเปลี่ยนชื่อ ไม่ต้องตกใจค่อยว่ากันทีหลัง
 

เตรียมติดตั้งเวอร์ชัน 10.2

ไปที่เว็บ  https://downloads.mariadb.org/mariadb/repositories/

เลือกตามรูป จะได้แหล่งสำหรับติดตั้ง MariaDB 10.2

เข้าไปที่ /etc/yum.repos.d

[root@mariadb55 ~]# cd /etc/yum.repos.d/
[root@mariadb55 yum.repos.d]# vi MariaDB.repo

ในไฟล์ MariaDB.repo ถ้ามีเนื้อความเก่าอยู่ที่เป็นเวอร์ชัน 5.5 ก็ให้แทนที่ด้วยเวอร์ชัน 10.2 ดังถาพ

ขั้นตอนการอัพเกรดจาก MariaDB 5.5 ไปเป็น MariaDB 10.2

บันทึกไฟล์เสร็จก็สั่งติดตั้งได้เลยด้วยคำสั่ง  yum install MariaDB-server

[root@mariadb55 yum.repos.d]# yum install MariaDB-server

ตอบ y

ขั้นตอนการอัพเกรดจาก MariaDB 5.5 ไปเป็น MariaDB 10.2

รอจนติดตั้งเสร็จ

ขั้นตอนการอัพเกรดจาก MariaDB 5.5 ไปเป็น MariaDB 10.2

อย่าเพิ่งสั่งสตาร์ทเป็นอันขาด เอาไฟล์ my.cnf เดิม กลับมาก่อน

[root@mariadb55 yum.repos.d]# cd /etc/
[root@mariadb55 etc]# cp my.cnf.rpmsave my.cnf

 

สั่งสตาร์ท

[root@mariadb55 etc]# systemctl start mariadb.service
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.
[root@mariadb55 etc]#

สตาร์ทไม่ขึ้นแน่นอนครับ เพราะตัวแปร ใน my.cnf ของเวอร์ชัน 5.5 บางตัวมันใช้ไม่ได้ในเวอร์ชัน 10.2 ให้แก้ไฟล์/etc/my.cnf เพิ่มบรรทัด log_error = /var/lib/mysql/mariadb10.err  ใต้  [mysqld] เพื่อดูใน error log ว่า มันไม่รู้จัก ตัวแปรตัวไหนบ้าง

[mysqld]

log_error = /var/lib/mysql/mariadb10.err

เพิ่มเสร็จบันทึกไฟล์ my.cnf

แล้วสั่ง start อีกครั้ง

[root@mariadb55 etc]# systemctl start mariadb.service
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details. [root@mariadb55 etc]#

สตาร์ทไม่ขึ้น ก็เข้าไปดูในไฟล์  /var/lib/mysql/mariadb10.err เปิดไฟล์ขึ้นมา สำหรับคนที่ไม่เคยเปิดดูก็จะพบว่า อะไรไม่รู้เยอะแยะไปหมด

ขั้นตอนการอัพเกรดจาก MariaDB 5.5 ไปเป็น MariaDB 10.2

ไล่ลงไปบรรทัดล่างๆ หรือล่างสุด พยายามหาบรรทัดที่มี [ERROR] แล้วอ่าน

มันบอกว่ามันไม่รู้จักตัวแปรตัวหนึ่ง

ขั้นตอนการอัพเกรดจาก MariaDB 5.5 ไปเป็น MariaDB 10.2

เปิดไฟล์ /etc/my.cnf แล้วใส่ # เอาไว้ หน้าบรรทัด หรือจะลบทิ้งก็แล้วแต่สะดวก

#innodb_additional_mem_pool_size = 24M

บันทึกไฟล์แล้วสั่งสตาร์ทอีกครั้ง

[root@mariadb55 etc]# systemctl start mariadb.service
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.
[root@mariadb55 etc]#

สตาร์ทไม่ได้อีก งั้นก็ดู error log อีก ยังมีตัวแปร ที่มันไม่รู้จักอีกขั้นตอนการอัพเกรดจาก MariaDB 5.5 ไปเป็น MariaDB 10.2

แก้ไฟล์ /etc/my.cnf อีก ใส่ # อีก

#innodb_ibuf_max_size = 1600M

** error ที่นำมาให้ดูเป็นไฟล์ my.cnf ในเครื่องผม หาก my.cnf ต่างกัน ตัวแปรต่างกัน ก็อาจจะ error อย่างอื่น อันนี้แค่ตัวอย่างที่มีอยู่จริงในเครื่องผม

สตาร์ทใหม่ เย้! สำเร็จ

[root@mariadb55 mysql]# systemctl start mariadb.service 
[root@mariadb55 mysql]# 

สตาร์ทสำเร็จล่ะ

ก่อนทำอะไรต่อก็อัพเกรดเสียก่อน

[root@mariadb55 mysql]# mysql_upgrade -u root -p123456
Phase 1/7: Checking and upgrading mysql database
Processing databases
mysql
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
...
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
Phase 4/7: Running 'mysql_fix_privilege_tables'
Phase 5/7: Fixing table and database names
Phase 6/7: Checking and upgrading tables
Processing databases
employees
employees.departments OK
employees.dept_emp OK
employees.dept_manager OK
employees.employees OK
employees.salaries OK
employees.titles OK
information_schema
performance_schema
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK
[root@mariadb55 ~]#

พร้อมแล้วก็เข้าใช้งานเลย จะเห็นว่าเป็นเวอร์ชัน 10.2 แล้ว

[root@mariadb55 mysql]# mysql -u root -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 22
Server version: 10.2.11-MariaDB-log MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

อัพเกรดจาก MariaDB 5.5 เป็น MariaDB 10.2 เรียบร้อยแล้วครับ

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| employees          |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> 

ทดลองใช้งานฐานข้อมูลเดิมสักหน่อย

MariaDB [(none)]> use employees;
Database changed
MariaDB [employees]> show tables;
+---------------------+
| Tables_in_employees |
+---------------------+
| departments         |
| dept_emp            |
| dept_manager        |
| employees           |
| salaries            |
| titles              |
+---------------------+
6 rows in set (0.00 sec)

MariaDB [employees]> 

select ได้ปกติ

MariaDB [employees]> select * from titles limit 5;
+--------+-----------------+------------+------------+
| emp_no | title           | from_date  | to_date    |
+--------+-----------------+------------+------------+
|  10001 | Senior Engineer | 1986-06-26 | 9999-01-01 |
|  10002 | Staff           | 1996-08-03 | 9999-01-01 |
|  10003 | Senior Engineer | 1995-12-03 | 9999-01-01 |
|  10004 | Engineer        | 1986-12-01 | 1995-12-01 |
|  10004 | Senior Engineer | 1995-12-01 | 9999-01-01 |
+--------+-----------------+------------+------------+
5 rows in set (0.01 sec)

MariaDB [employees]> 



ผมนำเสนอเพื่อเป็นแนวทางในการอัพเกรดนะครับ แค่อยากบอกว่ามันทำได้ ส่วนใครจะทำหรือไม่ก็แล้วแต่ความจำเป็นครับว่าจำเป็นต้องใช้ความสามารถใหม่ๆ ของ MariaDB 10.2 หรือไม่ ถ้าไม่จำเป็นก็ให้ถือคติที่ว่า “อะไรที่ดีอยู่แล้วก็อย่าไปยุ่งกับมัน”

 

>> เรื่องราวเกี่ยวกับลีนุกซ์ทั้งหมด <<

 

Loading