อัพเกรดฐานข้อมุล mariadb บน cyberpanel จาก 10.3 to 10.6

แชร์ความรู้ Linux Ubuntu Web Server บทความ การ config server Linux FreeBSD Apache
การติดตั้ง XAMPP Mysql PHP ใครต้องการแชร์ความรู้เรื่องต่างๆ เหล่านี้ให้ ท่านหรืออื่น โพสที่หมวดนี้ได้

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 48127
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

อัพเกรดฐานข้อมุล mariadb บน cyberpanel จาก 10.3 to 10.6

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

อัพเกรดฐานข้อมุล mariadb บน cyberpanel จาก 10.3 to 10.6
Script สำหรับอัพเกรดอัพตโนมัติ

โค้ด: เลือกทั้งหมด

wget -qO- https://raw.githubusercontent.com/dannydev77/database_upgrade_utility_script/main/database_upgrade.sh | bash
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 48127
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: อัพเกรดฐานข้อมุล mariadb บน cyberpanel จาก 10.3 to 10.6

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

แบบ : Manual – วิธีนี้จะเป็นการทำขั้นตอนแบบทีละขั้นตอนด้วยตัวเอง

ก่อนที่จะเริ่มการอัปเกรด อย่าลืมสำรองข้อมูลก่อน เพื่อไว้ใช้กลับมาในกรณีที่มีอะไรผิดพลาด

Steps:

1. ยืนยันเวอร์ชันการติดตั้ง mariadb ปัจจุบันโดยการพิมพ์

โค้ด: เลือกทั้งหมด

mariadb --version
***
mariadb Ver 15.1 Distrib 10.3.39-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
***
2. การสำรองข้อมูล:
ทำการสำรองฐานข้อมูลทั้งหมดโดยใช้คำสั่งด้านล่างนี้

คำสั่งแรก:

สร้างไดเรกทอรีเพื่อจัดเก็บไฟล์สำรอง

สำหรับกรณีของฉัน:

โค้ด: เลือกทั้งหมด

mkdir -p /home/dbs/databases
สำรองข้อมูลโดยใช้คำสั่งด้านล่างนี้

โค้ด: เลือกทั้งหมด

mysql -N -e 'show databases' | while read dbname; do mysqldump --complete-insert --routines --triggers --single-transaction "$dbname" > /home/dbs/databases/"$dbname".sql; done
หรือคำสั่งที่สอง:

โค้ด: เลือกทั้งหมด

mysqldump --events --all-databases | gzip > /home/alldatabases.sql.gz
3. รับรหัสผ่าน root ของ mariadb : จะต้องใช้ในขั้นตอนต่อไป

โค้ด: เลือกทั้งหมด

cat /etc/cyberpanel/mysqlPassword
4. ตั้งค่าการปิด mariadb อย่างถูกต้องโดยการรันคำสั่งต่อไปนี้ใน mariadb cli

โค้ด: เลือกทั้งหมด

SET GLOBAL innodb_fast_shutdown = 1;
XA RECOVER;
exit;
5. หยุดการทำงานของฐานข้อมูลเซิร์ฟเวอร์และลบ MariaDB

โค้ด: เลือกทั้งหมด

systemctl stop mariadb
ยืนยันว่าถูกหยุดแล้วโดยใช้คำสั่ง

โค้ด: เลือกทั้งหมด

systemctl status mariadb
***
Active: inactive (dead) since Thu 2024-08-01 12:45:15 CEST; 11s ago
Status: "MariaDB server is down"
***
เพื่อยืนยันว่าแพ็คเกจใดจะถูกลบ ให้รันคำสั่ง:

โค้ด: เลือกทั้งหมด

apt list --installed | grep -i -E "mariadb|galera"
เพื่อทำการลบ ให้รัน:

โค้ด: เลือกทั้งหมด

apt remove "*mariadb*" "galera*" -y
เพื่อยืนยันว่าแพ็คเกจทั้งหมดถูกลบ ให้รัน:

