Hướng dẫn cập nhật MariaDB cho HocVPS Script

25

Hi, Xin chào các bạn! Có lẽ rằng bài viết này là bài viết được các bạn mong chờ nhất trong các Serial bài viết cập nhật hocvps mà mình viết thời gian qua. MariaDB là một thành phần quan trọng trong HocVPS Script, việc cập nhật cũng giúp cho VPS hoạt động trơn tru hơn, tránh các lỗi bảo mật không cần có.

Vì vậy hôm nay mình sẽ hướng dẫn các bạn cập nhật thành phần cuối cùng của HocVPS Scipt

Cập nhật MariaDB cho HocVPS Script
Cập nhật MariaDB cho HocVPS Script

Kiểm tra phiên bản MariaDB hiện tại.

Để kiểm tra phiên bản MariaDB hiện đang chạy bạn dùng lệnh

mysql -u admin -p

Trong đó admin là username HocVPS của bạn, nhập pass vào bạn nhận được những thông tin sau:

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2263
Server version: 10.0.38-MariaDB MariaDB Server

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

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

Như vậy hiện tại phiên bản MariaDB của mình là 10.0 trong khi bản mới nhất Stable Version là 10.4 và 10.5 cho phiên bản Beta => Quá cũ cho một cuộc tình, tiến hành Update thôi.

Tắt phiên bản MariaDB đang chạy

Stop MySQL đang chạy bằng lệnh sau:

#Centos 7
systemctl stop mysql
#Centos 6
service mysql stop

Kiểm tra chính xác xem MySQL đã tắt chưa:

#Centos 7
systemctl status mysql
#Centos 6
service mysql status

Kết quả như sau bạn đã tắt được MySQL

mysql.service - LSB: start and stop MariaDB
Loaded: loaded (/etc/rc.d/init.d/mysql; bad; vendor preset: disabled)
Active: inactive (dead) since Sun 2019-12-29 20:29:26 +07; 1s ago
Docs: man:systemd-sysv-generator(8)
Process: 3296 ExecStop=/etc/rc.d/init.d/mysql stop (code=exited, status=0/SUCCESS)
Process: 839 ExecStart=/etc/rc.d/init.d/mysql start (code=exited, status=0/SUCCESS)

Backup dữ liệu

Để an toàn, bạn hãy backup dữ liệu đang có bằng lệnh sau:

cp -r /var/lib/mysql /var/lib/mysqlbackup

Xoá phiên bản MariaDB đang chạy

Bạn cần xoá phiên bản MariaDB đang chạy để nhường chỗ cho bản cập nhật sau

yum remove mariadb-server

Tiến hành cập nhật MariaDB cho HocVPS Script

Ok, bây giờ bạn có thể cập nhật MariaDB. Tại SFTP truy cập  /etc/yum.repos.d  tìm file   MariaDB.repo sửa nội dung file này thành:

# MariaDB 10.4 CentOS repository list - created 2017-04-12 03:14 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=http://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1Lưu ý rằng bạn chỉ sửa version mà mình tô đỏ ở trên thôi nhé.

Tiến hành  cập nhật bằng lệnh sau:

yum install MariaDB-server MariaDB-client

Nhấn Y để đồng ý tải về và cài đặt.

Chỉnh sửa file /etc/my.cnf tìm dòng  87 và xoá nó

innodb_support_xa=1

Khi quá trình cài đặt hoàn tất, hãy bật MariaDB để khởi động dịch vụ bằng lệnh:

systemctl enable mariadb
systemctl start mariadb
mysql_upgrade

Kiểm tra lại MariaDB bằng lệnh

mysql -u admin -p

Nếu như bạn nhận được kết quả này là bạn đã thành công:

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.7-MariaDB MariaDB Server

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

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

Lời kết

Như vậy mình dã hướng dẫn xong các bạn cách cập nhật MariaDB cho HocVPS Script. Xin lỗi vì mình cập nhât bài này hơi chậm trễ.

