常用mysql备份指令
# 导出所有数据库,该命令会导出包括系统数据库在内的所有数据库
mysqldump -uroot -proot --all-databases >/tmp/all.sql
# 导出db1、db2两个数据库的所有数据
mysqldump -uroot -proot --databases db1 db2 >/tmp/db1_and_db2.sql
# 导出db1下的某些表数据
mysqldump -uroot -proot --databases db1 --tables t_tab1 t_tab2 >/tmp/db1_and_tab.sql
# 备份docker mysql容器内的数据库数据到宿主机
docker exec -t mysql-container mysqldump -uroot -pxxx --all-databases >"mysql-backup/`date +%Y%m%d_%H_%M`.sql"
根据where条件导出数据
如果mysqldump 指令报错,请执行全路径指向mysqldump 目录,如window下执行命令:
# 全指令参考,在cmd中执行:
# --no-create-info 不创建表结构
# 注意,不要再语句后面加分号";"
# --where 添加导出条件
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe" -u"user1" -p"123" --host=127.0.0.1 --port=3306 --no-create-info --databases db1 --tables t_user --where="userid!='0001'" >"C:\Users\archives\Desktop\test.sql"
自动备份脚本参考
#!/bin/sh
##mysql-mm-wiki
#备份数据库
#docker exec -t mysql-container mysqldump -uroot -pxxx --all-databases >"mysql-backup/`date +%Y%m%d_%H_%M`.sql"
mysqldump -uroot -proot --databases db1 db2 >/tmp/db1_and_db2.sql
#清理10天前的文件
find /tmp/ -mtime +10 -name "*.sql" -exec rm -rf {} \;
-mtime
:
-mtime +1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件,这里-mtime +1 为什么是48小时以外,而不是24小时以外呢,因为n只能是整数,比1大的下一个整数是2,所以是48小时以外的。
-mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。
-mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。
-mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件。