โค้ด: เลือกทั้งหมด

apt list --installed | grep -i -E "mariadb|galera"
***
(ผลลัพธ์ควรเป็นค่าว่าง)
***
6. ติดตั้งเวอร์ชันใหม่ของ MariaDB
ให้รันคำสั่งต่อไปนี้ โดยเปลี่ยนเวอร์ชัน 10.6 เป็นเวอร์ชันที่ต้องการติดตั้ง (ปัจจุบันเวอร์ชัน 10.11 เป็นเวอร์ชัน LTS ล่าสุด)

โค้ด: เลือกทั้งหมด

curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-10.6"
อัปเดตระบบ:

โค้ด: เลือกทั้งหมด

apt update -y
***
Get:6 https://dlm.mariadb.com/repo/mariadb-se ... epo/ubuntu focal InRelease [7,767 B]
***
ติดตั้ง mariadb:

โค้ด: เลือกทั้งหมด

apt install mariadb-server libmariadb-dev -y
เมื่อระบบแจ้งดังนี้ ให้เลือก N:
***
Configuration file ‘/etc/mysql/mariadb.conf.d/50-server.cnf’
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it? Your options are:
Y or I : install the package maintainer’s version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** 50-server.cnf (Y/I/N/O/D/Z) [default=N]? ***
***
รันคำสั่งต่อไปนี้เพื่ออัปเดตแพ็คเกจทั้งหมดอีกครั้ง:

โค้ด: เลือกทั้งหมด

apt update && apt upgrade -y
ยืนยันว่าแพ็คเกจที่ติดตั้งคืออะไรโดยใช้คำสั่งนี้:

โค้ด: เลือกทั้งหมด

apt list --installed | grep -i -E "mariadb|galera"
เปิดใช้งานบริการ mariadb:

โค้ด: เลือกทั้งหมด

systemctl enable mariadb
เริ่มต้นเซิร์ฟเวอร์ฐานข้อมูล:

โค้ด: เลือกทั้งหมด

systemctl start mariadb.service
7. เสร็จสิ้นการอัปเกรด:
รันสคริปต์อัปเกรด mariadb โดยใช้คำสั่ง:

โค้ด: เลือกทั้งหมด

mariadb-upgrade -u root -p --force
ใส่รหัสผ่าน root ที่ได้รับมาก่อนหน้านี้
***
root@srv:~# mysql_upgrade -u root -p –force
Enter password:
Major version upgrade detected from 10.3.39-MariaDB to 10.6.18-MariaDB. Check required!
Phase 1/8: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats OK
mysql.columns_priv OK
mysql.db OK
mysql.event OK
***
ยืนยันโดยพิมพ์:

โค้ด: เลือกทั้งหมด

systemctl status mariadb
หากยังเห็นข้อผิดพลาด เช่น “Access denied for ‘root’@’localhost” ให้รันคำสั่งอัปเกรดแบบบังคับ:

โค้ด: เลือกทั้งหมด

mariadb-upgrade --force
การตรวจสอบทั้งหมดต้องผ่านด้วย NO ERRORS!!!

การอัปเกรดฐานข้อมูลเสร็จสมบูรณ์
ฐานข้อมูลอัปเกรดจากเวอร์ชัน 10.3 เป็น 10.6

ยืนยันว่าสามารถเข้าถึงฐานข้อมูลได้โดยการพิมพ์คำสั่ง mysql หรือ mariadb

สามารถยืนยันเวอร์ชันที่ติดตั้งได้โดยใช้คำสั่งใดคำสั่งหนึ่งด้านล่างนี้:

โค้ด: เลือกทั้งหมด

SHOW GLOBAL VARIABLES LIKE 'version';
หรือ

โค้ด: เลือกทั้งหมด

SELECT VERSION();
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 48127
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: อัพเกรดฐานข้อมุล mariadb บน cyberpanel จาก 10.3 to 10.6

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

