python多线程备份MYSQL数据库并删除旧的备份。

 1 #!/usr/bin/python
 2 # -*- coding=utf-8 -*-
 3 import time
 4 import os
 5 import datetime
 6 import threading
 7 from time import ctime,sleep
 8 
 9 date=time.strftime('%Y-%m-%d',time.localtime(time.time()))
10 dbname=('test','test2') #定义元组必须要有多个,要不则循环里面的字符。
11 dbname2=('test3','test4')
12 bkdir="/backup/mysqlbk/"
13 
14 #删除超过3天的备份文件
15 now_time = datetime.datetime.now()
16 yes_time = now_time + datetime.timedelta(days=-3)
17 out_time = yes_time.strftime('%Y-%m-%d')
18 
19 
20 
21 
22 def dumpsql():
23     for i in dbname:
24         os.system("/usr/local/mysql/bin/mysqldump -u%s %s | gzip > %s%s" % ("root",i,bkdir,date+"."+i+".sql.gz"))
25 
26 def dumpsql2():
27     for i in dbname2:
28         os.system("/usr/local/mysql/bin/mysqldump -u%s %s | gzip > %s%s" % ("root",i,bkdir,date+"."+i+".sql.gz"))
29 
30 
31 def outbk():
32     for i in dbname:
33         if os.path.exists(bkdir+out_time+'.'+i+'.sql.gz'):
34             os.remove(bkdir+out_time+'.'+i+'.sql.gz')
35 
36 #双线程
37 threads=[]
38 t1 = threading.Thread(target=dumpsql)
39 threads.append(t1)
40 t2 = threading.Thread(target=dumpsql2)
41 threads.append(t2)
42 
43 if __name__ == "__main__":
44     outbk()
45     for t in threads:
46         t.setDaemon(True)   #启动多线程
47         t.start()
48     t.join()
49     print ("all over %s" %ctime())

 

转载于:https://www.cnblogs.com/cp-miao/p/5514340.html

你可以使用Python的`threading`模块来实现多线程备份MySQL数据的脚本。以下是一个示例代码: ```python import threading import time import pymysql # 备份函数 def backup_data(thread_id, start, end): # 连接到MySQL数据库 connection = pymysql.connect( host='localhost', # 数据库主机地址 user='your_username', # 数据库用户名 password='your_password', # 数据库密码 database='your_database' # 数据库名称 ) try: # 创建游标对象 cursor = connection.cursor() # 构建查询语句 select_query = f"SELECT * FROM your_table LIMIT {start}, {end}" # 执行查询语句 cursor.execute(select_query) # 获取查询结果 data = cursor.fetchall() # 构建备份文件名 backup_filename = f"backup_{thread_id}.txt" # 将数据写入备份文件 with open(backup_filename, 'w') as file: for row in data: file.write(str(row) + '\n') print(f"Thread {thread_id} backup completed.") finally: # 关闭连接 connection.close() # 多线程备份数据 def multi_threaded_backup(num_threads): # 连接到MySQL数据库 connection = pymysql.connect( host='localhost', # 数据库主机地址 user='your_username', # 数据库用户名 password='your_password', # 数据库密码 database='your_database' # 数据库名称 ) try: # 创建游标对象 cursor = connection.cursor() # 构建查询语句 count_query = "SELECT COUNT(*) FROM your_table" # 执行查询语句 cursor.execute(count_query) # 获取总记录数 total_records = cursor.fetchone()[0] # 每个线程处理的记录数 records_per_thread = total_records // num_threads # 创建线程列表 threads = [] # 启动线程 for i in range(num_threads): start = i * records_per_thread end = start + records_per_thread if i == num_threads - 1: end = total_records # 最后一个线程处理剩余的记录 thread = threading.Thread(target=backup_data, args=(i+1, start, end)) thread.start() threads.append(thread) # 等待所有线程完成 for thread in threads: thread.join() print("Backup completed.") finally: # 关闭连接 connection.close() # 在这里指定要使用的线程数 num_threads = 4 # 多线程备份数据 multi_threaded_backup(num_threads) ``` 请确保替换示例代码中的`your_username`,`your_password`,`your_database`和`your_table`为你实际的数据库信息。 这段代码将使用指定数量的线程并行备份MySQL数据。它首先获取表中的总记录数,然后根据线程数计算每个线程应处理的记录数。然后,每个线程将处理一部分数据,并将其写入一个以线程ID命名的备份文件中。 请注意,多线程备份数据可能会对数据库服务器产生一定的负载,具体取决于系统性能和数据库配置。确保选择合适的线程数以避免过多的资源消耗。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值