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

Introduction to Docker Architecture

Docker includes three basic concepts: Image: A Do...

Security configuration and detection of SSL after the website enables https

It is standard for websites to enable SSL nowaday...

MySQL paging analysis principle and efficiency improvement

MySQL paging analysis principle and efficiency im...

Using text shadow and element shadow effects in CSS

Introduction to Text Shadows In CSS , use the tex...

HTML+Sass implements HambergurMenu (hamburger menu)

A few days ago, I watched a video of a foreign gu...

How to use selenium+testng to realize web automation in docker

Preface After a long time of reading various mate...

How to insert weather forecast into your website

We hope to insert the weather forecast into the w...

How to recompile Nginx and add modules

When compiling and installing Nginx, some modules...

View the port number occupied by the process in Linux

For Linux system administrators, it is crucial to...

How to deploy Go web applications using Docker

Table of contents Why do we need Docker? Docker d...

Top 10 useful and important open source tools in 2019

In Black Duck's 2017 open source survey, 77% ...

Sliding menu implemented with CSS3

Result:Implementation code: <!DOCTYPE html>...

The role and opening of MySQL slow query log

Preface The MySQL slow query log is a type of log...

20 JavaScript tips to help you improve development efficiency

Table of contents 1. Declare and initialize array...

Linux kernel device driver memory management notes

/********************** * Linux memory management...