Mysql运维篇(三) MySQL备份与恢复

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除!

一、物理备份与逻辑备份的优缺点

1、物理备份:备份数据文件,转储数据库物理文件到某一目录。物理备份恢复速度比较快,但占  用空间比较大,MySQL中可以用 xtrabackup 工具来进行物理备份。

基于磁盘数据文件备份
xtrabackup(XBK) :percona 第三方   *****
MySQL Enterprise Backup(MEB)
优点:
1.类似于直接cp数据文件,不需要管逻辑结构,相对来说性能较高
缺点:
2.可读性差
3.压缩比低,需要更多磁盘空间
建议:
>100G<TB

2、逻辑备份:对数据库对象利用工具进行导出工作,汇总入备份文件内。逻辑备份恢复速度慢,但占用空间小,更灵活。MySQL 中常用的逻辑备份工具为 mysqldump 。逻辑备份就是 备份sql语句 ,在恢复的时候执行备份的sql语句实现数据库数据的重现。

基于SQL语句进行备份
mysqldump       *****
mysqlbinlog     *****
逻辑备份
优点:
1.不需要下载安装
2.备份出来的是SQL,文本格式,可读性高,便于备份处理
3.压缩比较高,节省备份的磁盘空间

缺点:
4.依赖于数据库引擎,需要从磁盘把数据读出
然后转换成SQL进行转储,比较耗费资源,数据量大的话效率较低
建议:
100G以内的数据量级,可以使用mysqldump
超过TB以上,我们也可能选择的是mysqldump,配合分布式的系统
1EB  =1024 PB =1000000 TB

3、备份策略的指定

备份方式:
全备:全库备份,备份所有数据
增量:备份变化的数据
逻辑备份=mysqldump+mysqlbinlog
物理备份=xtrabackup_full+xtrabackup_incr+binlog或者xtrabackup_full+binlog
备份周期:
根据数据量设计备份周期
比如:周日全备,周1-周6增量

4、大牛经验分享

业务零感知!MySQL高效率备份恢复实践_哔哩哔哩_bilibili

mysql语句进阶_show variables like '%secure%'结果属性-CSDN博客

二、MySQL实现逻辑备份

1、备份全部数据库

基本语法:
mysqldump –u 用户名称 –h 主机名称 –p密码 待备份的数据库名称[tbname, [tbname...]]> 备份文件名称.sql

说明: 备份的文件并非一定要求后缀名为.sql,例如后缀名为.txt的文件也是可以的。

客户端通用备份参数:

-u  -p   -S   -h  -P    
本地备份:
mysqldump -uroot -p  -S /tmp/mysql.sock
远程备份:
mysqldump -uroot -p  -h 10.0.0.51 -P3306

备份常用命令+参数示例:

-A 全备参数

-A 全备参数
例子1:
[root@db01 ~]# mkdir -p /data/backup
mysqldump -uroot -p -A >/data/backup/full.sql
Enter password: 

mysqldump: [Warning] Using a password on the command line interface can be insecure.
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events. 

# 补充:
# 1.常规备份是要加 --set-gtid-purged=OFF,解决备份时的警告
# [root@db01 ~]# mysqldump -uroot -p123 -A  --set-gtid-purged=OFF  >/backup/full.sql
# 2.构建主从时,做的备份,不需要加这个参数
# [root@db01 ~]# mysqldump -uroot -p123 -A    --set-gtid-purged=ON >/backup/full.sql

-B db1 db2 db3 备份多个单库

说明:生产中需要备份,生产相关的库和MySQL库
例子2 :
mysqldump -B mysql gtid --set-gtid-purged=OFF >/data/backup/b.sql 

备份单个或多个表

例子3 world数据库下的city,country表
mysqldump -uroot -p world city country >/backup/bak1.sql
以上备份恢复时:必须库事先存在,并且ues才能source恢复
特殊参数1使用(*生产备份必须要加)
-R            备份存储过程及函数
--triggers  备份触发器
-E             备份事件

例子4:
[root@db01 backup]# mysqldump -uroot -p -A -R -E --triggers >/data/backup/full.sql
(5) 特殊参数2使用
-F 在备份开始时,刷新一个新binlog日志
例子5:
mysqldump -uroot -p  -A  -R --triggers -E -F >/bak/full.sql
--master-data=2(生成备份加上,二进制文件也一并记录标签)
以注释的形式,保存备份开始时间点的binlog的状态信息

mysqldump -uroot -p  -A  -R --triggers --master-data=2   >/back/world.sql
[root@db01 ~]# grep 'CHANGE' /backup/world.sql 
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000035', MASTER_LOG_POS=194;

