python自动备份数据库快捷打开关闭3306远程

序言

经历了上次的数据库勒索事件后一直想着怎么样有效的解决此问题,于是想到了,第一是修改密码难度,第二是将数据库的内容给备份下来。
但是在linux的命令行上去创建数据库和修改内容实在是太过于麻烦,于是想到了,使用python脚本来快捷打开和关闭端口,这样可以在进行维护时在本地就可以访问服务器的数据库,并且使用python脚本进行每日数据库的备份。

每日备份数据库

import os
import datetime
import time
def back():
    global x
    cmd = "mysqldump -u <你的账户> -p<你的密码> <数据库的名字> > DatabaseBack-"+str(datetime.datetime.now().date()) +".sql"
    # 例如,我使用root账户密码是000000来备份teacher数据库,实际的密码千万不要这么简单!!!详情请看前期VCR
    # cmd = "mysqldump -u root -p000000 teacher > teacherDatabaseBack-"+ str(x) +".sql"
    os.system(cmd)
    print("备份"+ str(datetime.datetime.now().date()) +" ok!")


def main():
    back()
    while(True):
        time.sleep(3600*24)
        # 没有去做时间的判定,直接使用了一天的时间进行休眠
        back()

if __name__ == "__main__":
    main()

其实最关键的也只是那句备份数据库的cmd命令,而python只是做了一个每隔一天时间备份一次,然后你需要在linux上使用nohup来进行后台运行

nohup python BackDatabase.py > output.log 2>&1 &

然后就会先进行一次备份,然后每天自动的进行备份啦,当过了很多天后,你的文件夹会是这个样子的
在这里插入图片描述
似乎前缀有点长,自己设置清晰的即可,至少很直观对吧?应该

Q&A

Q1:为什么不执行每十天,每一个月进行删除前期的?
A1:不是每个人会时时刻刻关注着自己的数据库是否崩了,所以,也许当你很久之后打开网站发现数据拉取失败时,你才会去看又出啥问题了,如果这个时候已经过了十天或者一个月,那么你的数据库彻底玩完。所以,对于个人使用,我仍然觉得每一天的都保存下来才是最棒的,sql文件并不大,也不用担心满盘。当然,看着心烦,你仍然可以选择时不时上去清理一下,请务必检查最新得文件中是有数据得,而不是空。或许应该进行一些判别,当数据库记录为空时则进行异常处理?

Q2:运行了就可以高枕无忧了吗?
A2:应该或许来说,是的,此方法保存了你每天数据库的变化,就算是损失你也最多会失去当天的数据,请注意,此程序以后台运行,当你重启linux后务必重新运行!!!

快捷打开3306远程

至少对于我来说,在linux上敲数据库创建的命令属实有点不必要,所以在本地访问linux的远程数据库就显得很有必要,但是3306端口随时打开会被爆破咋办?那就按需!

import os
import signal
import sys

openstr = "sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent"
# 打开3306端口
shutdownstr = "sudo firewall-cmd --zone=public --remove-port=3306/tcp --permanent"
# 关闭3306端口
reloadstr = "sudo firewall-cmd --reload"
# 重新载入配置
def open3306():
    os.system(openstr)
    os.system(reloadstr)
def shutdown3306():
    os.system(shutdownstr)
    os.system(reloadstr)
def listport():
    os.system("sudo firewall-cmd --list-ports")

def signal_handler(sig, frame):
    print("正在执行关闭数据库……")
    # 在这里执行您希望在用户按下Ctrl+C时执行的操作
    shutdown3306()
    sys.exit(0)

# 注册信号处理程序
signal.signal(signal.SIGINT, signal_handler)
def main():
    x = int(input("选择您的操作:1、打开3306端口。2、关闭3306端口。3、查看当前打开端口"))
    if(x==1):
        print("正在打开3306……")
        open3306()
        print("打开成功!")
    elif(x==2):
        print("正在关闭3306……")
        shutdown3306()
        print("关闭成功!")
    if(x==3):
        print("正在列出防火墙端口……")
        listport()

while(True):
    main()

