Mysql数据备份与恢复——Docker版

article/2025/10/7 23:48:16

Mysql数据备份与恢复——Docker版

​ 工作上由于需要将旧服务器停用换用新服务器,而旧服务器上存放的mysql数据库,查看磁盘得知大概50G以上,如果采用工具将数据导出成json再到新服务上执行,其过程花费时间太长了,至少得半天…

所以想着能否直接将数据库上的data目录数据直接复制到新的服务器上,然后利用docker重新创建新的容器,这样时间肯定快,在此过程中,由于不了解其原理,踩了很多坑,查找很多博客,大多数都不够详细,或者不符合自己实际情况。特此记录一下!

说明:

  • mysql版本为8.0.26
  • 部署在centos8上,使用docker部署
  • 数据磁盘采用映射方式,映射位置为:/usr/local/mysql,内容:conf、data、mysql-files

一、数据备份

1、总览目录结构

mysql文件夹
|-- conf文件夹                                                                         
|   |-- conf.d文件夹                                                                    #停mysql迁移                      
|   |-- my.cnf                                                                         #停mysql迁移
|   `-- my.cnf.fallback                                                                #停mysql迁移
|-- data文件夹 
|   |-- #innodb_temp文件夹                                                              #
|   |-- mysql文件夹                                                                     #
|   |-- performance_schema文件夹                                                        #
|   |-- sys文件夹                                                                       #
|   |-- (其他文件夹,此处就是自己创的数据库,例如:feparks等等)                                #停mysql迁移
|   |-- #ib_16384_0.dblwr                                                              #                 
|   |-- #ib_16384_1.dblwr                                                              #
|   |-- auto.cnf                                                                       #停mysql覆盖
|   |-- ca-key.pem                                                                     #
|   |-- ca.pem                                                                         #
|   |-- client-cert.pem                                                                #
|   |-- client-key.pem                                                                 #          
|   |-- ecology                                                                        #
|   |-- ib_buffer_pool                                                                 #停msyql覆盖
|   |-- ibdata1                                                                        #
|   |-- ib_logfile0                                                                    #停msyql覆盖
|   |-- ib_logfile1                                                                    #停msyql覆盖
|   |-- ib_logfile2                                                                    #(看情况是否删除或覆盖)
|   |-- ib_logfile3                                                                    #
|   |-- ibdata1                                                                        #停msyql覆盖
|   |-- mysql.ibd                                                                      #停msyql覆盖
|   |-- mysql-bin.000001                                                               #
|   |-- mysql-bin.000002                                                               #
|   |-- mysql-bin.000003                                                               #
|   |-- mysql-bin.index                                                                #
|   |-- private_key.pem                                                                #
|   |-- public_key.pem                                                                 #
|   |-- server-cert.pem                                                                #
|   |-- server-key.pem                                                                 #
|   |-- undo_001                                                                       #
|   |-- undo_002                                                                       #
`-- mysql-files                                                                        #空文件夹即可

2、将data文件夹压缩或者直接导出到本地进行备份,位置:/user/local/mysql/data

image-20230202141537007

image-20230202141609806

image-20230202141642734

3、将conf文件夹压缩或者直接导出到本地进行备份,位置:/user/local/mysql/conf

image-20230202144059156

4、查看my.cnf文件,到时恢复时需要

# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock 
datadir         = /var/lib/mysql                 #mysql容器里数据存储位置,这里最好不变
port = 3306
secure-file-priv= ''
default_authentication_plugin= mysql_native_password
character-set-server=utf8mb4server-id = 1
expire_logs_days = 7
binlog_format=ROWmax_connections = 5000
max_connect_errors = 10
table_open_cache = 4096
event_scheduler = ON
skip-name-resolve
#lower_case_table_names = 1              #这里注释掉是因为启动时报错
group_concat_max_len = 102400max_allowed_packet = 100M
binlog_cache_size = 32M
max_heap_table_size = 256M
read_rnd_buffer_size = 64M
sort_buffer_size = 256M
join_buffer_size = 512M
thread_cache_size = 300
log_bin_trust_function_creators=1
key_buffer_size = 256M
read_buffer_size = 32M
read_rnd_buffer_size = 128M
bulk_insert_buffer_size = 512M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES######READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE
transaction_isolation = READ-COMMITTED
tmp_table_size = 512M
log-bin=mysql-bin
binlog_format=mixed
expire_logs_days = 15
long_query_time = 5####### InnoDB
innodb_buffer_pool_size = 512M
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 32M
innodb_log_file_size = 1024M
innodb_log_files_in_group = 4
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
#innodb_force_recovery=1[mysqldump]
quick
max_allowed_packet = 102400M[mysql]
no-auto-rehash[myisamchk]
key_buffer = 16M
sort_buffer_size = 16M
read_buffer = 8M
write_buffer = 8M[mysqlhotcopy]
interactive-timeout[mysqld_safe]
open-files-limit = 65535
log-error=/var/log/mysql_error.log# Custom config should go here
!includedir /etc/mysql/conf.d/