database_upgrade.sh
ถ้าโหลดจากโพสต์แรกไม่ได้ให้ดูตามนี้

โค้ด: เลือกทั้งหมด

#!/bin/bash

# ==========================================================================
# Script Name:     database_upgrade.sh
# Description:     This script automates the process of upgrading MariaDB on CyberPanel server.
# Author:          Dan Kibera
# Email:           [email protected]
# License:         MIT License
# Version:         1.1
# Date:            3rd Aug, 2024.
# ==========================================================================


# Function to check if a command exists
command_exists() {
    command -v "$1" >/dev/null 2>&1
}

# Check for root privileges
echo "=========================================================="
echo "Checking for root privilege .................................................................................."
echo "=========================================================="
if [[ $EUID -ne 0 ]]; then
   echo "=========================================================="
   echo "This script must be run as root. Exiting..."
   echo "=========================================================="
   exit 1
fi
echo "=========================================================="
echo "You are running as root....Proceeding...."
echo "=========================================================="

# Check OS version
echo "=========================================================="
echo "Checking OS version..."
echo "=========================================================="
. /etc/os-release
if [[ "$NAME" == "Ubuntu" && "${VERSION_ID//.}" -ge 2004 ]]; then
    echo "=========================================================="
    echo "OS is $NAME $VERSION_ID, compatible for upgrade."
    echo "=========================================================="
else
    echo "=========================================================="
    echo "This script is compatible only with Ubuntu 20.04 or higher. Exiting..."
    echo "=========================================================="
    exit 1
fi

# Check for control panels
echo "=========================================================="
echo "Checking for installed control panels..."
echo "=========================================================="

# Detect CyberPanel
if [[ -f /usr/local/CyberCP/CyberCP/settings.py ]]; then
    echo "CyberPanel detected."
else
    echo "=========================================================="
    echo "CyberPanel not detected. This script can only be run on servers with CyberPanel."
    echo "=========================================================="
    exit 1
fi

# Detect other common control panels
PANEL_DETECTED=false

# Check for cPanel
if [[ -d /usr/local/cpanel ]]; then
    echo "cPanel detected."
    PANEL_DETECTED=true
fi

# Check for Plesk
if [[ -d /usr/local/psa ]]; then
    echo "Plesk detected."
    PANEL_DETECTED=true
fi

# Check for CloudPanel
if [[ -d /opt/cloudpanel ]]; then
    echo "CloudPanel detected."
    PANEL_DETECTED=true
fi

# Check for other control panels
# Add checks for any additional control panels as needed

if [ "$PANEL_DETECTED" = true ]; then
    echo "=========================================================="
    echo "Another control panel detected. This script is only supported on CyberPanel. Exiting..."
    echo "=========================================================="
    exit 1
fi

# Confirm current MariaDB version
echo "=========================================================="
echo "Confirming current MariaDB version..."
echo "=========================================================="
CURRENT_VERSION=$(mariadb --version | grep -oP '\d+\.\d+\.\d+')
echo "Current MariaDB version: $CURRENT_VERSION"

# Check if upgrade from 10.3 to 10.6 is supported
echo "=========================================================="
echo "Checking if upgrade from $CURRENT_VERSION to 10.6 is supported..."
echo "=========================================================="
if [[ "$CURRENT_VERSION" =~ ^10\.3 ]]; then
    echo "=========================================================="
    echo "Upgrade path from $CURRENT_VERSION to 10.6 is supported."
    echo "=========================================================="
else
    echo "=========================================================="
    echo "Upgrade path from $CURRENT_VERSION to 10.6 may not be supported. Please check MariaDB documentation."
    echo "Exiting..."
    echo "=========================================================="
    exit 1
fi

# Check for sufficient disk space
echo "=========================================================="
echo "Checking for sufficient disk space..."
echo "=========================================================="
REQUIRED_SPACE_GB=5  # Estimate required space in GB
AVAILABLE_SPACE_GB=$(df / | awk 'NR==2 {print $4 / 1024 / 1024}')
if (( $(echo "$AVAILABLE_SPACE_GB >= $REQUIRED_SPACE_GB" | bc -l) )); then
    echo "=========================================================="
    echo "Sufficient disk space available: $AVAILABLE_SPACE_GB GB"
    echo "=========================================================="
