1·首先先创建个测试的数据库吧!
create DATABASE test_mysql; #创建新数据库
show databases; #查看有多少数据库
use test_mysql; #使用此数据库
create table ceshi(id int,name char(100));
show tables; #查看有哪些数据表
insert into ceshi values('1','xiaoming'); #添加数据到数据表
select * from ceshi; #查看这个表里的数据
2·手动备份
建个文件夹,
mysqldump -u (数据库用户名)-p (数据库密码)-B 数据库名 > /tmp/mysqlbak/test_backup.sql(此为备份脚本文件) #备份到某个位置
mysqldump -u (数据库用户名)-p (数据库密码) 数据库名 < /tmp/mysqlbak/test_backup.sql(此为备份脚本文件) #从某个位置恢复数据库
这个为手动备份,物理备份,数据量小比较方便,
带-B参数的备份和恢复:
加-B参数的好处: 加上-B参数后,导出的数据文件中已存在创建库和使用库的语句,不需要手动在原库是创建库的操作,在恢复过程中不需要手动建库,可以直接还原恢复。
3·自动备份,策略或 脚本
mysqldump -uroot -p --all-databases(👈这个表示为备份全部数据库,或你想备份的单个数据库的名字 --databases db1 db2 db4)--single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs > backup_sunday_1_PM.sql # 二进制日志备份,在星期天下午1点进行备份
------------------------------------------------------------------------------------------------------------------------------------------------
脚本备份:
vim bak.sh
输入/粘贴以下内容:
第一种:不压缩
mysqldump -uroot -ppassword --all-databases > /home/backup/mysqlbak_$(date +%Y%m%d_%H%M%S).sql
第二种:压缩
mysqldump -uroot -ppassword --all-databases | gzip > /home/backup/mysqlbak_$(date +%Y%m%d_%H%M%S).sql.gz
注意:
把 username 替换为实际的用户名;把 password 替换为实际的密码;
crontab -e
然后
00 2 * * * /home/backup/bak.sh #把脚本加入定时守护进程
4·恢复备份
mysql < bak.sql #可能需要你加 -u root -p 来实现 具体看上边的2部分
source bak.sql; #此为mysql命令行中使用,可能需要带上你的文件路径