二、数据恢复

1、在新的服务器上利用docker方式按照mysql

  • 创建mysql映射目录,此处:/usr/local/mysql
mkdir /usr/local/mysql
  • 将前面备份的conf目录上传到/usr/local/mysql下
  • 在/usr/local/mysql下创建data目录和mysql-files目录
mkdir /usr/local/mysql/data
mkdir /usr/local/mysql/mysql-files
  • 执行安装mysql命令
docker run -di --name mysql --network=host -e MYSQL_ROOT_PASSWORD='^`(/Das@KK321(' -e TZ=Asia/Shanghai -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql -v /usr/local/mysql/mysql-files:/var/lib/mysql-files mysql:8.0.26
  • 查看启动状况,运行成功看到3306端口启动后,进行下一步
docker logs -f mysql

2、将mysql停服务,再操作数据拷贝

docker stop mysql

3、将备份到data数据上传到/usr/local/mysql/data下,⚠️注意:不是所有的文件进行覆盖拷贝的!!!!

覆盖文件如下(去参考前面写的总览目录结构):

  • ibdata1

  • ib_logfile0

  • ib_logfile1

  • ib_buffer_pool

  • auto.cnf

  • mysql.ibd

    注意:ib_logfile2和ib_logfile3文件根据实际情况来,如果旧服务器上的data中有此文件,就需要进行覆盖,否则就进行删除,不然会报错:ib_logfile2 is of diffrent size…

4、完成拷贝后,启动mysql容器

docker start mysql

http://chatgpt.dhexx.cn/article/kSPBL3Fb.shtml

相关文章

MySQL数据备份、恢复

文章目录 一.MySQL日志管理1.1日志分类1.2日志配置1.3日志查询 二.MySQL数据备份2.1物理备份2.2逻辑备份 三.常用的备份方法3.1物理冷备3.2工具备份(温备)3.3增量备份与恢复3.3.1开启二进制日志功能3.3.2二进制日志读取3.3.3一般恢复3.3.4节点恢复3.3.5基于时间点恢复 四.总结 …

Mysql.数据备份

目录 前言 思考: 1. 如果只用redo log或者只用binlog可以吗? 2.xtrabackup实现mysql:全量备份增量备份 (1)简介: (2)下载: (3)官方文档: (4)源服务器和目标服务器准备: (5)源服务器备份全量及一次…

MySQL的数据备份

MySQL的数据备份 MySQL数据完全备份 数据备份目的? 数据丢失或者损坏,可以使用备份数据恢复 数据备份策略 完全备份 备份所有数据(一张表,一个库、一台服务器) 增量备份 备份上次备份后,所有新产生的数…

mysql数据备份

直接拷贝文件 myisam存储引擎 只要对应表的后缀为.frm .MYD .MYI,三个文件拷贝到对应的数据库文件夹就行 innodb存储引擎 先通过SHOW CREATE TABLE table命令,查询出表的创建语句,然后在备份库中执行执行ALTER TABLE table DISCARD TABLESPACE,丢弃的表空间拷贝表的后缀为.…

windows MySQL数据备份

本博客属作者原创,未经允许禁止转载,请尊重原创!如有问题请联系QQ509961766 环境 OS:windows server 2012 Mysql:5.6.33 编写脚本 新建dump.bat批处理文件 rem auther:wwhy rem date:20210823 rem ******Backup MyS…

Mysql 数据备份

一、数据库备份的分类 备份方式分很多种,从物理与逻辑的角度,备份可分为以下几类: 1. 物理备份 指对数据库操作系统的物理文件(如数据文件、日志文件等)的备份 物理备份是磁盘块为基本单位将数据从主机复制到备机 物…

Mysql数据备份(mysqldump的操作)

