यह स्क्रिप्ट MySQL डेटाबेस का बैकअप बनाने, उन्हें पुनर्स्थापित करने और गंतव्य MySQL सर्वर पर डेटाबेस और उपयोगकर्ता निर्माण को प्रबंधित करने को स्वचालित करती है।
import subprocess import datetime import sys import os def check_and_create_database(host, port, username, password, database): # Command to check if the database exists check_database_command = f"mysql -sN --host={host} --port={port} --user={username} --password={password} -e \"SELECT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '{database}')\" 2>/dev/null" # Execute the command output = subprocess.check_output(check_database_command, shell=True) # If the output contains b'1', the database exists if b'1' in output: subprocess.run(check_database_command, shell=True, check=True) print(f"Database '{database}' already exists.") sys.exit(1) else: # If the command fails, the database does not exist print(f"Database '{database}' does not exist. Creating...") # Command to create the database create_database_command = f"mysql --host={host} --port={port} --user={username} --password={password} -e 'CREATE DATABASE {database}' 2>/dev/null" subprocess.run(create_database_command, shell=True) def check_and_create_user(host, port, username, password, database, new_username, new_password): # Command to check if the user exists check_user_command = f"mysql -sN --host={host} --port={port} --user={username} --password={password} -e \"SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '{new_username}')\" 2>/dev/null" # Execute the command output = subprocess.check_output(check_user_command, shell=True) # If the output contains b'1', the user exists if b'1' in output: print(f"User '{new_username}' already exists.") sys.exit(1) else: # The user does not exist, create it print(f"User '{new_username}' does not exist. Creating...") # Command to create the user and grant privileges create_user_command = f"mysql --host={host} --port={port} --user={username} --password={password} -e \"CREATE USER '{new_username}'@'%' IDENTIFIED BY '{new_password}'; GRANT ALL PRIVILEGES ON {database}.* TO '{new_username}'@'%'; FLUSH PRIVILEGES;\" 2>/dev/null" subprocess.run(create_user_command, shell=True) def backup_mysql_database(host, port, username, password, database, backup_path): # Check if the backup directory exists if not os.path.exists(backup_path): print(f"Error: Backup directory '{backup_path}' does not exist.") sys.exit(1) # Create a filename for the backup with the current date and time timestamp = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") backup_file = f"{backup_path}/{database}_{timestamp}.sql" # Command to create a database backup using mysqldump dump_command = f"mysqldump --no-tablespaces --host={host} --port={port} --user={username} --password={password} {database} > {backup_file} 2>/dev/null" # Execute the mysqldump command subprocess.run(dump_command, shell=True) return backup_file def restore_mysql_database(host, port, username, password, database, backup_file): # Command to restore a database from a backup using mysql restore_command = f"mysql --host={host} --port={port} --user={username} --password={password} {database} /dev/null" # Execute the mysql command subprocess.run(restore_command, shell=True) def main(): # Connection parameters to the source MySQL database source_host = "127.0.0.1" source_port = "3309" source_username = "my_user" source_password = "my_password" source_database = "my_database" # Connection parameters to the target MySQL database target_host = "127.0.0.1" target_port = "3309" new_username = "new_username" new_password = "new_password" target_database = "my_database_two" target_username = "root" target_password = "root_password" # Path to save the backup locally backup_path = "my_dbs_dumps" # Check if source_database is different from target_database if source_database == target_database: print("Error: Source database should be different from target database.") sys.exit(1) # Check and create the target database if it does not exist check_and_create_database(target_host, target_port, target_username, target_password, target_database) # Check and create the target user if it does not exist check_and_create_user(target_host, target_port, target_username, target_password, target_database, new_username, new_password) # Create a backup of the MySQL database backup_file = backup_mysql_database(source_host, source_port, source_username, source_password, source_database, backup_path) print(f"Database backup created: {backup_file}") # Restore the database on the target server from the backup restore_mysql_database(target_host, target_port, target_username, target_password, target_database, backup_file) print("Database backup restored on the target server.") if __name__ == "__main__": main()
check_and_create_database:
यह फ़ंक्शन जाँचता है कि कोई डेटाबेस MySQL सर्वर पर मौजूद है या नहीं। यदि डेटाबेस मौजूद नहीं है, तो यह इसे बनाता है। यह जांचने या बनाने के लिए होस्ट, पोर्ट, उपयोगकर्ता नाम, पासवर्ड और डेटाबेस नाम जैसे पैरामीटर लेता है।
check_and_create_user:
डेटाबेस फ़ंक्शन की तरह, यह फ़ंक्शन जांचता है कि कोई उपयोगकर्ता MySQL सर्वर पर मौजूद है या नहीं। यदि उपयोगकर्ता मौजूद नहीं है, तो यह उपयोगकर्ता बनाता है और एक विशिष्ट डेटाबेस को विशेषाधिकार प्रदान करता है। यह होस्ट, पोर्ट, उपयोगकर्ता नाम, पासवर्ड, डेटाबेस का नाम, नया उपयोगकर्ता नाम और नया पासवर्ड जैसे पैरामीटर भी लेता है।
backup_mysql_डेटाबेस:
यह फ़ंक्शन mysqldump का उपयोग करके MySQL डेटाबेस का बैकअप करता है। यह होस्ट, पोर्ट, उपयोगकर्ता नाम, पासवर्ड, डेटाबेस नाम और बैकअप फ़ाइल को सहेजने के लिए पथ जैसे पैरामीटर लेता है।
restore_mysql_database:
यह फ़ंक्शन बैकअप फ़ाइल से MySQL डेटाबेस को पुनर्स्थापित करता है। यह होस्ट, पोर्ट, उपयोगकर्ता नाम, पासवर्ड, डेटाबेस नाम और बैकअप फ़ाइल का पथ जैसे पैरामीटर लेता है।
मुख्य:
यह स्क्रिप्ट का मुख्य कार्य है. यह स्रोत और लक्ष्य MySQL डेटाबेस के लिए पैरामीटर सेट करता है, जिसमें कनेक्शन विवरण, डेटाबेस नाम और बैकअप पथ शामिल हैं। इसके बाद यह सुनिश्चित करने के लिए जांच करता है कि स्रोत और लक्ष्य डेटाबेस अलग-अलग हैं, लक्ष्य डेटाबेस और उपयोगकर्ता बनाता है यदि वे मौजूद नहीं हैं, स्रोत डेटाबेस का बैकअप बनाता है, और अंततः लक्ष्य डेटाबेस में बैकअप को पुनर्स्थापित करता है।
इसके अतिरिक्त, स्क्रिप्ट MySQL ऑपरेशंस (mysql, mysqldump) के लिए शेल कमांड निष्पादित करने के लिए सबप्रोसेस मॉड्यूल का उपयोग करती है और अनावश्यक आउटपुट को दबाने के लिए त्रुटि प्रबंधन और आउटपुट पुनर्निर्देशन (2>/dev/null) करती है।
यदि आप MySQL डेटाबेस के साथ काम कर रहे हैं और स्वचालन बनाना चाहते हैं, तो यह कोड आपकी मदद करेगा।
यह कोड MySQL डेटाबेस के प्रबंधन के लिए ऑटोमेशन स्क्रिप्ट बनाने के लिए एक अच्छे शुरुआती टेम्पलेट का प्रतिनिधित्व करता है।
dmi@dmi-laptop:~/my_python$ python3 mysql_backup_restore.py Database 'my_database_two' does not exist. Creating... User 'new_username' does not exist. Creating... Database backup created: my_dbs_dumps/my_database_2024-05-13_20-05-24.sql Database backup restored on the target server. dmi@dmi-laptop:~/my_python$
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3