这篇文章上次修改于 299 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
备份
刚刚后台删垃圾评论一不小心把最近的正常评论清掉了,巧的是我还没数据库备份,这下尴尬了.之前一直嫌麻烦没装 Navicat 现在就是后悔.jpg
待会就整个命令行备份
6/28: 好巧不巧,升级MySQL数据库全没了,要是没备份我怕是要当场去世.
我使用的是经典的MySQL5.6,并且我要备份的数据库也只有一个.找了一个命令执行之后确实有效果,但同时也出现了一行警告Warning: Using a password on the command line interface can be insecure.
警告这种东西我也不是第一次见了,不是报错都是小问题.但既然它出现了,那我看着就不爽,于是又找了解决方案,如下:
### 原命令
mysqldump -h127.0.0.1 -uroot -ppassword database_name> /root/backup.sql
### 修改后(带时间不覆盖文件)
mysqldump -h127.0.0.1 database_name> /root/backup_$(date +%Y%m%d).sql
修改后的账号密码信息写到my.cnf
文件里去了.路径供参考,我的直接在etc目录下
vim /etc/mysql/my.cnf
[mysqldump]
user=your_backup_user_name
password=your_backup_password
至于导入就是把箭头换一个方向就行了.
Docker
以官方镜像 MySQL8 为例,通过定时任务将容器中的数据库备份到宿主机下。
首先需要配置一下默认用户,可以通过目录映射或者手动进容器改
# 容器内 /etc/mysql/conf.d/customer.cnf
[mysqldump]
user=xxx
password=xxx
宿主机下测试
docker exec -i <容器名> mysqldump typecho> ./backup.sql
修改文件名标识风格(不推荐在任何路径 / 文件名中使用特殊字符和空格)
echo "/backup/$(date +'%Y%m%d %H:%M:%S').sql"
添加到定时任务(注意转义字符)
# 编辑,将这条内容添加到新的一行并保存退出
crontab -e
55 23 * * * docker exec -i db mysqldump typecho > "/root/backup/$(date +\%Y-\%m-\%d).sql"
# 查看
crontab -l
其实也很简单,就是来回换系统导致定时任务经常丢失又没有及时发现(
没有评论