没错这里还是简单得cmd配合python得脚本,然后在其中使用了 一个关闭信号,当你使用正常手段关闭此程序时,它将执行关闭端口得操作,确保了,你要是忘记关闭端口了,能够让端口在程序关闭时关闭。
有个问题,就是当ssh断开连接时,并不会触发这个信号,或许应该加上时间判别,当十分钟内未进行操作时,自动关闭端口,但是似乎又会显得麻烦,比如你在用idea远程调试数据库,时间肯定超过十分钟,一天?
虽然风险增加但是自由度更高了,所以,或许加上合适的时间判别能更好。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以提供一个简单的脚本,用来备份数据库服务器。首先,在命令行中启动mysqldump,它将生成一个SQL文件,其中包含数据库中的所有表和数据。然后,使用cron命令定期运行脚本,将SQL文件保存在一个安全的位置。最后,可以使用tar命令将SQL文件压缩,以便更轻松地进行备份。 ### 回答2: 编写一个数据库服务器备份脚本可通过以下步骤完成: 1. 确定备份类型:全量备份还是增量备份?全量备份备份整个数据库,而增量备份备份已更改的数据。根据需求选择合适的备份类型。 2. 设定备份频率:确定备份的频率。常见的备份频率有每日、每周或每月一次。根据数据库的重要性和数据更新频率来选择备份频率。 3. 确定备份保存位置:选择备份数据存储的位置。可以选择本地存储或远程存储,并确保备份数据的安全性。 4. 编写备份脚本:使用合适的脚本语言(如Shell、Python等)编写备份脚本。脚本需要连接到数据库服务器,并执行备份操作。 5. 设置备份计划:使用操作系统的定时任务功能(如Crontab)来设置备份计划。根据备份频率和需求,定期执行备份脚本。 6. 备份文件管理:定期清理旧的备份文件,以节省存储空间并确保备份集的完整性。 7. 监控备份过程:设置备份脚本执行过程的监控,以便随时了解备份的状态。可以使用邮件或其他通知方式来通知管理员备份状态。 8. 测试和验证:确保备份脚本正确执行并生成可用的备份文件。进行恢复测试以验证备份数据的有效性和完整性。 9. 日志记录:记录备份脚本的执行日志,包括备份的时间、大小和状态。这有助于之后的故障排除和审计。 这个备份脚本可以根据具体的数据库系统和需求进行自定义和拓展。同时,需要合理制定备份策略,以确保数据库的安全性和可靠性。 ### 回答3: 数据库服务器备份脚本是用于定期备份数据库服务器中的数据和配置文件的工具。下面是一个简单的数据库服务器备份脚本编写示例,该脚本使用Bash脚本语言编写。 ```bash #!/bin/bash # 定义备份目录和文件名 backup_dir="/path/to/backup/dir" backup_file="db_backup-$(date +%Y%m%d%H%M%S).sql.gz" # 定义数据库信息 db_host="localhost" db_user="username" db_password="password" db_name="database_name" # 创建备份目录(如果不存在) mkdir -p $backup_dir # 执行数据库备份 mysqldump -h $db_host -u $db_user -p$db_password $db_name | gzip > $backup_dir/$backup_file # 检查备份是否成功 if [[ $? -eq 0 ]]; then echo "数据库备份成功!备份文件名: $backup_file" else echo "数据库备份失败!" fi # 删除过期备份文件(保留最近7天的备份) find $backup_dir -type f -name "db_backup-*.sql.gz" -mtime +7 -delete ``` 这个脚本的主要步骤包括: 1. 设置备份目录和文件名。 2. 定义数据库信息,包括数据库服务器主机,用户名,密码和数据库名称。 3. 创建备份目录(如果不存在)。 4. 使用mysqldump命令备份数据库,并将备份文件以压缩形式存储到指定的备份目录中。 5. 检查备份是否成功,并输出相应的提示信息。 6. 使用find命令删除过期的备份文件,只保留最近7天的备份。 根据实际需求,可以根据这个示例脚本进行修改和定制,例如增加定期备份的频率、备份文件的保留时间等。同时,还可以考虑添加日志记录、错误处理以及备份文件的远程传输等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值