一、使用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