MySql数据库备份与恢复
MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成的。
Linux下MySQL的备份与还原
备份
cd /var/lib/mysql #(进入到MySQL库目录,根据自己的MySQL的安装情况调整目录)
mysqldump -u root -p Test > Test0809.sql #输入密码即可。
- 附自动备份脚本文件
#!/bin/bash
# Author:WinJayX
# Date:2022-04-08
# Maintainer WinJayX <WinJayX@Gmail.com>
# Func:每日对指定数据库进行备份,并在备份完成后上传至OSS及清除本地备份文件。
# File:/root/RDS_Backup/Auto_Backup_RDS.sh
# Database Lit info SyS
# DB_HOST="litsoft-prod-v3-winjay-internal.mysql.rds.aliyuncs.com"
DB_INFO="-hlitsoft-prod-v3-winjay-internal.mysql.rds.aliyuncs.com -P3306 -uroot -paOU^3HJ08s&fsQW"
DB_OPS="--default-character-set=utf8mb4 --hex-blob --master-data=2 --single-transaction --opt --set-gtid-purged=OFF --skip-tz-utc --events --triggers --routines"
BACK_DIR="/BashScript/TempBackupDir/"
# mysqldump $DB_INFO $DB_OPS lit_info_oa > $BACK_DIR/$(date +%Y%m%d%H%M%S)_lit_info_oa.sql
# --single-transaction:备份期间不锁表;--https://blog.csdn.net/u013810234/article/details/105978479
# --opt:默认Mysqldump导出的SQL文件中不但包含了导出的数据,还包括导出数据库中所有数据表的结构信息。此Mysqldump命令参数是可选的,如果带上这个选项代表激活了Mysqldump命令的--quick,--add-drop-table,--add-locks,--extended-insert,--lock-tables参数,也就是通过–opt参数在使用Mysqldump导出Mysql数据库信息时不需要再附加上述这些参数。
# –quick:代表忽略缓冲输出,Mysqldump命令直接将数据导出到指定的SQL文件。
# –add-drop-table:顾名思义,就是在每个CREATE TABEL命令之前增加DROP-TABLE IF EXISTS语句,防止数据表重名。
# –add-locks:表示在INSERT数据之前和之后锁定和解锁具体的数据表,你可以打开Mysqldump导出的SQL文件,在INSERT之前会出现LOCK TABLES和UNLOCK TABLES语句。
# –extended-insert (-e):此参数表示可以多行插入。
# 更多参数说明请看 mysqldump --help
# --set-gtid-purged=OFF:mysqldump默认导出带gitd,不写binlog;mysqldump --set-gtid-purged=OFF 不带gid,写binlog,因不带gitd所以直接开启主从会报错binlog找不到(如果master binlog有自动清除),需reset master,或master停止业务后备份
# --default-character-set=utf8mb4
# TODO
echo "Start backup..."
# 备份MySQL数据库
## ----------参考信息----------
# mysqldump -hlitsoft-prod-v3-winjay-internal.mysql.rds.aliyuncs.com -P3306 -uroot -paOU^3HJ08s&fsQW --default-character-set=utf8mb4 --hex-blob --master-data=2 --single-transaction --opt --set-gtid-purged=OFF --skip-tz-utc --events --triggers --routines lit_inf_sys_db > /root/RDS_Backup/$(date +%Y%m%d%H%M%S)_lit_inf_sys_db.sql
# mysqldump -hlitsoft-prod-v3-winjay-internal.mysql.rds.aliyuncs.com -P3306 -uroot -paOU^3HJ08s&fsQW --single-transaction --opt --set-gtid-purged=OFF lit_inf_sys_db > /root/RDS_Backup/$(date +%Y%m%d%H%M%S)_all-databases.sql
# mysqldump -hlitsoft-prod-v3-winjay-internal.mysql.rds.aliyuncs.com -P3306 -uroot -paOU^3HJ08s&fsQW --opt --all-databases --set-gtid-purged=OFF > /root/RDS_Backup/$(date +%Y%m%d%H%M%S)_all-databases.sql
# mysqldump -h$DB_HOST -P3306 -u$DB_USER -p$DB_PASS $DB_OPS lit_inf_sys_db > $BACK_DIR/$(date +%Y%m%d%H%M%S)_lit_inf_sys_db.sql
# ----------参考结束----------
mysqldump $DB_INFO $DB_OPS lit_info_oa > $BACK_DIR/$(date +%Y%m%d%H%M%S)_lit_info_oa.sql
mysqldump $DB_INFO $DB_OPS lit_inf_sys_db > $BACK_DIR/$(date +%Y%m%d%H%M%S)_lit_inf_sys_db.sql
# mysqldump $DB_INFO $DB_OPS lit_inf_sys_db_process > $BACK_DIR/$(date +%Y%m%d%H%M%S)_lit_inf_sys_db_process.sql
echo "Backup end"
echo "Upload to OSS..."
# 将备份数据上传至阿里云OSS保存
# 前提是需要先安装及配置阿里云ossutil64工具后,才可正常使用工作。
# -r : 递归操作。
# -u : --update,只有当目标文件不存在,或源文件的最后修改时间晚于目标文件时,ossutil才会执行上传操作。
# 具体使用请参考:https://help.aliyun.com/document_detail/179388.html
/usr/local/bin/ossutil64 cp -r /BashScript/Temp oss://litsoft-dbops-backup/RDS_Back/ -u
echo "Upload end..."
# 删除备份至本地存储的备份库,以节省本地存储空间
echo "Delete SQL Files..."
cd $BACK_DIR && rm -rf *inf*sql
echo "Delete end..."
echo '------备份信息化系统数据库及OA数据库,每3小时备份一次,此次完成-------'
# Doker 自建MySQL 8.0 备份脚本 OK#
./mysqldump -h10.17.0.21 -P3306 -uroot -pYourPassword --default-character-set=utf8mb4 --hex-blob --master-data=2 --single-transaction --opt --skip-tz-utc --protocol=TCP --events --triggers --routines lit_inf_sys_db | gzip > /tmp/$(date +%Y%m%d%H%M%S)_lit_inf_sys_db.sql.gz
还原
- 方法一
MySQL命令行导入数据库:
mysql> use news;
mysql> source news_Bakup.sql;
1,将要导入的.sql文件移至bin文件下,这样的路径比较方便
2,同上面导出的第1步
3,进入MySQL:mysql -u {YourDB_UserName} -p
;如我输入的命令行:mysql -u root -p
(输入同样后会让你输入MySQL的密码)
4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库
5,输入:mysql> use 目标数据库名
;如我输入的命令行:mysql> use news;
6,导入文件:mysql> source导入的文件名
如我输入的命令行:mysql> source news.sql;
- 方法二
cd /var/lib/mysql #(进入到MySQL库目录,根据自己的MySQL的安装情况调整目录)
mysql -u root -p Tes < moodle_bak.sql 输入密码即可
# 将要恢复的数据库文件放到服务器的某个目录下,并进入这个目录执行以上命令,moodle_bak.sql是需要恢复的文件名
Windows下MySQL的备份与还原
备份
开始菜单->运行->cmd->利用cd C:\Program Files\MySQL\MySQL Server 5.0\bin
命令进入bin文件夹
mysqldump -u 用户名 -p databasename > exportfilename.sql
导出数据库到文件,
如mysqldump -u root -p voice > voice.sql
,然后输入密码即可开始导出。
还原
进入MySQL Command Line Client,输入密码,进入到“mysql>”,输入命令show databases;
,回车,看看有些什么数据库;建立你要还原的数据库,输入create database voice;
,回车;
切换到刚建立的数据库,输入use voice;
,回车;导入数据,输入source voice.sql;
,回车,开始导入,再次出现mysql>
并且没有提示错误即还原成功。
评论区