else
    echo "=========================================================="
    echo "Insufficient disk space: $AVAILABLE_SPACE_GB GB available, $REQUIRED_SPACE_GB GB required. Exiting..."
    echo "=========================================================="
    exit 1
fi

# Backup all databases
BACKUP_DIR="/home/dbs/databases"
echo "=========================================================="
echo "Backing up all databases to $BACKUP_DIR"
echo "=========================================================="
mkdir -p "$BACKUP_DIR"
mysql -N -e 'show databases' | while read dbname; do
  echo "Backing up $dbname..."
  mysqldump --complete-insert --routines --triggers --single-transaction "$dbname" > "$BACKUP_DIR/$dbname.sql"
done
echo "=========================================================="
echo "Backup completed."
echo "=========================================================="

# Retrieve MariaDB root password
echo "=========================================================="
echo "Retrieving MariaDB root password..."
echo "=========================================================="
MYSQL_ROOT_PASSWORD=$(cat /etc/cyberpanel/mysqlPassword)
if [[ -z "$MYSQL_ROOT_PASSWORD" ]]; then
    echo "=========================================================="
    echo "MariaDB root password not found. Exiting..."
    echo "=========================================================="
    exit 1
fi
echo "Password retrieved."

# Prepare for shutdown
echo "=========================================================="
echo "Configuring MariaDB for proper shutdown..."
echo "=========================================================="
mariadb -u root -p"$MYSQL_ROOT_PASSWORD" -e "SET GLOBAL innodb_fast_shutdown = 1;"
mariadb -u root -p"$MYSQL_ROOT_PASSWORD" -e "XA RECOVER;"
echo "=========================================================="
echo "MariaDB configured for shutdown."
echo "=========================================================="

# Stop and remove the old MariaDB version
echo "=========================================================="
echo "Stopping MariaDB service..."
echo "=========================================================="
systemctl stop mariadb
if systemctl status mariadb | grep "inactive (dead)"; then
  echo "=========================================================="
  echo "MariaDB server has been stopped successfully."
  echo "=========================================================="
else
  echo "=========================================================="
  echo "Failed to stop MariaDB server. Exiting..."
  echo "=========================================================="
  exit 1
fi

echo "=========================================================="
echo "Removing old MariaDB packages..."
echo "=========================================================="
apt list --installed | grep -i -E "mariadb|galera"
apt remove "*mariadb*" "galera*" -y
if apt list --installed | grep -i -E "mariadb|galera"; then
  echo "=========================================================="
  echo "Some MariaDB packages are still present. Manual intervention required."
  echo "=========================================================="
else
  echo "=========================================================="
  echo "Old MariaDB packages removed successfully."
  echo "=========================================================="
fi

# Install the new MariaDB version
echo "=========================================================="
echo "Installing MariaDB 10.6..."
echo "=========================================================="
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-10.6"
apt update
apt install mariadb-server libmariadb-dev -y
echo "=========================================================="
echo "MariaDB 10.6 installed."
echo "=========================================================="

# Start the new MariaDB service
echo "=========================================================="
echo "Starting MariaDB service..."
echo "=========================================================="
systemctl enable mariadb
systemctl start mariadb
if systemctl status mariadb | grep "active (running)"; then
  echo "=========================================================="
  echo "MariaDB server started successfully."
  echo "=========================================================="
else
  echo "=========================================================="
  echo "Failed to start MariaDB server. Exiting..."
  echo "=========================================================="
  exit 1
fi

# Upgrade the database schema
echo "=========================================================="
echo "Running mariadb_upgrade..."
echo "=========================================================="
start_time=$(date +%s)
mariadb-upgrade -u root -p"$MYSQL_ROOT_PASSWORD"
if [ $? -eq 0 ]; then
  echo "=========================================================="
  echo "Upgrade completed successfully."
  echo "=========================================================="
