Solve the problem of mysql data loss when docker restarts redis

Solve the problem of mysql data loss when docker restarts redis

Official documentation:

So mysql should be started as follows:

docker run -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=password -v /windows drive/specified folder path:/var/lib/mysql mysql:5.7

redis:

docker run -p 6379:6379 -d -v /windows drive/specified folder path:/data redis:5.0 redis-server --appendonly yes

Read more official documents, which contain detailed instructions

Additional knowledge: Docker mounts files into the container and does not change after modification, so it needs to be restarted

Today I found a very strange phenomenon. After I mounted the file on the host into docker, I deleted the file on the host and re-uploaded the file renamed to the same name, but the file in the container was not synchronized.

Let's talk about Linux first. Linux storage is divided into iNode and block. iNode stores the file's attribute information, such as size and location on the disk. Block is a 4k block that stores the actual information of the file. Files less than 4k in size will also occupy 4k of space.

After understanding the above, let's talk about docker. The file mounted into docker is actually an iNode remembered by docker. It can find the block, that is, the actual file information, through this iNode. If you use > to append redirection to write the file, it can be synchronized to docker. However, if you rename it with rm, the iNode of the file will change, but the iNode in docker still points to the previous disk location, so the file has not changed.

rm principle: rm only deletes the iNode. Without the iNode, the block on the disk cannot be found in the normal way. It looks like it has been deleted, but the file information is still there. The file information will be overwritten the next time it is written here. Therefore, there is a way to recover the deleted data. However, if the file is open when it is deleted, the file will not be deleted.

The same is true for vim. When you create a vim file, it copies the existing file. There will be a file at the same level directory that starts with . and ends with swp. When you save and exit, vim will delete the source file and rename this file to the name of the source file, and the iNode will naturally change.

The above article on solving the problem of mysql data loss when restarting redis in docker is all the content that the editor shares with you. I hope it can give you a reference, and I also hope that you will support 123WORDPRESS.COM.

You may also be interested in:
  • Spring Boot solves the problem of Redis cache + MySQL batch storage for high-concurrency data storage
  • How to ensure data consistency between MySQL and Redis
  • Python regularly extracts data from Mysql and stores it in Redis
  • Detailed explanation of the application case of hot and cold data exchange by combining PHP with Redis+MySQL
  • PHP's Laravel framework combined with MySQL and Redis database deployment
  • How to migrate a database from MySQL to Redis
  • How to connect Python to MySQL, MongoDB, Redis, memcache and other databases
  • Data consistency issues between MySQL and Redis

<<:  XHTML 1.0 Reference

>>:  SQL Server Comment Shortcut Key Operation

Recommend

Two ways to start Linux boot service

Table of contents rc.local method chkconfig metho...

Detailed explanation of CSS3 Flex elastic layout example code

1. Basic Concepts //Any container can be specifie...

How to cancel the background color of the a tag when it is clicked in H5

1. Cancel the blue color of the a tag when it is ...

VMware vCenter 6.7 installation process (graphic tutorial)

background I originally wanted to download a 6.7 ...

How to install pip package in Linux

1. Download the pip installation package accordin...

Two methods to implement MySQL group counting and range aggregation

The first one: normal operation SELECT SUM(ddd) A...

MySQL 8.0.15 installation and configuration method graphic tutorial

This article records the installation and configu...

How to Install Xrdp Server (Remote Desktop) on Ubuntu 20.04

Xrdp is an open source implementation of Microsof...

3 common errors in reading MySQL Binlog logs

1. mysqlbinlog: [ERROR] unknown variable 'def...

CSS draw a lollipop example code

Background: Make a little progress every day, acc...

Angular environment construction and simple experience summary

Introduction to Angular Angular is an open source...

How to implement rounded corners with CSS3 using JS

I found an example when I was looking for a way t...