ขั้นตอนการอัพเกรดจาก 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 ดังถาพ
บันทึกไฟล์เสร็จก็สั่งติดตั้งได้เลยด้วยคำสั่ง yum install MariaDB-server
[root@mariadb55 yum.repos.d]# yum install MariaDB-server
ตอบ y
รอจนติดตั้งเสร็จ
อย่าเพิ่งสั่งสตาร์ทเป็นอันขาด เอาไฟล์ 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 เปิดไฟล์ขึ้นมา สำหรับคนที่ไม่เคยเปิดดูก็จะพบว่า อะไรไม่รู้เยอะแยะไปหมด
ไล่ลงไปบรรทัดล่างๆ หรือล่างสุด พยายามหาบรรทัดที่มี [ERROR] แล้วอ่าน
มันบอกว่ามันไม่รู้จักตัวแปรตัวหนึ่ง
เปิดไฟล์ /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 อีก ยังมีตัวแปร ที่มันไม่รู้จักอีก
แก้ไฟล์ /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 หรือไม่ ถ้าไม่จำเป็นก็ให้ถือคติที่ว่า “อะไรที่ดีอยู่แล้วก็อย่าไปยุ่งกับมัน”
>> เรื่องราวเกี่ยวกับลีนุกซ์ทั้งหมด <<