centos7中MySQL备份还原策略

目录

一、直接拷贝数据库文件

1.1在shangke主机上停止服务并且打包压缩数据库文件

1.2 在shangke主机上把数据库文件传输到localhost主机上(ip为192.168.33.157)

1.3在localhost主机上停止服务,解压数据库文件

1.4 在localhost主机上开启服务

1.5 测试

二、mysqldump 进行备份

2.1 备份恢复单个数据库

2.2  备份恢复单个表

2.3 备份数据结构

2.4 mysqldump+binlog 增量备份

2.4.1 修改配置文件

2.4.2   模拟凌晨2:00 备份

2.4.3  表里继续插入数据

2.4.4  模拟10点,误删表ceshi表

2.4.5 恢复

三、mydumper备份

3.1 mydumper下载安装

3.2 备份

3.3 模拟数据丢失和恢复

四、lvm快照实现

4.1 添加硬盘

4.2 创建一个逻辑卷

4.3  停止服务备份数据库

4.4 挂载逻辑卷到当前mysql的数据目录里

4.5 将刚刚备份的数据解压到数据目录里

4.6 修改数据目录的权限

4.7 开启服务

4.8 加读锁,创建快照,解锁

4.9 将快照挂载到临时目录里

4.10  备份数据

4.11 卸载快照并删除

4.12 查看数据

 4.13 测试

五、xtrabackup 备份数据库

5.1 下载安装xtrabackup。

5.2 创建用户和授权

5.3 完全备份

5.4 增量备份

5.5 恢复数据

5.6 删除数据恢复数据

补充:


 环境:

centos7中MySQL备份还原策略_第1张图片

 

=========================================================================

一、直接拷贝数据库文件

把主机为shangke的数据库文件备份,然后在去localhost主机上恢复。

1.1在shangke主机上停止服务并且打包压缩数据库文件

systemctl stop mysqld
cd /var/lib/mysql
tar czf /opt/all_db.tar.gz *

centos7中MySQL备份还原策略_第2张图片


1.2 在shangke主机上把数据库文件传输到localhost主机上(ip为192.168.33.157)

scp /opt/all_db.tar.gz 192.168.33.157:/opt


1.3在localhost主机上停止服务,解压数据库文件

centos7中MySQL备份还原策略_第3张图片


1.4 在localhost主机上开启服务

 centos7中MySQL备份还原策略_第4张图片


1.5 测试

在shangke主机上的数据库中数据如下:

centos7中MySQL备份还原策略_第5张图片

在localhost 主机上的数据库中数据如下:

centos7中MySQL备份还原策略_第6张图片 
=========================================================================

二、mysqldump 进行备份

2.1 备份恢复单个数据库

[root@shangke ~]# mysqldump -uroot -p123456 --default-character-set=utf8 -B lianxi1 > /tmp/lianxi.$(date +%F).sql

mysql> source /tmp/lianxi1.2023-07-22.sql

centos7中MySQL备份还原策略_第7张图片

备份多个库,-B 数据库1 数据库2 ... 


2.2  备份恢复单个表

#备份,lianxi1是数据库名字,ceshi是lianxi1里面的数据表
mysqldump -uroot -p123456 lianxi1 ceshi >/tmp/lianxi1_ceshi.sql

#恢复
mysql -uroot -p123456 lianxi1 

centos7中MySQL备份还原策略_第8张图片


2.3 备份数据结构

mysqldump -uroot -p123456 -d lianxi1 >/tmp/lianxi1.sql

mysql -uroot -p123456 lianxi1

centos7中MySQL备份还原策略_第9张图片


2.4 mysqldump+binlog 增量备份

2.4.1 修改配置文件

前提:开启bin-log
 vim /etc/my.cnf
            
[mysqld]
log_bin=mysql-bin
server_id=158     ----》server_id一般是IP的最后一段
            
重启mysqld:systemctl restart mysqld

centos7中MySQL备份还原策略_第10张图片


2.4.2   模拟凌晨2:00 备份

mysqldump -uroot -p123456 lianxi1 ceshi >/tmp/lianxi1_ceshi.sql

centos7中MySQL备份还原策略_第11张图片


2.4.3  表里继续插入数据

mysql -uroot -p123456 -e "insert into lianxi1.ceshi values('xiaohong'),('xiaohua')"


2.4.4  模拟10点,误删表ceshi表

 mysql -uroot -p123456 -e "drop table lianxi1.ceshi"


2.4.5 恢复

(1)

检查全备后的所有binlog
# ls -lrt /var/lib/mysql/mysql-bin.*

立即刷新并备份出binlog
mysqladmin -uroot -p flush-logs

找到新插入数据的binlog日志

 (2)用mysqlbinlog  命令查看,进行确认。

#注意5.7版本,insert语句已经加密,默认看不到,查看时加上选项 --base64-output=DECODE-ROWS -vv

[root@shangke ~]# mysqlbinlog /var/lib/mysql/mysql-bin.000002 --base64-output=DECODE-ROWS -vv

centos7中MySQL备份还原策略_第12张图片

(3)将日志复制到新目录

centos7中MySQL备份还原策略_第13张图片

(4)寻找时间

从binlog日志中找到插入数据的开始时间开始节点,结束时间结束节点

centos7中MySQL备份还原策略_第14张图片

(5)提取记录(基于时间)

[root@shangke back]# mysqlbinlog mysql-bin.000002 --start-datetime="2023-07-22 12:02:17" --stop-datetime="2023-07-22 12:02:49" -r time.sql

 

 注:mysqlbinlog mysql-bin.000002 --start-position=340 --stop-position=490 -r pos1.sql 是基于节点
 

(6)恢复凌晨备份