数据备份 所有备份数据都应放在非数据库本地,(得用远程存储,如ftp,nfs)而且建议有多份副本。 备份的作用 能够防止由于机械故障以及人为误操作带来的数据丢失,如,将数据库文件保存在了其它地…

MySQL 数据备份与恢复

本次使用的MySQL版本为8.0.20 目录 一、数据备份 1.使用 MySQLdump 命令备份 (1)使用MySQLdump备份单个数据库中的所有表 案例:完成数据插入后,输入备份命令如下: (2)使用MySQLdump备份数据…

MySQL备份

目录 一、直接拷贝数据库文件 二、mysqldump备份数据库 1、备份 2、备份还原 (1)完全备份还原 (2)增量备份 #eg ​(1)创建一个新的数据库表resume.test ​(2)此时完全备份 ​​(3)接着再往数据库表里面插入两条数据 ​(4)删除数据库resume,刷新日志 ​(5)此时会增加一个…

MySQL备份方案

mysql数据库的几种备份方案: 一、binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 1、binlog日志 1.1、引起mysql服务器改变的任何操作( 增 删 改 没有查)1.2、复制功能依赖于此日志1.3、slave服务器通过复制master…

MySQL 数据库备份(一)(完全备份与恢复)

文章目录 前言一、MySQL 完全备份1.数据库备份方式精讲1.1 数据库备份的重要性1.2 数据库备份的分类1.2.1 物理备份1.2.2 逻辑备份1.2.3 完全备份1.2.4 差异备份1.2.5 增量备份1.2.6 备份方式比较 1.3 MySQL 完全备份概念解读 2.mysqldump 备份演练2.1 使用 tar 打包文件夹备份…

捷豹路虎选择思博伦车载以太网一致性测试解决方案

现代化的汽车往往拥有上百种发动机控制单元(ECU),随着越来越多的车辆开始支持多摄像机和高级驾驶员辅助系统(ADAS)等特性,汽车设计师必须在车载网络中采用更高带宽的以太网技术。汽车以太网源于现代通信网络…

Hype_V

Hyper-V是 微软的一款虚拟化产品,是微软第一个采用类似Vmware和Citrix开源Xen一样的基于hypervisor的技术。这也意味着 微软会更加直接地与市场先行者VMware展开竞争,但竞争的方式会有所不同。 目录 简介 系统要求 架构特点 技术 实际部署 展开 简介 系统…

HSRP介绍

HSRP(Hot Standby Router Protocol 热备份路由器协议)是Cisco的专有协议。HSRP把多台路由器组成一个“热备份组”,形成一个虚拟路由器。这个组内只有一个路由器是Active(活动)的,并由它来转发数据包,如果活动路由器发生了故障,备份…

php+coreseek/sphinx之中文全文搜索平台搭建

1.简介 sphinx是一款高性能全文搜索软件包,由俄罗斯人开发,sphinx本身是可以支持中文搜索的,只是不支持中文分词,需要安装中文分词插件,coreseek就是一个打包了mmseg中文分词插件和sphinx源码的安装包。 2.安装 cores…

live555传输Speex音频详解一:Speex over RTP

1. RTP Speex 头部 RTP头部在[RFC3550]中定义。本文定义RTP头部中各字段的用法。 Payload Type (PT): 本格式的负责类型号。 Marker (M) bit: 此位被用来标志一段无声后有声的开始。打在 有声数据的第一个包上。 Speex支持声音检测,可以在无声时不 产生帧数据。所…

Speex的使用

Downloads Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式。Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛 。另外,相对于其它编解码器,Speex也很适合网络应用,在网络应用上有着自己…

网络测速服务器OpenSpeedTest

什么是 OpenSpeedTest ? OpenSpeedTest 是一个跨平台的互联网速度测试应用程序。因此,您可以在不同操作系统中的各种网络浏览器中测试您的互联网速度,而无需安装任何其他应用程序或插件(无需 Flash 或 Java)。这意味着…

【SpeechX—统一高性能语音部署工具】SpeechX Custom ASR

(以下内容搬运自 PaddleSpeech) 在一些场景中,识别系统需要高精度的识别一些稀有词,例如导航软件中地名识别。而通过定制化识别可以满足这一需求。 相关demo: https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/demos/custom_streaming_asr …

Speex for Android

http://blog.csdn.net/chenfeng0104/article/details/7088138 在Android开发中,需要录音并发送到对方设备上。这时问题来了,手机常会是GPRS、3G等方式上网,所以节省流量是非常关键的,使用Speex来压缩音频文件,可以将音…