docker部署MySQL并同步数据 数据持久化 原创
搜索mysql镜像
[root@wq ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 14891 [OK]
mariadb MariaDB Server is a high performing open sou… 5685 [OK]
percona Percona Server is a fork of the MySQL relati… 624 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 953 [OK]
bitnami/mysql Bitnami MySQL Docker Image 107 [OK]
bitnami/mysqld-exporter 6
cimg/mysql 3
ubuntu/mysql MySQL open source fast, stable, multi-thread… 59
rapidfort/mysql RapidFort optimized, hardened image for MySQL 25
rapidfort/mysql8-ib RapidFort optimized, hardened image for MySQ… 9
google/mysql MySQL server for Google Compute Engine 25 [OK]
rapidfort/mysql-official RapidFort optimized, hardened image for MySQ… 9
elestio/mysql Mysql, verified and packaged by Elestio 0
hashicorp/mysql-portworx-demo 0
bitnamicharts/mysql 0
databack/mysql-backup Back up mysql databases to... anywhere! 109
linuxserver/mysql A Mysql container, brought to you by LinuxSe… 41
mirantis/mysql 0
docksal/mysql MySQL service images for Docksal - https://d… 0
linuxserver/mysql-workbench 55
vitess/mysqlctld vitess/mysqlctld 1 [OK]
eclipse/mysql Mysql 5.7, curl, rsync 1 [OK]
drupalci/mysql-5.5 https://www.drupal.org/project/drupalci 3 [OK]
drupalci/mysql-5.7 https://www.drupal.org/project/drupalci 0
datajoint/mysql MySQL image pre-configured to work smoothly … 2 [OK]
查看当前已有镜像,并下载镜像查看
[root@wq ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat02 1.0 02ea20370fec 3 hours ago 684MB
nginx latest 605c77e624dd 2 years ago 141MB
tomcat latest fb5657adc892 2 years ago 680MB
wordpress latest c3c92cc3dcb1 2 years ago 616MB
redis latest 7614ae9453d1 2 years ago 113MB
mysql latest 3218b38490ce 2 years ago 516MB
centos latest 5d0da3dc9764 2 years ago 231MB
portainer/portainer latest 580c0e4e98b0 2 years ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 3 years ago 791MB
[root@wq ~]#
[root@wq ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Already exists
93619dbc5b36: Already exists
99da31dd6142: Already exists
626033c43d70: Already exists
37d5d7efb64e: Already exists
ac563158d721: Already exists
d2ba16033dad: Already exists
0ceb82207cd7: Pull complete
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
[root@wq ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat02 1.0 02ea20370fec 3 hours ago 684MB
nginx latest 605c77e624dd 2 years ago 141MB
tomcat latest fb5657adc892 2 years ago 680MB
wordpress latest c3c92cc3dcb1 2 years ago 616MB
redis latest 7614ae9453d1 2 years ago 113MB
mysql 5.7 c20987f18b13 2 years ago 448MB
mysql latest 3218b38490ce 2 years ago 516MB
centos latest 5d0da3dc9764 2 years ago 231MB
portainer/portainer latest 580c0e4e98b0 2 years ago 79.1MB
elasticsearch 7.6.2 f29a1ee41030 3 years ago 791MB
[root@wq ~]#
运行容器,需要进行数据挂载
[root@wq ~]# docker images |grep mysql
mysql 5.7 c20987f18b13 2 years ago 448MB
mysql latest 3218b38490ce 2 years ago 516MB
[root@wq ~]# docker run -d -p 8030:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=000000 --name mysql01 mysql:5.7
3943bfb6fbd7e6106f391f23e4ab52b3ad3391586866c9491f4e63a48f882626
[root@wq ~]# docker ps | grep mysql
3943bfb6fbd7 mysql:5.7 "docker-entrypoint.s…" 7 seconds ago Up 5 seconds 33060/tcp, 0.0.0.0:8030->3306/tcp, :::8030->3306/tcp mysql01
94239899c5bd mysql "docker-entrypoint.s…" 45 hours ago Up 45 hours 33060/tcp, 0.0.0.0:8006->3306/tcp, :::8006->3306/tcp my_mysql
[root@wq ~]#
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
--name 容器名字
测试是否同步
进入容器,登录数据库,创建test库
[root@wq ~]# docker exec -it 3943bfb6fbd7 /bin/bash
root@3943bfb6fbd7:/# mysql -uroot -p000000
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
mysql>
新建终端查看
[root@wq data]# pwd
/home/mysql/data
[root@wq data]# ll
total 188476
-rw-r----- 1 polkitd input 56 Mar 2 18:22 auto.cnf
-rw------- 1 polkitd input 1676 Mar 2 18:22 ca-key.pem
-rw-r--r-- 1 polkitd input 1112 Mar 2 18:22 ca.pem
-rw-r--r-- 1 polkitd input 1112 Mar 2 18:22 client-cert.pem
-rw------- 1 polkitd input 1680 Mar 2 18:22 client-key.pem
-rw-r----- 1 polkitd input 469 Mar 2 18:30 ib_buffer_pool
-rw-r----- 1 polkitd input 79691776 Mar 2 18:30 ibdata1
-rw-r----- 1 polkitd input 50331648 Mar 2 18:30 ib_logfile0
-rw-r----- 1 polkitd input 50331648 Mar 2 18:22 ib_logfile1
-rw-r----- 1 polkitd input 12582912 Mar 2 18:30 ibtmp1
drwxr-x--- 2 polkitd input 4096 Mar 2 18:22 mysql
drwxr-x--- 2 polkitd input 4096 Mar 2 18:22 performance_schema
-rw------- 1 polkitd input 1676 Mar 2 18:22 private_key.pem
-rw-r--r-- 1 polkitd input 452 Mar 2 18:22 public_key.pem
-rw-r--r-- 1 polkitd input 1112 Mar 2 18:22 server-cert.pem
-rw------- 1 polkitd input 1676 Mar 2 18:22 server-key.pem
drwxr-x--- 2 polkitd input 12288 Mar 2 18:22 sys
[root@wq data]# ll
total 188480
-rw-r----- 1 polkitd input 56 Mar 2 18:22 auto.cnf
-rw------- 1 polkitd input 1676 Mar 2 18:22 ca-key.pem
-rw-r--r-- 1 polkitd input 1112 Mar 2 18:22 ca.pem
-rw-r--r-- 1 polkitd input 1112 Mar 2 18:22 client-cert.pem
-rw------- 1 polkitd input 1680 Mar 2 18:22 client-key.pem
-rw-r----- 1 polkitd input 469 Mar 2 18:30 ib_buffer_pool
-rw-r----- 1 polkitd input 79691776 Mar 2 18:30 ibdata1
-rw-r----- 1 polkitd input 50331648 Mar 2 18:30 ib_logfile0
-rw-r----- 1 polkitd input 50331648 Mar 2 18:22 ib_logfile1
-rw-r----- 1 polkitd input 12582912 Mar 2 18:30 ibtmp1
drwxr-x--- 2 polkitd input 4096 Mar 2 18:22 mysql
drwxr-x--- 2 polkitd input 4096 Mar 2 18:22 performance_schema
-rw------- 1 polkitd input 1676 Mar 2 18:22 private_key.pem
-rw-r--r-- 1 polkitd input 452 Mar 2 18:22 public_key.pem
-rw-r--r-- 1 polkitd input 1112 Mar 2 18:22 server-cert.pem
-rw------- 1 polkitd input 1676 Mar 2 18:22 server-key.pem
drwxr-x--- 2 polkitd input 12288 Mar 2 18:22 sys
drwxr-x--- 2 polkitd input 4096 Mar 2 18:31 test
[root@wq data]#
第一次查看没有test,第二次出现了,因为第一次查看的时候库还没有创建
因此测试成功,数据同步
容器数据持久化功能验证
假设将容器删掉,验证数据是否会丢失
1.删掉容器
[root@wq ~]# docker ps |grep mysql01
3943bfb6fbd7 mysql:5.7 "docker-entrypoint.s…" About an hour ago Up About an hour 33060/tcp, 0.0.0.0:8030->3306/tcp, :::8030->3306/tcp mysql01
[root@wq ~]# docker rm -f 3943bfb6fbd7
3943bfb6fbd7
[root@wq ~]# docker ps -a |grep mysql01
[root@wq ~]#
2.查看目录是否存在
[root@wq ~]# cd /home/
admin/ ceshi/ mysql/ www/
[root@wq ~]# cd /home/mysql/
conf/ data/
[root@wq ~]# cd /home/mysql/data/
[root@wq data]# ll
total 188480
-rw-r----- 1 polkitd input 56 Mar 2 18:22 auto.cnf
-rw------- 1 polkitd input 1676 Mar 2 18:22 ca-key.pem
-rw-r--r-- 1 polkitd input 1112 Mar 2 18:22 ca.pem
-rw-r--r-- 1 polkitd input 1112 Mar 2 18:22 client-cert.pem
-rw------- 1 polkitd input 1680 Mar 2 18:22 client-key.pem
-rw-r----- 1 polkitd input 469 Mar 2 18:30 ib_buffer_pool
-rw-r----- 1 polkitd input 79691776 Mar 2 18:30 ibdata1
-rw-r----- 1 polkitd input 50331648 Mar 2 18:30 ib_logfile0
-rw-r----- 1 polkitd input 50331648 Mar 2 18:22 ib_logfile1
-rw-r----- 1 polkitd input 12582912 Mar 2 18:30 ibtmp1
drwxr-x--- 2 polkitd input 4096 Mar 2 18:22 mysql
drwxr-x--- 2 polkitd input 4096 Mar 2 18:22 performance_schema
-rw------- 1 polkitd input 1676 Mar 2 18:22 private_key.pem
-rw-r--r-- 1 polkitd input 452 Mar 2 18:22 public_key.pem
-rw-r--r-- 1 polkitd input 1112 Mar 2 18:22 server-cert.pem
-rw------- 1 polkitd input 1676 Mar 2 18:22 server-key.pem
drwxr-x--- 2 polkitd input 12288 Mar 2 18:22 sys
drwxr-x--- 2 polkitd input 4096 Mar 2 18:31 test
[root@wq data]#
发现挂载到本地的数据卷依旧没有丢失,在/home/mysql/data下。这就实现了容器数据持久化功能
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理