内容概述:
数据库备份恢复方式
数据库逻辑备份实践
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增量备份 进行数据恢复
备份过程
mysqldump命令全量备份
mkdir -p /data/db_backup
cd /data/db_backup/
mysqldump -uroot -p123456 --master-data=2 --single-transaction --triggers test> test.sql
查看全量备份信息,注意下面这个信息
less test.sql
## 注意下面这个信息
-- CHANGE MASTER TO MASTER_LOG_FILE='binlog.000002', MASTER_LOG_POS=156;
备份完后,在数据库中进行一些操作,比如删除一个表
mysql -uroot -p123456
mysql> use test;
mysql> delete from upms_system;
flush logs,生成最新的binlog日志
mysql> flush logs
恢复过程
4. 数据库物理备份操作
说明:
物理备份的原理都是基于文件的cp
5. 数据库的克隆操作
克隆的作用:
可以实现大的数据迁移时,克隆效率高
实现云主机数据资源迁移到物理主机
克隆方式:
本地克隆:数据备份
第一步:安装克隆插件
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
远程克隆:数据迁移
评论