Friday, 1 December 2023

วิธีการกู้คืนฐานข้อมูล InnoDB MySQL จากการสำรองข้อมูลดิบ

คุณต้องได้รับสำเนาของไดเร็กทอรีฐานข้อมูล mysql แบบ raw 

/var/lib/mysql/your_database

คุณต้องมีสำเนาของไฟล์ ib ต่อไปนี้ที่อยู่ใน /var/lib/mysql/

ib_logfile0

ib_logfile1

อิบดาต้า1

ib_buffer_pool

⚠ คำเตือน! ระวังอย่ากู้คืนไฟล์เหล่านั้นไปยังเซิร์ฟเวอร์ที่ใช้งานจริง ไม่เช่นนั้นฐานข้อมูลจะเสียหาย

ทำงานบนเซิร์ฟเวอร์ทดสอบ

เราจะทำงานกับไดเร็กทอรีฐานข้อมูลและไฟล์ ib* บนเซิร์ฟเวอร์ทดสอบ ดังนั้นเราจึงไม่ทำลายสิ่งใดๆ ในการผลิต เราขอแนะนำให้ใช้เวอร์ชัน MySQL และกลไกการจัดเก็บข้อมูลเดียวกัน

ขั้นแรก ให้ปิด mysql บนเซิร์ฟเวอร์ทดสอบของคุณ สำหรับ centos ให้ทำดังนี้


systemctl stop mysqld

ทำสำเนาสำรองของไดเร็กทอรี mysql จะดีกว่าถ้าปลอดภัยกว่าขออภัย:

****ย้ายไปอยู่ /var/lib/mysql


cp -pr /var/lib/mysql /var/lib/mysql2


จากนั้น คุณสามารถคัดลอกและเขียนทับไฟล์ ib* และไดเร็กทอรีฐานข้อมูลของคุณไปยัง /var/lib/mysql บนเซิร์ฟเวอร์ทดสอบ ด้วยวิธีใดก็ได้ที่คุณต้องการ


ตรวจสอบให้แน่ใจว่าได้เปลี่ยนเจ้าของไฟล์ของไฟล์ ib* และไดเร็กทอรีฐานข้อมูล & ไฟล์ให้ตรงกับ mysql.mysql หรืออะไรก็ตามที่เซิร์ฟเวอร์ mysql ของคุณใช้งานอยู่


chown mysql.mysql -R /var/lib/mysql/your_database
chown mysql.mysql /var/lib/mysql/ib*

ถึงเวลาที่ต้องกลับมาเปิดเซิร์ฟเวอร์ mysqld อีกครั้ง:


systemctl start mysqld


ตอนนี้คุณควรจะสามารถสร้าง mysqldump ของฐานข้อมูลได้แล้ว:


mysqldump your_database > your_database.sql


หากคุณสร้าง mysqldump สำเร็จแล้ว คุณสามารถคืนค่าการเปลี่ยนแปลงทั้งหมดที่เราทำบนเซิร์ฟเวอร์ทดสอบได้แล้ว


 systemctl stop mysqld
 mv /var/lib/mysql /var/lib/mysql.del
 mv /var/lib/mysql2 /var/lib/mysql
 systemctl start mysqld 

ตอนนี้คุณสามารถลบโฟลเดอร์สำรอง mysql.del ได้แล้ว:

rm -rf /var/lib/mysql.del


การนำเข้าไฟล์ mysqldump

ใกล้เสร็จแล้ว ถึงเวลาล็อกอินเข้าสู่เซิร์ฟเวอร์ปลายทางและสร้างฐานข้อมูล:


mysql -e "CREATE DATABASE your_database;"   


คัดลอกไฟล์ดัมพ์ของ your_database.sql ไปยังเซิร์ฟเวอร์ปลายทางและนำเข้าไปยังฐานข้อมูลที่สร้างขึ้นใหม่:


mysql your_database < your_database.sql


คุณควรจะสามารถแสดงตารางจากฐานข้อมูลที่นำเข้าได้ นอกจากนี้ คุณยังสามารถเชื่อมโยงผู้ใช้กับฐานข้อมูลและให้สิทธิ์การเข้าถึงทั้งหมดที่จำเป็นได้แล้ว


mysql -e "SHOW TABLES FROM your_database;"

ที่มา https://www.linuxadmingeeks.com/how-to-recover-an-innodb-mysql-database-from-raw-backup/


Friday, 16 June 2023

PHP CODE ส่งการแจ้งเตือนเข้า LINE

 PHP CODE ส่งการแจ้งเตือนเข้า LINE

ใช้งานฟรี


http://103.13.231.227/line/line.php?token=(token)&mes=(ข้อความ)&tel=(เบอร์โทรศัพท์)



<?php

$token = $_GET['token'];

$mes = $_GET['mes'];

$tel = $_GET['tel'];


$line_api = "https://notify-api.line.me/api/notify";

$data = array(

  'message' => $mes,

  'stickerPackageId' => 1, // (ตัวอย่าง) ID แพ็กเกจสติกเกอร์

  'stickerId' => 1, // (ตัวอย่าง) ID สติกเกอร์

  'notificationDisabled' => true, // ไม่แสดงการแจ้งเตือนในไลน์แอป

);


$query = http_build_query($data);

$header = array(

  "Content-Type: application/x-www-form-urlencoded",

  "Authorization: Bearer " . $token,

);


$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $line_api);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $query);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);


$result = curl_exec($ch);

curl_close($ch);

?>


รูปแบบการใช้งาน

http://xxx.xxx.xxx.xxx/line/line.php?token=(token)&mes=(ข้อความ)&tel=(เบอร์โทรศัพท์)