else
  echo "=========================================================="
  echo "Upgrade encountered issues. Please check the logs."
  echo "=========================================================="
  exit 1
fi

# Force the upgrade
echo "=========================================================="
echo "Forcing upgrade with mariadb-upgrade --force..."
echo "=========================================================="
mariadb-upgrade --force
if [ $? -eq 0 ]; then
  echo "=========================================================="
  echo "Forced upgrade completed successfully."
  echo "=========================================================="
else
  echo "=========================================================="
  echo "Forced upgrade encountered issues. Please check the logs."
  echo "=========================================================="
  exit 1
fi

# Final checks
echo "=========================================================="
echo "Checking MariaDB version..."
echo "=========================================================="
mariadb --version
end_time=$(date +%s)
elapsed_time=$((end_time - start_time))
echo "=========================================================="
echo "MariaDB upgrade process completed in $elapsed_time seconds. Please verify all databases are operational."
echo "=========================================================="
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 48127
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: อัพเกรดฐานข้อมุล mariadb บน cyberpanel จาก 10.3 to 10.6

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ใช้ได้กับ Update MariaDB on CyberPanel จาก 10.3 เป็น 10.5
ถ้าไม่รู้รหัสผ่าน root ของ mariadb ดูได้ด้วย

โค้ด: เลือกทั้งหมด

cat /etc/cyberpanel/mysqlPassword
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 48127
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: อัพเกรดฐานข้อมุล mariadb บน cyberpanel จาก 10.3 to 10.6

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

สรุปวิธีอัพเกรดแบบสั้น (ใช้ได้กับ cyberpanel บน Ubuntun 20.0 และ mariadb เลือกเวอร์ชั่นได้ตามต้องการ)
หลังจากได้ รหัสผ่าน root จากข้างบนแล้วเก็บไว้
เริ่มขั้นตอน อัพเกรด
1. สำรองฐานขั้อมูล

โค้ด: เลือกทั้งหมด

mysqldump -u root -p --all-databases > databasedump.sql
2. หยุดการทำงาน ของฐานข้อมูล

โค้ด: เลือกทั้งหมด

systemctl stop mariadb
3. ถอดถอนเวอร์ชั่นเก่าออกก่อน

โค้ด: เลือกทั้งหมด

apt list --installed | grep -i -E "mariadb|galera"
apt remove "*mariadb*" "galera*" -y
4. เพิ่ม MariaDB repository ที่รองรับเวอร์ชันใหม่ เช่น MariaDB 10.5
ลบ repo เก่า

โค้ด: เลือกทั้งหมด

sudo apt-get remove mariadb-server
sudo rm /etc/apt/sources.list.d/mariadb.list
เพิ่ม repo ใหม่

โค้ด: เลือกทั้งหมด

sudo apt-get install software-properties-common
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirrors.coreix.net/mariadb/repo/10.5/ubuntu focal main'
sudo apt update
Note ถ้ามี Error เรื่อง ดาวน์โหลดไฟล์จาก repo ไม่ได้ให้แอด key

โค้ด: เลือกทั้งหมด

sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
5. ติดตั้ง MariaDB ใหม่ตามนี้

โค้ด: เลือกทั้งหมด

sudo apt update

โค้ด: เลือกทั้งหมด

sudo apt-get install mariadb-server mariadb-client
รอจนดำเนินการเสร็จ
6. อัพเดดโครงสร้างตารางข้อมูลทั้งหมด

โค้ด: เลือกทั้งหมด

mysql_upgrade -u root -p

เท่านี้เราก็จะได้ MariaDB เวอร์ชั่นใหม่แล้ว
upgrate-after.png
upgrate-after.png (7.15 KiB) Viewed 961 times
upgrate-befor.png
upgrate-befor.png (6.75 KiB) Viewed 961 times
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 8