功能:
(1)在备份时,会自动记录,二进制日志文件名和位置号
0 默认值
1  以change master to命令形式,可以用作主从复制
2  以注释的形式记录,备份时刻的文件名+postion号
(2) 自动锁表
(3)如果配合--single-transaction,只对非InnoDB表进行锁表备份,InnoDB表进行“热“”备,实际上是实现快照备份。
示例:

[root@mysql5 ~]# mysqldump -uroot -p654321  -A  -R -E --triggers --master-data=2   >/tmp/back.sql

--single-transaction(生成完整备份语句)
innodb 存储引擎开启热备(快照备份)功能       
master-data可以自动加锁
(1)在不加--single-transaction ,启动所有表的温备份,所有表都锁定
(1)加上--single-transaction ,对innodb进行快照备份,对非innodb表可以实现自动锁表功能
例子6: 备份必加参数
mysqldump -uroot -p -A -R -E --triggers --master-data=2  --single-transaction --set-gtid-purged=OFF >/data/backup/full.sql
--set-gtid-purged=auto(设置主从环境时。gtid必须增加,单库设置gtid=off避免告警输出)
auto , on
off 
使用场景:
1. --set-gtid-purged=OFF,可以使用在日常备份参数中.
mysqldump -uroot -p -A -R -E --triggers --master-data=2  --single-transaction --set-gtid-purged=OFF >/data/backup/full.sql
2. auto , on:在构建主从复制环境时需要的参数配置
mysqldump -uroot -p -A -R -E --triggers --master-data=2  --single-transaction --set-gtid-purged=ON >/data/backup/full.sql
补充资料 MySQL GTID

MySQL gtid作用

MySQL的GTID(Global Transaction ID)是全局事务标识符,从MySQL5.6开始引入,用于强化数据库的主备一致性、故障恢复和容错能力12。其主要功能如下:

  1. 简化复制拓扑下的集群维护,减少人为设置复制position的风险。
  2. 忽略已经执行过的事务,减少数据发生不一致的风险1。
  3. 在binlog中唯一标识一个事务,使得主从同步时可以通过GTID确定从库同步到的位置,而无需通过File_name和File_position找点3。
  4. GTID的引入使得复制和故障恢复变得更加简单和可靠2。
    综上所述,GTID在MySQL数据库中扮演着重要的角色,确保数据的安全和一致性
mysql gtid用途_MySQL 什么是GTID?-CSDN博客
--max-allowed-packet=#
mysqldump -uroot -p -A -R -E --triggers --master-data=2  --single-transaction --set-gtid-purged=OFF --max-allowed-packet=256M >/data/backup/full.sql

 --max-allowed-packet=# 
The maximum packet length to send to or receive from server.

SqlServer 对语句的条数和参数的数量都有限制,分别是 1000 和 2100。
Mysql 对语句的长度有限制,默认是 4M。
Mybatis 对动态语句没有数量上的限制。

## 修改为256M
mysql> SET GLOBAL max_allowed_packet=268435456;
Query OK, 0 rows affected (0.00 sec)
 
## 退出客户端重新登录
mysql> select @@max_allowed_packet;
+----------------------+
| @@max_allowed_packet |
+----------------------+
|            268435456 |
+----------------------+
1 row in set (0.00 sec)
————————————————

Mysql 对语句的长度有限制,默认是 4M_mybatis sql长度-CSDN博客

  • 21
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在CentOS7上安装MySQL备份,您可以按照以下步骤操作: 1. 首先,使用yum安装MySQL的库兼容包,您可以使用以下命令下载并安装该包: ``` wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm ``` 2. 然后,您需要安装xtrabackup工具,您可以使用以下命令进行安装: ``` yum install -y http://rpmfind.net/linux/epel/6/x86_64/Packages/l/libev-4.03-3.el6.x86_64.rpm yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y percona-release enable-only tools release yum -y install rsync perl perl-Digest-MD5 ``` 3. 接下来,您需要创建一个备份脚本文件,您可以使用以下命令创建并编辑脚本文件: ``` vi bst_mysql_backups.sh ``` 4. 在脚本文件中,您可以使用xtrabackup命令进行全备份。以下是一个示例脚本命令: ``` #!/bin/bash xtrabackup --backup --target-dir=/data/dll/ --user=root --password=Mysql123 --socket=/var/lib/mysql/mysql.sock ``` 5. 保存并退出脚本文件。 6. 最后,您可以使用cron来创建定时任务,以便定期执行备份脚本。您可以使用以下命令编辑cron任务: ``` crontab -e ``` 7. 在cron文件中,您可以添加一个定时任务来执行备份脚本。以下是一个示例cron任务: ``` 0 0 * * * /bin/bash /path/to/bst_mysql_backups.sh ``` 8. 保存并退出cron文件。 现在,您的CentOS7系统上已经安装并配置了MySQL备份。定时任务将会按照您设置的时间执行备份脚本,并将备份文件保存在指定的目录中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值