备份与恢复MySQL数据库
本文最后更新于317天前,其中的信息可能已经过时,如有错误请在评论区悄悄告诉我~~~

一、使用Mysqldump备份

mysqldump -u username -p dbname [tbname ...]> filename.sql
  • username:账户名称。
  • dbname:需要备份的数据库名称。
  • tbname:数据库中需要备份的数据表名称,可以指定多个数据表。省略该参数时,会备份整个数据库。
  • >:用来告诉 mysqldump 命令,将备份数据表的定义和数据写入指定的备份文件。
  • filename.sql:备份文件的名称,文件名前面可以加绝对路径。通常将数据库备份成一个扩展名为.sql 的文件,但也可保存位其他类型的文件,例如.txt

示例

1.备份单个数据库信息,命令语法格式如下。

mysqldump -u 账户名 -p 密码 --databases 数据库 > /保存路径/文件名.sql

例如,备份 data 数据库,账户名是 root,密码是 root,备份到当前文件夹的 1.sql 文件中,命令如下。

mysqldump -uroot -proot --databases data >1.sql

2.备份全部数据库信息,命令语法格式如下。

mysqldump -u 账户名 -p 密码 --all-databases > /保存路径/文件名.sql

例如,备份全部数据库,账户名是 root,密码是 root,备份到当前文件夹的 2.sql 文件中,命令如下。

mysqldump -uroot -proot --all-databases >2.sql

3.备份某一个数据表,命令语法格式如下。

mysqldump -u 账户名 -p 密码 数据库名 表名 > /保存路径/文件名.sql

例如,备份 data 数据库中的 users 表,账户名是 root,密码是 root,备份到当前文件夹的 3.sql文件中,命令如下。

mysqldump -uroot -proot data users >3.sql

二、使用 Percona XtraBackup 备份

1、安装Percona XtraBackup及其依赖

yum -y install perl-DBD-mysql
yum -y install rsync
yum -y install libev
yum -y install perl-Digest-MD5
yum install -y epel-release
yum install -y zstd
rpm -ivh percona-xtrabackup-80-8.0.35-30.1.el7.x86_64.rpm

2、全量备份

备份所有数据库,存放在目标目录下。 命令如下:

xtrabackup --backup --target-dir=/data/backups -uroot -p

#--target-dir指定的是全量备份文件存放的文件夹

当出现“completed OK!”则表示备份完成

3、增量备份

备份某个时间段开始的数据,一般来说是在全量的基础上完成的。命令如下:

xtrabackup --backup --target-dir=/root/data/inc1 --incremental-basedir=/root/data/backups -uroot -p

#--target-dir指定的是增量备份文件存放的文件夹
#--incremental-basedir指定的是原全量备份文件存放的文件夹

示例

1、全量备份

(1)准备好备份的目标目录,使用mkdir命令创建好目录

mkdir mysql_backup

(2)执行全量备份命令,指定刚刚创建的文件夹,并输入密码

xtrabackup --backup --target-dir=/root/mysql_backup -uroot -p

备份成功

查看对应文件夹

2、增量备份

(1)增量备份需要在全量备份的基础上进行,创建文件夹

mkdir mysql_backup_1

(2)执行增量备份命令,指定刚刚创建的文件夹和全量备份的文件夹位置,并输入密码

xtrabackup --backup --target-dir=/root/mysql_backup_1 --incremental-basedir=/root/mysql_backup -uroot -p

成功

查看对应文件夹

三、数据恢复

1.恢复所有数据库

例如,恢复 all.sql 文件中的所有数据库,命令如下。

mysql -uroot -p < all.sql

2.恢复到指定数据库

例如,将 node.sql 文件导入 ss 数据库,账户名为 root,密码为 root,命令如下。

mysql -uroot -proot ss < node.sql

3.通过 source 导入数据库

首先通过 mysql 命令登录数据库,在 mysql 命令提示符下执行 source 命令。source 命令语法格式是:

source 绝对路径/文件名.sql

例如,将 node.sql 文件导入 ss 数据库,账户名为 root,密码为 root,命令如下。

shell> mysql -uroot –proot
mysql>use ss
mysql>source node.sql

4.全量备份的恢复

(1)需要停止MySQL数据库

systemctl stop mysqld

(2)复制之前备份的目录(用于后面的增量恢复操作)

cp -R /root/mysql_backup /root/mysql_backup_s

(3)准备完全备份的文件

xtrabackup --prepare --target-dir=/root/mysql_backup

(4)先备份mysql的数据文件(以免恢复不成功的情况出现无法找回数据)

cp -R /var/lib/mysql /var/lib/mysql-bak

(5)清空mysql的数据目录

rm -rf /var/lib/mysql/*

(6)全量备份的恢复

xtrabackup --copy-back --target-dir=/root/mysql_backup

(7)把数据目录中文件和目录的用户和用户组改成mysql

chown -R mysql:mysql /var/lib/mysql/

(8)mysql启动,并检查数据库

systemctl start mysqld

5、增量备份的恢复

(1)停止Mysql数据库

systemctl stop mysqld

(2)用之前的另外一份全量备份拷贝做恢复,准备全量备份的数据

xtrabackup --prepare --apply-log-only --target-dir=/root/mysql_backup_s

(3)把增量备份的数据合并到全量备份数据上

xtrabackup --prepare --incremental-dir=/root/mysql_backup_1 --target-dir=/root/mysql_backup_s

#--incremental-dir指定的是增量备份文件存放的文件夹
#--target-dir指定的是全量备份文件存放的文件夹

(4)先备份Mysql的数据文件(以免恢复不成功的情况出现无法找回数据)

cp -R /var/lib/mysql /var/lib/mysql-baks;

(5)清空Mysql的数据目录

rm -rf /var/lib/mysql/*

(6)备份的恢复

xtrabackup --copy-back --target-dir=/root/mysql_backup_s

(7)把数据目录中文件和目录的用户和用户组改成mysql

chown -R mysql:mysql /var/lib/mysql/

(8)mysql启动,并查看数据库数据

systemctl start mysqld
此文章是我在学校上课时的一些笔记,有错误还请多多包涵,仅供参考
作者:404_502
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0协议。转载请注明文章地址及作者
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