技术分享
mysql读书笔记--备份还原
2021-04-25
2mysqldump多个命令参数生产标准备份实战
mysqldump -uroot -p'oldboy123' -B d-name|gzip >/tmp/mysql.sql.gz
-B 添加建库建表的语句
同时备份多个数据库
-A 备份全部数据库
--compact 减少输出注解,生产不用
gzip 压缩数据库
-F 切割bin-log日志,刷新binlog参数
--master-data=1 增加binlog日志文件名及对应的文置点
--master-data=2 添加了注释
-x --local-all-tables
-l --local-tables Lock all tables for read
-d 只备份表结构
-t 只备份数据
--single-transaction 适合innodb事务数据库备份
备注:在/etc/my.cnf的[mysqld]里启用log-bin=mysql-bin所有的更改都会写在里面
过滤多余信息
egrep -v "#|^$|/*|--" /tmp/mysql.sql
mysqldump属于逻辑备份
恢复数据库
mysql -uroot -p'oldboy' </tmp/mysql.sql(备份时叫了-B,所以恢复时不需要指定数据库?)
备份数据库单表
语法:mysqldump -u 用户名 -p 数据库 表名 > 备份的文件名
mysqldump -uroot -p oldboy student > /tmp/mysql_oldboy_student.sql
分库多表备份脚本
#!/bin/bash
user=root
pwd=oldboy
time=$(date +%F)
if [ ! -d /tmp/${time} ];then
mkdir -p /tmp/${time}
fi
for dbname in $(mysql -u${user} -p'${pwd}' -e "show databases;"|egrep -v "information_schema|performance_schema|Database|mysql")
do
for tname in $(mysql -u${user} -p'${pwd}' -e "use $dbname;show tables;"|egrep -v "Tables")
do
mysqldump -u${user} -p'${pwd}' ${dbname} ${tname} >/tmp/${time}/${dbname}_${tname}.sql
done
done
Warning: Using a password on the command line interface can be insecure
sh /tmp/mysql.sh >/dev/null 2>&1
06只备份MySQL表结构及只备份MySQL数据
mysql -uroot -p'oldboy' -d oldboy(只备份表结构)
mysql -uroot -p'oldboy' -t oldboy(只备份数据 )
7企业生产场景不同引擎备份命令参数详解
myisam:
mysqldump -uroot -poldboy123 -A -B -F --master-data=2 -x|gzip>/tmp/oldboy_all.sql.gz
innodb:
mysqldump -uroot -poldboy -A -B -F --master-data=2 --single-transaction|gzip>/tmp/oldboy_all.sql.gz
8利用source恢复mysql数据讲解及实战
进入mysql命令行
source /tmp/mysql_bal_B.sql
9分库备份后mysql如何分库恢复实战
解压数据库
gzip -d /tmp/oldboy_B.sql.gz
mysql -uroot -p'oldboy123' </tmp/odboy_B.sql (备份时加了-B参数)
mysql -uroot -p'oldboy123' oldboy</tmp/odboy_B.sql (备份时没加-B参数,要指定数据库名,而且要先建立数据库)
还原数据库备份
ls /tmp
mysql.sql
oldboy.sql
oldboy_gbk.sql
wiki.sql
for dbname in `ls /tmp/*.sql|sed 's#\.sql##g'`;do mysql -uroot -p'lodboy' <${dbname}.sql;done
- 标签:
-
其他