经常与MySQL打交道,难免要进行数据库的导入和导出操作,平时你是使用命令操作还是使用工具操作呢?以及数据库自动备份与恢复等容灾措施你都做了吗?本文将简要给大家讲解。
导入MySQL数据库
方法1:使用mysql命令导入数据库
执行命令:
/usr/local/mysql/bin/mysql -u 用户名 -p 数据库名 < 文件名.sql
注意,导入的数据库名必须存在,如果不存在的话先要手动创建数据库或者将创建数据库的代码写在sql文件里。
例如,以下命令就是将sql文件/home/mydb.sql
导入到数据库mydb
中。
/usr/local/mysql/bin/mysql -uroot -p mydb < /home/mydb.sql
使用mysql命令可以导入非常大的数据库文件,成功率也非常高,推荐使用该方法。
方法2:使用phpmyadmin或者其他第三方工具导入数据库
phpmyadmin是一款php版MySQL数据库WEB管理工具,你直接可以把phpmyadmin搭建在服务器上,在线管理MySQL。使用phpmyadmin导入数据的时候要注意所上传的文件大小不能超过php环境配置的最大上传大小。此外从安全角度考虑,我不建议大家在生产服务器上部署搭建phpmyadmin。
如果是本地管理数据库可以使用phpmyadmin,还有一款桌面管理软件:navicat,也非常实用。
导出MySQL数据库
方法1:mysqldump命令
执行命令:
/usr/local/mysql/bin/mysqldump -u 用户名 -p 数据库名 > 文件名.sql
执行后会提示输入密码,如果数据库用户名没有密码,就将命令中的“-p”参数删除。导出的文件保存在当前目录下,也可以将 文件名.sql 换成绝对路径,如 /home/backup/abc.sql
另外,如果将数据库名换成--all-databases
,则会将全部数据库都导出。
方法2:使用phpmyadmin或者第三方工具导出数据库
phpmyadmin导出和导入一样,选择数据库,进到“导出”标签下,点击“执行”即可导出sql文件。如果数据量非常大,我不建议使用phpmyadmin导出数据,有可能会导致超时,并且它要是部署在服务器上真的不安全。另外作为本地开发我们也可以使用navicat来快速导入数据。
自动备份MySQL数据库
自动备份其实就是定时执行数据导出的操作。所谓天有不测风云,我们辛苦经营的网站数据哪天弄丢了的话结果是非常尴尬的。所以我们应该定时或者不定时的备份数据库,视网站项目情况,可以每隔几分钟、几小时、1天会几天备份一次数据库。
我们来写一段脚本:
#!/bin/bash
day1=`date -d '-1 days' +%Y%m%d`
day3=`date -d '-3 days' +%Y%m%d`
db1=/home/backup/db-$day1.sql
db3=/home/backup/db-$day3.sql
if [ -f $db3 ]; then
rm -f $db3
fi
/usr/local/mariadb/bin/mysqldump -uroot -pxxxxxx mydb > $db1
以上脚本的意思是执行导出数据库,导出的文件名按日期格式命名,如果发现sql文件名是3天前的,则删除该文件,即删除3天前的备份文件,这样也可以节省空间。
然后保存文件名为mysqlback.sh,并设置为可执行权限:
chmod +x mysqlback.sh
最后我们使用crontab来定时执行脚本。
1 0 * * * /bin/sh /home/cron/backupmysql.sh >> /dev/null 2>&1
很显然,我设置了每天凌晨00:01执行定时备份任务,这样我们就可以回去睡觉了,不用人工干预备份过程。
最后,我想提醒的是,以上的自动备份确实省心,但是我们发现,备份后的数据库文件还是在服务器上,并没有拿在手上或者存储在别的放心的地方,这样我们还是不能睡个安稳觉。当然,你可以按照本站文章:《Mysql/MariaDB配置主从复制备份》或《Mysql/MySQL/MariaDB主主数据同步配置》中配置数据库同步来解决数据库安全备份的问题,但是如果是大量的网站文件呢,怎么办呢,我接下来会给大家介绍配置服务器文件同步机制来将数据文件同步到另外一台机器上,让你高枕无忧,节约时间去撩妹。
共1条评论
您好,请问配置好主从复制备份,要是我操作主服务器不小心把数据库删了,那从数据库对应的数据库不也删掉了吗?