Mong rằng các bạn ủng hộ mình thêm để mình có thể có thêm động lực viết bài hơn nữa. Chân thành cảm ơn!

25 Comments
  1. Chuong Le says

    Trong quá trình Running transaction của lệnh “yum install MariaDB-server MariaDB-client” thì có thông báo:
    Failed to resolve typeattributeset statement at /etc/selinux/targeted/tmp/modules/400/mariadb/cil:1
    /usr/sbin/semodule: Failed!
    Sau đó vẫn báo việc cài đặt Complete!

    systemctl enable mariadb

    Created symlink from /etc/systemd/system/mysql.service to /usr/lib/systemd/system/mariadb.service.
    Created symlink from /etc/systemd/system/mysqld.service to /usr/lib/systemd/system/mariadb.service.
    Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

    systemctl start mariadb
    Job for mariadb.service failed because the control process exited with error code. See “systemctl status mariadb.service” and “journalctl -xe” for details.

    Kiểm tra systemctl status mariadb.service -l
    * mariadb.service – MariaDB 10.3.21 database server
    Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
    Drop-In: /etc/systemd/system/mariadb.service.d
    `-migrated-from-my.cnf-settings.conf
    Active: failed (Result: exit-code) since Sun 2019-12-29 21:30:50 +07; 27s ago
    Docs: man:mysqld(8)
    https://mariadb.com/kb/en/library/systemd/
    Process: 6293 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=7)
    Process: 6068 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
    Process: 6065 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
    Main PID: 6293 (code=exited, status=7)
    Status: “MariaDB server is down”

    Hiện tại là webserver đơ luôn vì không chạy được mysql. Mong bạn hỗ trợ với!

    1. DiamondNgo says

      Bạn thiếu bước chỉnh sửa file /etc/my.cnf

      1. Chuong Le says

        Cảm ơn bạn nhé! Mình bị sót bước đó. Để xử lý lại xem.

      2. Chuong Le says

        Mình đã thực hiện lại được rồi. Cảm ơn bạn nhiều nhé!

        1. DiamondNgo says

          Không có gì, rất mong bạn luôn ủng hộ blog để mình có thêm động lực viết bài 🙂

  2. PH Hoàng says

    thank bác, tối qua sau khi làm sai thì sáng nay e cũng làm được 😀

    1. DiamondNgo says

      Vâng bác, mong các bạn ghé ủng hộ blog thường xuyên 😀

  3. Le Trung says

    Bác giúp với bị lỗi này

    [root@vultr ~]# mysql -u admin -p
    Enter password:
    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

    1. DiamondNgo says

      Bạn dùng Centos mấy ?

  4. Hưng says

    mình bị lỗi này bạn giúp mình với

    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

    1. DiamondNgo says

      Bạn đến bước nào ra vậy, trên là bạn chưa bật MariaDB lên nhé. Mà lần sau đừng nt mình sau 11h nữa, vợ mình chửi um sum 🙁

  5. ha h says

    mình làm xong bị lỗi thế này
    May 03 19:25:51 root mysqld[2529]: 2020-05-03 19:25:51 0 [Note] Server socket created on IP: ‘::’.
    May 03 19:25:51 root mysqld[2529]: 2020-05-03 19:25:51 0 [ERROR] Incorrect definition of table mysql.event: expected column ‘sql_mode’ at position 14 to have type set(‘REAL_AS_FLOAT’,’PIPES_AS_CONCAT’,’ANSI_QUOTES’,’IGNORE_SPACE’,’IGNORE_BAD_TABLE_OPTIONS’,’ONLY_FULL_GROUP_BY’,’NO_UNSIGNED_SUBTRACTION’,’NO_DIR_IN_CREATE’,’POSTGRESQL’,’ORACLE’,’MSSQL’,’DB2′,’MAXDB’,’NO_KEY_OPTIONS’,’NO_TABLE_OPTIONS’,’NO_FIELD_OPTIONS’,’MYSQL323′,’MYSQL40′,’ANSI’,’NO_AUTO_VALUE_ON_ZERO’,’NO_BACKSLASH_ESCAPES’,’STRICT_TRANS_TABLES’,’STRICT_ALL_TABLES’,’NO_ZERO_IN_DATE’,’NO_ZERO_DATE’,’INVALID_DATES’,’ERROR_FOR_DIVISION_BY_ZERO’,’TRADITIONAL’,’NO_AUTO_CREATE_USER’,’HIGH_NOT_PRECEDENCE’,’NO_ENGINE_SUBSTITUTION’,’PAD_CHAR_TO_FULL_LENGTH’,’EMPTY_STRING_IS_NULL’,’SIMULTANEOUS_ASSIGNMENT’), found type set(‘REAL_AS_FLOAT’,’PIPES_AS_CONCAT’,’ANSI_QUOTES’,’IGNORE_SPACE’,’IGNORE_BAD_TABLE_OPTIONS’,’ONLY_FULL_GROUP_BY’,’NO_UNSIGNED_SUBTRACTION’,’NO_DIR_IN_CREATE’,’POSTGRESQL’,’ORACLE’,’MSSQL’,’DB2′,’MAXDB’,’NO_KEY_OPTIONS’,’NO_TABLE_OPTIONS’,’NO_FIELD_OPTIONS’,’MYSQL323′,’MYSQL40′,’ANSI’,’NO_AUTO_VALU
    May 03 19:25:51 root mysqld[2529]: 2020-05-03 19:25:51 0 [ERROR] mysqld: Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler.
    May 03 19:25:51 root mysqld[2529]: 2020-05-03 19:25:51 3 [Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name. Please run mysql_upgrade
    May 03 19:25:51 root mysqld[2529]: 2020-05-03 19:25:51 3 [ERROR] InnoDB: Column last_update in table mysql.innodb_table_stats is INT UNSIGNED NOT NULL but should be BINARY(4) NOT NULL (type mismatch).
    May 03 19:25:51 root mysqld[2529]: 2020-05-03 19:25:51 3 [ERROR] InnoDB: Fetch of persistent statistics requested for table mysql.gtid_slave_pos but the required system tables mysql.innodb_table_stats and mysql.innodb_index_stats are not present or have unexpected structure. Using transient stats instead.
    May 03 19:25:51 root mysqld[2529]: 2020-05-03 19:25:51 0 [Note] InnoDB: Buffer pool(s) load completed at 200503 19:25:51
    May 03 19:25:51 root mysqld[2529]: 2020-05-03 19:25:51 0 [Note] /usr/sbin/mysqld: ready for connections.
    May 03 19:25:51 root mysqld[2529]: Version: ‘10.3.22-MariaDB’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 MariaDB Server
    May 03 19:25:51 root systemd[1]: Started MariaDB 10.3.22 database server.

    1. DiamondNgo says

      Đâu có lỗi gì đâu nhỉ

  6. Nhật IQOS says

    Sau khi mình nâng cấp lên thì không dùng được mục tạo database trong hocvps

    1. DiamondNgo says

      Mình tạo bình thường mà nhỉ ????

      1. Ed Carroll says

        Xac nhan la ko dc

        1. DiamondNgo says

          Mình sẽ kiểm tra lại

    2. THANH VU NGUYEN says

      Chính xác luôn bạn ! nâng cấp xong là hok sử dụng mục tạo database trong hocvps.
       

      1. DiamondNgo says

        Chụp minh xem lỗi đó nhé

        1. THANH VU NGUYEN says

          Đây bạn !
           

        2. THANH VU NGUYEN says

          Và đây là version

          1. DiamondNgo says

            Bạn chạy giúp mình lệnh: mysql_upgrade

          2. THANH VU NGUYEN says

            Cám ơn bạn ! đang sử dụng được mục tạo database trong hocvps

          3. DiamondNgo says

            Không có gì, tiện bác nên Upgrade lên 10.5 đi nhé 😀

  7. Huy says

    thanks ad, bài viết hay

Leave A Reply

Your email address will not be published.