Qual é a maneira segura de parar o contêiner do mysql docker?

Eu executo o contêiner mysql usando o Docker. Eu começo com como

sudo docker -d --name mysql -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql mysql_image 

Suspeito que parar o mysql parando o docker não é seguro. Estou enganado?

sudo docker stop mysql

É mais seguro parar o mysql dentro do contêiner primeiro?

sudo docker exec mysql /usr/bin/mysqladmin shutdown

parece seguro, do documento:

O processo principal dentro do contêiner receberá SIGTERM e, após um período de carência, SIGKILL.

portanto, se o processo principal for mysqld, ele terá uma chance decente de liberar tudo.

Parece que parar o contêiner docker sem desligar o MySQL cria um volume de dados MySQL quebrado. Portanto, é necessário executar o desligamento do MySQL antes de interromper o contêiner para que o MySQL libere todas as alterações em um disco.

Este é um log de iniciar o mysql no volume, criado a partir do contêiner, interrompido pelo docker. Preste atenção à etapa de recuperação de falhas do XA existe.

2021-05-18 06:34:51+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL             Server 8.0.25-1debian10 started.2021-05-18 06:34:54+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'2021-05-18 06:34:54+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.25-1debian10 started.2021-05-18T06:34:54.844455Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.25) starting as process 12021-05-18T06:34:54.887402Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.2021-05-18T06:35:00.523370Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.2021-05-18T06:35:11.094092Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock2021-05-18T06:35:11.181732Z 0 [System] [MY-010229] [Server] Starting XA crash recovery...2021-05-18T06:35:11.198947Z 0 [System] [MY-010232] [Server] XA crash recovery finished.2021-05-18T06:35:11.375917Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.2021-05-18T06:35:11.376529Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.2021-05-18T06:35:11.397202Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.2021-05-18T06:35:11.628776Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.25'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

Usar

docker exec tu-live-db /usr/bin/mysqladmin -uroot -proot shutdown

antes de matar um contêiner, o XA crash recovery não está sendo iniciado e o volume de dados é válido para o próximo início do contêiner com ele

2021-05-18 06:36:44+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.25-1debian10 started.2021-05-18 06:36:47+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'2021-05-18 06:36:47+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.25-1debian10 started.2021-05-18T06:36:48.040045Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.25) starting as process 12021-05-18T06:36:48.082740Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.2021-05-18T06:36:53.426493Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.2021-05-18T06:36:57.611953Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock2021-05-18T06:36:57.827561Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.2021-05-18T06:36:57.828060Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.2021-05-18T06:36:57.845291Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.2021-05-18T06:36:58.014550Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.25'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
  1. Entre no host convidado usando seu terminal de comando

    $ docker exec -it mariadb /bin/sh
  2. Vá para dentro do SQL_command_Line

    # mysql -u root -p
  3. Comando desligar o banco de dados dentro lá.

    > shutdown;