centos7中MySQL备份还原策略_第15张图片

 (7)恢复增量备份

centos7中MySQL备份还原策略_第16张图片

注意:备份完了一定要检查备份的数据内容,看看是否有数据,如果备份的数据是无效的就很麻烦。

=========================================================================

三、mydumper备份

3.1 mydumper下载安装

下载资源:mydumper-0.14.5-3.el7.x86-64资源-CSDN文库

安装:

centos7中MySQL备份还原策略_第17张图片


3.2 备份

centos7中MySQL备份还原策略_第18张图片


3.3 模拟数据丢失和恢复

centos7中MySQL备份还原策略_第19张图片

=========================================================================

四、lvm快照实现

4.1 添加硬盘

centos7中MySQL备份还原策略_第20张图片


4.2 创建一个逻辑卷

centos7中MySQL备份还原策略_第21张图片


4.3  停止服务备份数据库

centos7中MySQL备份还原策略_第22张图片


4.4 挂载逻辑卷到当前mysql的数据目录里


4.5 将刚刚备份的数据解压到数据目录里

centos7中MySQL备份还原策略_第23张图片

 这时候就会把解压的所有数据保存到/dev/mysql/mysql_data设备上。


4.6 修改数据目录的权限

centos7中MySQL备份还原策略_第24张图片


4.7 开启服务

centos7中MySQL备份还原策略_第25张图片


4.8 加读锁,创建快照,解锁

给数据库加读锁、给mysql的数据库所在的逻辑卷创建快照、解锁数据库这些操作需要在一个会话完成。

 echo "flush tables with read lock; system lvcreate -n lv_mysql_s -L 500M -s /dev/mysql/mysql_data;unlock tables;" |mysql -uroot -p123456

4.9 将快照挂载到临时目录里

mkdir /mnt/mysql && mount /dev/mysql/mysql_data /mnt/mysql

centos7中MySQL备份还原策略_第26张图片

如果没有rsync命令需要下载


4.10  备份数据

mkdir /backup && rsync -av /mnt/mysql/ /back

centos7中MySQL备份还原策略_第27张图片


4.11 卸载快照并删除

umount /mnt/mysql && lvremove /dev/mysql/mysql_data 


4.12 查看数据

centos7中MySQL备份还原策略_第28张图片

 4.13 测试

centos7中MySQL备份还原策略_第29张图片

=========================================================================

五、xtrabackup 备份数据库

5.1 下载安装xtrabackup。

网址:Software Downloads - Percona

centos7中MySQL备份还原策略_第30张图片

安装

yum localinstall percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm -y

centos7中MySQL备份还原策略_第31张图片


5.2 创建用户和授权

centos7中MySQL备份还原策略_第32张图片


5.3 完全备份

centos7中MySQL备份还原策略_第33张图片

innobackupex --user=bkpuser --password=123456 --no-timestamp /db_bak/full_`date +%F`

centos7中MySQL备份还原策略_第34张图片 centos7中MySQL备份还原策略_第35张图片

  

--no-timestamp 参数可以不会生成时间戳 

centos7中MySQL备份还原策略_第36张图片

--apply-log的作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。


5.4 增量备份

在以上完全备份的基础上,开始新增加数据。

centos7中MySQL备份还原策略_第37张图片

 备份新增加的数据

centos7中MySQL备份还原策略_第38张图片

 centos7中MySQL备份还原策略_第39张图片

5.5 恢复数据

centos7中MySQL备份还原策略_第40张图片

5.6 删除数据恢复数据

centos7中MySQL备份还原策略_第41张图片

 centos7中MySQL备份还原策略_第42张图片

=========================================================================

补充:

1、完全备份、差异备份、增量备份

centos7中MySQL备份还原策略_第43张图片

完全备份、增量备份、差异备份 (从数据收集来分)
完全备份:备份全部数据;
增量备份:仅备份上次完全备份或增量备份以后变化的数据;
差异备份:仅备份上次完全备份以来变化的数据;

如图,白色是完全备份,黄色部分是增量备份, 蓝色部分也是增量备份,黄色+蓝色是差异备份。


2、my.cnf文件

在my.cnf文件中,mysqld部分常用的字段有:

datadir:指定MySQL数据文件的存储路径。
port:指定MySQL服务器监听的端口号。
bind-address:指定MySQL服务器绑定的IP地址。
socket:指定MySQL服务器的套接字文件路径。
character-set-server:指定MySQL服务器的默认字符集。
collation-server:指定MySQL服务器的默认排序规则。
max_connections:指定MySQL服务器允许的最大连接数。
key_buffer_size:指定MySQL服务器使用的索引缓冲区大小。
innodb_buffer_pool_size:指定InnoDB存储引擎使用的缓冲池大小。
query_cache_size:指定查询缓存的大小。
log_error:指定错误日志文件的路径。
slow_query_log:指定是否启用慢查询日志。
log_slow_queries:指定慢查询日志文件的路径。
log_bin:指定是否启用二进制日志。
binlog_format:指定二进制日志的格式。

basedir : mysql的安装目录和解压目录是两个概念。
这些是常用的字段,根据实际需求可以在my.cnf文件中进行配置


3、如果在my.cnf 中删除log_bin 和server_id  字段之后再添加重启服务发现失败.

可能是因为日志文件冲突:如果在删除log_bin配置项后,MySQL已经生成了一些binlog日志文件,再重新添加log_bin配置项时,可能会导致日志文件冲突。在重新添加log_bin配置项之前,可以尝试删除已生成的binlog日志文件,然后再启动MySQL服务。

centos7中MySQL备份还原策略_第44张图片

你可能感兴趣的:(数据库,mysql,数据库,centos7)