侧边栏壁纸
博主头像
★街角晚灯★博主等级

博观而约取 厚积而薄发

  • 累计撰写 438 篇文章
  • 累计创建 181 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

MySQL数据库备份与恢复

WinJay
2013-08-09 / 0 评论 / 0 点赞 / 139 阅读 / 6240 字 / 正在检测是否收录...
温馨提示:
文章发布较早,内容可能过时,阅读注意甄别。。。。

MySql数据库备份与恢复

image-20230612144158624

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>并且没有提示错误即还原成功。

0

评论区