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

这篇具有很好参考价值的文章主要介绍了Mysql数据备份与恢复——Docker版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

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

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

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=utf8mb4

server-id = 1
expire_logs_days = 7
binlog_format=ROW

max_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 = 102400

max_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…文章来源地址https://www.toymoban.com/news/detail-427034.html

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

docker start mysql

到了这里,关于Mysql数据备份与恢复——Docker版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何备份与恢复MySQL数据库数据

    目录 一、MySQL备份 备份方式 完全备份 差异备份 增量备份 二、常见的备份方法 物理冷备 专用备份工具 mysqldump 或 mysqlhotcopy 启用二进制日志进行增量备份 第三方工具备份 三、MySQL完全备份 四、数据库完全备份分类 物理冷备份与恢复 mysqldump备份与恢复 五、物理冷备份与恢复

    2024年02月16日
    浏览(46)
  • mysql 数据备份与恢复使用详解

    对一个运行中的线上系统来说,定期对数据库进行备份是非常重要的,备份不仅可以确保数据的局部完整性,一定程度上也为数据安全性提供了保障,设想如果某种极端的场景下,比如磁盘损坏导致某个时间段数据丢失,或者误操作导致数据表数据被删等... 这种情况在现实中

    2024年02月08日
    浏览(45)
  • 9-MySQL数据库 数据的备份与恢复

    1.date文件的备份 2.mysqldump 备份 说明: mysqldump是MySQL数据库中的一个实用程序,它主要用于转储(备份)数据库。mysqldump通过生成一个SQL脚本文件,包含从头开始重新创建数据库所必需的(如 CREATE TABLE和INSERT等),来实现数据库的备份和转储。这样,你可以在任何时候通过运

    2024年02月08日
    浏览(49)
  • MySQL数据库备份与恢复

    在项目的开发过程中数据库的备份是非常重要的,为了防止数据库受到破坏,造成不可估量的损失,所以一定要进行数据库的备份,并且需要掌握数据库恢复方法,在发生数据库损坏的时候,能快速进行数据库恢复。 本文主要介绍MySQL数据表备份与恢复主要的三种方法,包括

    2024年02月12日
    浏览(55)
  • mysql数据库备份和恢复

    数据备份可以分为三种, 热备份。 数据库处于运行状态,此时依赖数据库的日志文件进行备份 温备份。 进行数据备份时数据库服务正常进行,但是数据智能度不能写。 冷备份。数据库处于关闭状态,能够够好的保证数据库的完整性。 逻辑备份。使用软件从数据库中提取数

    2024年02月12日
    浏览(46)
  • 数据库应用:MySQL备份与恢复

    目录 一、理论 1.数据备份 2.完全备份与恢复 3.完全备份与恢复应用 4.增量备份与恢复 5.增量备份与恢复应用 6.使用脚本备份 7.日志管理 二、实验 1.完全备份与恢复 2.增量备份与恢复 3.使用脚本备份 三、问题 1.mysqldump报错 四、总结 (1)重要性 ①  备份的主要目的是灾难恢复

    2024年02月16日
    浏览(52)
  • 数据库(MySQL的备份和恢复)

    目录 1.1 MySQL 日志管理 1.1.1 MySQL日志类型 1.1.2 错误日志 错误日志中主要记录的几种日志 错误日志的定义 1.1.3 通用查询日志 1.1.4 慢查询日志 和慢查询相关的变量设置 1.1.5 二进制日志 二进制日志是记录执行的语句还是执行后的数据 日志滚动  1.2 MySQL备份 1.2.1 备份类型 1.2.2

    2024年01月25日
    浏览(43)
  • MySQL——使用mysqldump备份与恢复数据

    目录 1.mysqldump简介 2.mysqldump备份数据 2.1 备份所有数据库 2.2 备份一个/多个数据库 2.3 备份指定库中的指定表 3.mysqldump恢复数据 3.1 恢复数据库 3.2 恢复数据表 前言 : mysqldump 和 binlog 都可以作为MySQL数据库备份的方式 : mysqldump 用于将整个或部分数据库导出为可执行的SQL文件

    2024年02月03日
    浏览(31)
  • MySQL数据库的备份与恢复

    备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误 人为操作错误 运算错误 磁盘故障 灾难(如火灾、地震)和盗窃 1)物理备份 物理备份:对数据库操作系统的物理文件(如数据

    2024年02月04日
    浏览(53)
  • Mysql数据库增量备份与恢复

    使用 mysqldump 进行完全备份,备份的数据中有重复数据,备份时间与恢复时间长。 而增量备份就是备份自上一次备份之后增加或改变的文件或内容。 1、增量备份的特点: 没有重复数据,备份量不大,时间短 恢复麻烦:需要上次完全备份及完全备份之后所有的增量备份才能恢复

    2024年02月07日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包