内容概述:

  1. 数据库备份恢复方式

  2. 数据库逻辑备份实践

1. 数据库备份恢复方式

物理备份方式:

冷备/热备:从底层数据页或者文件信息进行备份

当企业数据服务产生的需要备份的数据量在50G以上的,可以选择物理备份(xtrabackup)

逻辑备份方式

热备:将数据库中生成数据语句进行备份 mysqldump

当企业数据库服务产生的需要备份的数据量在50G以内,可以选择逻辑备份(mysqldump)

2. 数据库逻辑备份实践(mysqldump)

语法结构:

mysqldump -u数据库用户 -p数据库密码 [备份参数] > /路径信息/数据库备份文件.sql

## 常用参数:
-A: 实现数据库全备
-B: 指定要备份的数据库
-F: 备份完毕后,切换binlog日志信息

数据库全备:

mkdir -p /database_backup
mysqldump -uroot -p123  -A >/database_backup/all_database.sql

数据库单库或者多库备份

## 单库备份
mysqldump -uroot -p123 -B world >/database_backup/world.sql
-- 单独备份world数据库

## 多库备份
mysqldump -uroot -p123 -B world xingzhibang >/database_backup/world_xingzhibang.sql
-- 备份world xingzhibang 这两个数据库到一个文件中

数据库中单个数据表进行备份

## 单表备份
mysqldump -uroot -p123 world city > /database_backup/world_city.sql
-- world 库名
-- city 表名

## 表恢复
mysql -uroot -p123 world < /database_backup/world_city.sql

## 多表备份
mysqldump -uroot -p123 world city contry > /database_backup/world_city_contry.sql

3. 数据库逻辑备份参数进阶

 --single-transaction
## 等价于在备份的时候给数据库的数据拍了照,备份的时候数据库可以继续更新

 --master-data=2
## 备份数据后,会在备份后的文件记录位置点信息

 -R
## 表示进行数据存储过程备份

 -E
## 表示进行数据事件信息备份

 --triggers
## 备份数据库触发器信息

基于mysqldump 全量备份+binlog增量备份 进行数据恢复

  • 备份过程

  1. mysqldump命令全量备份

mkdir -p /data/db_backup
cd /data/db_backup/
mysqldump -uroot -p123456 --master-data=2 --single-transaction --triggers  test> test.sql
  1. 查看全量备份信息,注意下面这个信息

less  test.sql 
## 注意下面这个信息
-- CHANGE MASTER TO MASTER_LOG_FILE='binlog.000002', MASTER_LOG_POS=156;
  1. 备份完后,在数据库中进行一些操作,比如删除一个表

mysql -uroot -p123456
mysql> use test; 
mysql> delete  from  upms_system;
  1. flush logs,生成最新的binlog日志

mysql> flush logs
  • 恢复过程

4. 数据库物理备份操作

说明:

物理备份的原理都是基于文件的cp

5. 数据库的克隆操作

克隆的作用:

  1. 可以实现大的数据迁移时,克隆效率高

  2. 实现云主机数据资源迁移到物理主机

克隆方式:

本地克隆:数据备份

第一步:安装克隆插件

mysql> install plugin clone soname 'mysql_clone.so';
mysql> select plugin_name,plugin_status from information_schema.plugins where plugin_name='clone';
+-------------+---------------+
| plugin_name | plugin_status |
+-------------+---------------+
| clone       | ACTIVE        |
+-------------+---------------+

## 永久生效
[mysqld]
plugin-load-add=mysql_clone.so
clone=FORCE_PLUS_PERMANENT

第二步:创建克隆用户

mysql> create user clone_user@'%' identified by 'password';
mysql> grant backup_admin on *.* to 'clone_user';

第三步:实现本地克隆

mkdir -p /data/test
chown -R mysql:mysql /data

mysql -uclone_user -ppassword
mysql> clone local data directory='/data/test/clonedir';

第四步:验证克隆数据

mysqld_safe --datadir=/data/test/clonedir --port=3333 --socket=/tmp/mysql3333.sock --user=mysql --mysqlx=off & 
ss -lntup |grep 3333
mysql -uroot -p123 -S /tmp/mysql3333.sock 

远程克隆:数据迁移