经常与MySQL打交道,难免要进行数据库的导入和导出操作,平时你是使用命令操作还是使用工具操作呢?以及数据库自动备份与恢复等容灾措施你都做了吗?本文将简要给大家讲解。
导入MySQL数据库
方法1:使用mysql命令导入数据库
执行命令:
SQL/usr/local/mysql/bin/mysql -u 用户名 -p 数据库名 < 文件名.sql
注意,导入的数据库名必须存在,如果不存在的话先要手动创建数据库或者将创建数据库的代码写在sql文件里。
例如,以下命令就是将sql文件/home/rcloud.sql导入到数据库rcloud中。
SQL/usr/local/mysql/bin/mysql -uroot -p rcloud < /home/rcloud.sql
使用mysql命令可以导入非常大的数据库文件,成功率也非常高,推荐使用该方法。
方法2:使用phpmyadmin或者其他第三方工具导入数据库
phpmyadmin是一款php版MySQL数据库WEB管理工具,你直接可以把phpmyadmin搭建在服务器上,在线管理MySQL。使用phpmyadmin导入数据的时候要注意所上传的文件大小不能超过php环境配置的最大上传大小。此外从安全角度考虑,我不建议大家在生产服务器上部署搭建phpmyadmin。
如果是本地管理数据库可以使用phpmyadmin,还有一款桌面管理软件:navicat,也非常实用。
导出MySQL数据库
方法1:mysqldump命令
执行命令:
SQL/usr/local/mysql/bin/mysqldump -u 用户名 -p 数据库名 > 文件名.sql
执行后会提示输入密码,如果数据库用户名没有密码,就将命令中的“-p”参数删除。导出的文件保存在当前目录下,也可以将 文件名.sql 换成绝对路径,如 /home/backup/abc.sql
另外,如果将数据库名换成--all-databases,则会将全部数据库都导出。
方法2:使用phpmyadmin或者第三方工具导出数据库
phpmyadmin导出和导入一样,选择数据库,进到“导出”标签下,点击“执行”即可导出sql文件。如果数据量非常大,我不建议使用phpmyadmin导出数据,有可能会导致超时,并且它要是部署在服务器上真的不安全。另外作为本地开发我们也可以使用navicat来快速导入数据。
自动备份MySQL数据库
自动备份其实就是定时执行数据导出的操作。所谓天有不测风云,我们辛苦经营的网站数据哪天弄丢了的话结果是非常尴尬的。所以我们应该定时或者不定时的备份数据库,视网站项目情况,可以每隔几分钟、几小时、1天会几天备份一次数据库。
脚本:
SQL#!/bin/bashday1=`date -d '-1 days' +%Y%m%d`day3=`date -d '-3 days' +%Y%m%d`db1=/home/backup/db-$day1.sqldb3=/home/backup/db-$day3.sqlif [ -f $db3 ]; thenrm -f $db3fi/usr/local/mariadb/bin/mysqldump -uroot -pxxxxxx mydb > $db1
以上脚本的意思是执行导出数据库,导出的文件名按日期格式命名,如果发现sql文件名是3天前的,则删除该文件,即删除3天前的备份文件,这样也可以节省空间。
然后保存文件名为mysqlback.sh,并设置为可执行权限:
SQLchmod +x mysqlback.sh
最后我们使用crontab来定时执行脚本。
PHP1 0 * * * /bin/sh /home/cron/backupmysql.sh >> /dev/null 2>&1