公司有个项目需要,需要定时备份mysql数据库,以下是我碰到的一些坑。
1、无法远程登录mysql服务器
mysql -h 192.168.1.11 -u root -p
提示无法登录,后来查询一下原因,是因为mysql配置文件里面绑定 127.0.0.1本地机器,导致无法登录。
编辑mysql配置文件,注释bind-address = 127.0.0.1即可,之后重启服务器,即可正常登录
2、在本地机器通过shell脚本无法通过mysqldump导出数据库
mysqldump --host 192.168.1.11 -P3306 -uroot -p test_db >/data/db_bak/`date +%Y%m%d`test_db.sql
提示:
mysqldump: [Warning] Using a password on the command line interface can be insecure.
这个是mysql安全策略的原因,不让帐号密码在shell出现
解决办法:编辑本地的mysql配置文件
vi /etc/my.cnf
在末尾添加如下代码
[client]
host=192.168.1.11 主机
user=root 帐号
password=test_password 密码
保存退出
之后在运行如下脚本即可完成数据库备份操作
mysqldump --defaults-extra-file=/etc/my.cnf test_db >/data/db_bak/`date +%Y%m%d`test_db.sql
3、定时执行任务
crontab -e
添加如下:
0 0 * * * mysqldump --defaults-extra-file=/etc/my.cnf test_db >/data/db_bak/$(date +\%Y\%m\%d)test_db.sql
或者
0 0 * * * mysqldump --defaults-extra-file=/etc/my.cnf test_db >"/data/db_bak/$(date +"\%Y\%m\%d")test_db.sql"
每天晚上十二点定时执行