mysql全量备份及数据恢复实践

2024-04-26 09:12

本文主要是介绍mysql全量备份及数据恢复实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前置   

myql:8.0.34

percona-xtrabackup:percona-xtrabackup-8.0.34-29

一、全量备份脚本

#!/bin/bash
#删除历史
find /data/backups -mtime +10 -exec rm -rf {} \;
#下载备份工具
#wget https://file.zjwlyy.cn/percona-xtrabackup-8.0.34-22.tar.gz (最好用于mysql-8.0.20以上)
USER='root'
PORT=3306
PASSWD='xxxxxx'
HOST='localhost'
SOCKET="/tmp/mysqld.sock"
DATE=`date +"%F"`
/data/percona-xtrabackup-8.0.34/bin/xtrabackup --no-server-version-check --backup --user=$USER --password=$PASSWD --host=$HOST --port=$PORT --socket=$SOCKET --stream=xbstream |gzip - > /data/backups/full_${DATE}.xbstream.gz

参数解释:

--no-server-version-check   不做版本检查

--backup     执行备份的参数

--stream=xbstream      xtrabackup自带的压缩软件格式

gzip      使用gz压缩,缩小空间占用

二、备份恢复测试

2.1准备配置文件/etc/my.cnf

[client]
port            = 3306
socket          = /tmp/mysqld.sock
default-character-set = utf8mb4
[mysqld]
########basic settings########
server-id = 33066771
port = 3306
socket          = /tmp/mysqld.sock
pid-file        = /tmp/mysqld.pid
user = mysql
default_authentication_plugin=mysql_native_password
character_set_server=utf8mb4
default-time-zone='+08:00'
skip_name_resolve = 1
max_connections = 800
max_connect_errors = 1000
datadir = /data/zbdb/mysqldata    #重点
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
join_buffer_size = 2M
tmp_table_size = 512M
tmpdir = /tmp
max_allowed_packet = 16M
sql_mode = ""
#interactive_timeout = 28800
#wait_timeout = 28800
read_buffer_size = 2M
read_rnd_buffer_size = 2M
sort_buffer_size = 256M
lower_case_table_names=1
########log settings########
log_error = /data/zbdb/mysqllog/wlyy6771.err    #重点,手动创建
slow_query_log = 1
slow_query_log_file = /data/zbdb/mysqllog/slow.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_throttle_queries_not_using_indexes = 10
binlog_expire_logs_seconds = 7776000
long_query_time = 2
min_examined_row_limit = 100
########replication settings########
log_bin = /data/zbdb/mysqllog/wlyy6771-bin    #重点
sync_binlog = 100
binlog_format = row 
relay_log = /data/zbdb/mysqllog/relay.log
relay_log_recovery = 1########innodb settings########
innodb_page_size = 16384
innodb_buffer_pool_size = 6G           #重点
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lru_scan_depth = 2000
innodb_lock_wait_timeout = 5
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_method = O_DIRECT
innodb_log_group_home_dir =  /data/zbdb/mysqllog/redolog/   #重点
innodb_undo_directory =  /data/zbdb/mysqllog/undolog/       #重点
innodb_flush_neighbors = 1
#innodb_log_file_size = 300M
innodb_log_buffer_size = 16M
innodb_purge_threads = 4
innodb_thread_concurrency = 64
innodb_print_all_deadlocks = 1
#innodb_strict_mode = 1
innodb_log_file_size = 1024M
innodb_strict_mode = 0
innodb_sort_buffer_size = 64M[mysqldump]
quick
max_allowed_packet = 16M[mysql]
no-auto-rehash
prompt=\\u@\\d \\r:\\m:\\s>[mysqlhotcopy]
interactive-timeout

2.2  准备新的mysql

#添加用户和组
groupadd mysql
useradd -g mysql mysql
#新建文件
rm -rf /data/zbdb/*
mkdir -p /data/zbdb/mysqllog/redolog
mkdir -p /data/zbdb/mysqldata/
#改变目录属主
chown -R mysql:mysql /data/zbdb/mysqllog
chown -R mysql:mysql /data/zbdb/mysqldata
#执行安装
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-8.0.34 --datadir=/data/zbdb/mysqldata/
# 备份mysqldata和mysqllog 目录
cp -rf mysqldata mysqldatabk
cp -rf mysqllog mysqllogbk
#清理mysqldata和mysqllog里的数据
rm -rf mysqldata/*
rm -rf mysqllog/*#修改 mysql.server
#拉到最上面修改
basedir=/usr/local/mysql-8.0.34
datadir=/data/zbdb/mysqldata
#开机启动脚本
cp mysql.server /etc/init.d/mysqld

2.3  恢复数据

#新建备份目录
mkdir /data/backup
#解压文件(gzip那一层解压)
gzip -d /data/full_2024-04-25.xbstream.gz
#解压文件(xbstream那一层解压)
xbstream -x < /data/full_2024-04-25.xbstream -C /data/backup/
#继续解压
xtrabackup --parallel=4 --decompress --target-dir=/data/backup/
#恢复数据
xtrabackup --prepare --target-dir=/data/backup/
根据配置文件恢复数据到数据目录
xtrabackup --defaults-file=/etc/my.cnf --datadir=/data/zbdb/mysqldata --copy-back --target-dir=/data/backup/
#创建日志文件(不自动建)
touch /data/zbdb/mysqllog/wlyy6771.err
#修改目录所有者
chown -R mysql:mysql /data/zbdb/

2.4  启动数据库

service mysqld start

这篇关于mysql全量备份及数据恢复实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937171

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp