วันหนึ่งในช่วงต้นเดือนมกราคม ฉันกำลังเขียนโค้ดเมื่อปัญหาสำคัญเริ่มเกิดขึ้นกับเซิร์ฟเวอร์การพัฒนาของฉัน โบลต์ไปที่ชั้นใต้ดินและวิ่งไปที่แร็คเซิร์ฟเวอร์ ฉันประเมินสถานการณ์ทันทีและเริ่มแก้ไขปัญหา หลังจากนั้นไม่นานฉันก็สามารถตรวจสอบได้ว่าฮาร์ดไดรฟ์ที่ล้มเหลวในอาร์เรย์การจู่โจมทำให้เกิดปัญหาทั้งหมด น่าเสียดายที่ฉันลืมไปว่าเซิร์ฟเวอร์นี้ยังคงใช้ RAID 0 อยู่ (อย่าใช้สิ่งนี้หากคุณไม่ต้องการเสี่ยงที่จะสูญเสียข้อมูลของคุณ) และไม่ได้ทำการเปลี่ยนแปลง ซึ่งให้ความทนทานต่อข้อผิดพลาดมากกว่า ท่ามกลางความโกลาหล ก็มีความหวังริบหรี่ ฉันรวบรวมความกล้าและใช้ทักษะทางนิติวิทยาศาสตร์ดิจิทัลเพื่อกู้คืนข้อมูลบางส่วนจากไดรฟ์ที่กำลังจะตาย อย่างไรก็ตาม ข้อมูลสำคัญที่ฉันจัดเก็บไว้ในฐานข้อมูลได้สูญหายไป
อย่างที่คุณเห็น คุณธรรมของเรื่องราวคือสิ่งสำคัญอย่างยิ่งที่จะต้องมีการสำรองข้อมูลตามกำหนดเวลาของข้อมูลที่มีความสำคัญต่อภารกิจของคุณ ในกรณีของฉัน การรันคำสั่ง Linux สองสามคำสั่งจะช่วยป้องกันการสูญหายของข้อมูลจำนวนมากในฐานข้อมูล MySQL และ PostgreSQL ได้อย่างง่ายดาย มาสำรวจคำสั่งเหล่านี้กัน
เมื่อพูดถึงฐานข้อมูล MySQL mysqldump เป็นเครื่องมือที่ยอดเยี่ยมที่สร้างคำสั่ง SQL ที่สามารถเรียกใช้งานได้ของ SQL ที่สามารถใช้เพื่อสร้างคำจำกัดความของวัตถุฐานข้อมูลและข้อมูลตาราง ในการเริ่มต้นใช้งาน หากคุณยังไม่ได้ติดตั้ง คุณจะต้องติดตั้งแพ็คเกจนี้:
sudo apt install mysql-client
mysqldump DATABASENAME > outputscript.sql
mysqldump --databases DATABASE1 DATABASE2 > outputscript.sql
mysqldump --all-databases > outputscript.sql
สำหรับแฟน PostgreSQL ทุกคน ไม่ต้องหงุดหงิดเพราะมีคำสั่งสองสามคำสั่งในการสำรองข้อมูลฐานข้อมูลเช่นกัน คล้ายกับ mysqldump, pg_dump และ pg_dumpall จะสร้างสคริปต์ SQL ที่สามารถใช้เพื่อสร้างฐานข้อมูลใหม่ การใช้คำสั่ง “pg_dump” จะมีลักษณะดังนี้:
pg_dump -U <USERNAME> -W -F p > outputscript.sql
pg_dumpall -U <USERNAME> > outputscript.sql
mysqldump, pg_dump และ pg_dumpall เป็นเครื่องมือที่ยอดเยี่ยมที่ช่วยให้สำรองข้อมูลฐานข้อมูลได้ง่าย แต่ถ้าคุณกำลังมองหาบางสิ่งที่ไม่เกี่ยวข้องกับการรันคำสั่งบนเซิร์ฟเวอร์ด้วยตนเองล่ะ สคริปต์ Linux Bash จะทำงานได้ดี แต่ฉันอยากรู้ว่า Python จะเป็นตัวเลือกที่ดีหรือไม่
ในการเริ่มต้นการสำรวจนี้ลึกฉันสร้างคู่ของไฟล์main.py , dumps.pyและremote_command_runner.py หลังจากนั้น ภายในไฟล์main.pyจะมีการเพิ่มฟังก์ชัน "main" และฟังก์ชัน "Start"
def Start():
pass
if __name__ == "__main__":
Start()
การวิเคราะห์ว่าคลาสนี้ทำอะไร เราใช้โมดูล “paramiko” เพื่อสร้างเซสชัน ssh (Secure Shell) ให้กับชื่อโฮสต์ที่ระบุ เมื่อเชื่อมต่อแล้ว ฟังก์ชัน “RunCommand” จะรันคำสั่งบนโฮสต์ระยะไกล
ตอนนี้เรามีคลาสที่จะรันคำสั่งจากระยะไกลแล้ว เราสามารถสร้างฟังก์ชันที่จำเป็นในการดัมพ์ฐานข้อมูลได้ ไปที่ไฟล์dumps.pyเราจะเพิ่มฟังก์ชันต่อไปนี้
ดูที่ "DumpMysql" และ "DumpPostgreSql" ทั้งคู่ใช้คลาส "RemoteCommandRunner" ที่เราเพิ่งสร้างขึ้น โดยพื้นฐานแล้ว อินสแตนซ์ใหม่ของคลาสจะได้รับการสร้างอินสแตนซ์ด้วยฟังก์ชัน “RunCommand” ที่ได้รับการเรียกหลังจากนั้น ภายในฟังก์ชันนั้นเป็นที่ที่เราส่งผ่านอาร์กิวเมนต์“ mysqldump” และ“ pg_dumpall” คุณอาจสังเกตเห็นว่ามีฟังก์ชันอื่นที่เรียกว่า “CreateFileName” จุดประสงค์ของฟังก์ชันนี้คือการสร้างชื่อสำหรับสคริปต์เอาต์พุต ใช้โมดูลเวลาเพื่อช่วยสร้างชื่อไฟล์ที่ไม่ซ้ำกัน
ชิ้นสุดท้ายของปริศนาคือการเรียกฟังก์ชันการถ่ายโอนข้อมูลของเราในฟังก์ชัน "เริ่ม"
เมื่อเขียนโค้ดทั้งหมดแล้ว ในที่สุดเราก็สามารถเรียกใช้สคริปต์main.pyเพื่อดูว่ามันทำอะไรได้บ้าง
python3 main.py
การนำทางไปยังโฮมไดเร็กทอรีของผู้ใช้ของฉันบนเซิร์ฟเวอร์ เราสามารถเรียกใช้คำสั่งcatเพื่อตรวจสอบเนื้อหาของไฟล์ที่สร้างขึ้นใหม่เหล่านี้
เมื่อเปรียบเทียบการรันแต่ละคำสั่งกับสคริปต์ Python สคริปต์นั้นง่ายกว่ามาก ช่วยให้ฉันสามารถเรียกใช้การสำรองข้อมูลสำหรับฐานข้อมูลหลายประเภทได้อย่างง่ายดายและสามารถตั้งค่าให้ทำงานตามเวลาที่กำหนดผ่าน cron ได้อย่างง่ายดาย จริงอยู่ที่กระบวนการเดียวกันนี้สามารถจัดการได้โดยใช้สคริปต์ Bash แต่การใช้ Python จะช่วยให้ผู้ใช้ที่ไม่ค่อยคุ้นเคยกับ Bash สามารถเริ่มต้นใช้งานบางอย่างได้อย่างรวดเร็ว โปรดทราบว่ารหัสที่ฉันร่างไว้ควรมีข้อผิดพลาดในการจัดการ การปรับปรุงที่เป็นไปได้บางอย่างอาจเป็นการส่งอีเมลเมื่อกระบวนการเสร็จสมบูรณ์ หรือหากเกิดข้อผิดพลาดร้ายแรง แจ้งให้เราทราบว่าคุณคิดอย่างไรในความคิดเห็นด้านล่าง จนกว่าจะถึงครั้งต่อไปไชโย!
สนใจเรียนรู้เพิ่มเติม? ตรวจสอบแหล่งข้อมูลอื่นๆ เหล่านี้:
ตรวจสอบบทความล่าสุดของฉัน:
ข้อมูลอ้างอิง:
บทความนี้ประกอบด้วยลิงก์ Affiliate ของ Amazon
คุณต้องเคยได้ยินเกี่ยวกับปลั๊กอิน ChatGPT อันทรงพลังใหม่ทั้งหมด เช่น เบราว์เซอร์ ตัวแปลรหัส ฯลฯ แต่มีปัญหา การเข้าถึงปลั๊กอินถูกจำกัดไว้เฉพาะรายการรอ และหลายคนไม่สามารถเข้าถึงได้
สัปดาห์นี้ ฉันได้รับอีเมลจากสมาชิกรายการอีเมลรายวัน พวกเขาต้องการทราบ: คุณเข้าชมแหล่งข้อมูลใดรายวัน รายสัปดาห์ และรายเดือน คำถามที่ดี! ฉันยินดีที่จะพยายามแบ่งปันข้อมูลเชิงลึกเกี่ยวกับเวิร์กโฟลว์และทรัพยากรยอดนิยมที่ฉันใช้
เมื่อคุณโตขึ้น คุณมักจะได้รับการบอกว่าโลกเป็นอย่างที่มันเป็น และชีวิตของคุณก็แค่ใช้ชีวิตอยู่ในโลก ไม่เสี่ยงชีวิต แค่เดินตามเส้นทางที่กำหนดและตายในที่สุด และพยายามอย่า ทุบกำแพงมากเกินไป แต่นั่นเป็นชีวิตที่จำกัดมาก
เมื่อสัปดาห์ที่แล้วฉันสังเกตเห็นข่าวประชาสัมพันธ์ที่เผยแพร่ผ่าน PressGazette (เว็บไซต์ข่าวของสื่ออังกฤษ) บทความประกาศว่า Acast ซึ่งเป็นบริษัทโฮสติ้งและโฆษณาพอดคาสต์ของ Scandi จะเป็นผู้นำกลุ่มผู้เผยแพร่ "อาจมีอิทธิพลมากที่สุด" ในพอดคาสต์
คุณสามารถเป็น OSINT Investigator, CTF Player หรือเพียงแค่ใครก็ตามที่ได้รับสายสแปม ผู้ที่พยายามยืนยันหมายเลขที่คุณเห็นในโฆษณา
“หวัดดี Siri เล่น Me Dive โดย Olivia Dean” ในเดือนพฤษภาคม 2021 ฉันเริ่มฝึกงานที่ Future Academy Africa ในเมือง Akure ประเทศไนจีเรีย