我有一个mysql数据库的docker映像。
第一次做这项工作时,我将db备份到一个.sql文件,然后从我的docker-compose构建DABASE。
不过,现在我已经做了一些更新,创建了一个新的.sql文件,并且再次通过docker-compose,我想我将获得我的新数据和新更改。
我的docker-comose文件:
services:
mysql:
image: mysql:latest
container_name: mysqldb
cap_add:
- SYS_NICE # CAP_SYS_NICE
# container_name: my_very_special_server
ports:
- 3307:3306
environment:
MYSQL_DATABASE: wedding
MYSQL_ROOT_PASSWORD: SomeRootPassword1!
MYSQL_USER: someuser
MYSQL_PASSWORD: Password1!
volumes:
- ./dbScript/Dump20201018.sql:/docker-entrypoint-initdb.d/Dump20201018.sql
- db_data:/var/lib/mysql
restart: always
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: dev_pma
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3307
PMA_ARBITRARY: 1
restart: always
ports:
- 8183:80
server:
container_name: weddingapp_server
build: ./weddingApp-Be
depends_on:
- mysql
environment:
MYSQL_HOST_IP: mysql
ports:
- 4000:4000
links:
- mysql
command: npm run dev
client:
container_name: weddingapp_client
build: ./weddingApp-Fe
ports:
- 3001:3000
environment:
- CHOKIDAR_USEPOLLING=true
tty: true
volumes:
db_data:
构建完成后,我将其旋转起来,发现新的数据没有显示出来,旧的数据仍然缓存在某个地方?
我查看了mysql映像的日志,得到了以下信息:
2020-10-18 20:46:59+00:00[注][Entrypoint]:
MySQL Server 8.0.21-1Debian10已启动。2020-10-18 20:46:59+00:00
[注][入口]:切换到专用用户'mysql'2020-10-18
20:46:59+00:00[注意][Entrypoint]:MySQL Server的入口点脚本
8.0.21-1Debian10已启动。2020-10-18T20:46:59.686360 Z 0[系统][MY-010116][服务器]/usr/sbin/mysqld(mysqld 8.0.21)启动为进程1 2020-10-18T20:46:59.693458 Z 1[系统][MY-013576][InnoDB]
InnoDB初始化已启动。2020-10-18T20:46:59.987115Z1
[System][MY-013577][InnoDB]InnoDB初始化已结束。
2020-10-18T20:47:00.115947 Z 0[系统][MY-011323][服务器]X插件
准备连接。绑定-地址:“::”端口:33060,套接字:
/var/run/mysqld/mysqlx.sock 2020-10-18T20:47:00.196070 Z 0[警告]
[MY-010068][Server]CA证书CA.pem是自签名的。
2020-10-18T20:47:00.196193 Z 0“系统”“MY-013602”“服务器”通道
mysql_main配置为支持TLS。加密连接现在
此通道支持。2020-10-18T20:47:00.200913 Z 0“警告”
[MY-011810][Server]配置--PID-文件:位置不安全
路径中的“/var/run/mysqld”可供所有OS用户访问。考虑
选择不同的目录。2020-10-18T20:47:00.219538 Z 0“系统”
[MY-010931][Server]/usr/sbin/mysqld:已准备好连接。版本:
“8.0.21”套接字:“/var/run/mysqld/mysqld.sock”端口:3306 MySQL
社区服务器-GPL。
我对docker还是个新手,老实说,我不知道我做错了什么。有什么想法吗?
仅当数据目录(/var/lib/mysql
)为空时才执行initdb脚本。
您的数据不是缓存的,而是使用您的卷持久化到您的主机。所以如果这是一个开发工作,您可以简单地删除db_data
卷的内容(或者删除并重新创建它):
docker volume rm db_data
docker volume create db_data
问题内容: 我需要使用php创建一个具有大量数据的mysql数据库的解决方案。我的程序将有许多要求,我认为如果我使用缓存和OO数据库,我会得到很好的结果,但是我没有经验。 我认为,例如,如果我将保存在mysql中的信息缓存到redis数据库中,性能将会提高,但是我不知道这是否是个好主意,因此我希望有人来帮助我选择。 抱歉,如果我的英语不太好,我来自巴西。 问题答案: 是的,redis对此很有帮助。
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能的重复: 对所有基于文本的字段使用通用varchar(255)有不利之处吗? 在MYSQL中,您可以为VARCHAR字段类型选择一个长度。可能的值为1-255。 但是,如果使用最大值而不是VARCHAR(20)的VARCHAR(255),它的优点是什么?据我所知,条目的大小仅取决于插入字符串的实际长度。 大小(字节)=长度+1 因此,如
问题内容: Java的WeakHashMap通常被认为对缓存有用。尽管其弱引用是根据地图的键而不是其值定义的,但这似乎很奇怪。我的意思是,这是我要缓存的值,而一旦缓存中没有其他人强烈引用它们,我想收集垃圾值,不是吗? 以哪种方式保留对键的弱引用?如果执行a ,那么我希望高速缓存保持在’o’状态,直到调用者不再拥有强引用,并且我完全不在乎字符串对象“ some_key”。 我想念什么吗? 问题答案:
Spring Boot 2.4.0,DB是MySql 8。 使用REST每15秒从远程获取数据并使用将其存储到MySql DB。 它为所有给定的实体调用save()方法。 所有数据都设置了ID。 我希望如果DB中没有这样的id-它将被插入。 如果这样的ID已经在DB中呈现-它将被更新。 这里是从控制台剪下的: 下面是获取和保存的方法,如下所示: 此方法每15秒运行一次。 实体: 和存储库: 这是以
问题内容: 我正在阅读Java JDBC规范(版本4),并且遇到了以下语句: DataSource-此接口在JDBC 2.0可选软件包API中引入。它优于DriverManager,因为它允许有关基础数据源的详细信息对应用程序透明 我想了解的是a 和a 之间的区别以及它为什么存在。我的意思是,上面的代码块说关于数据源的详细信息对于应用程序是透明的,但是是否不会在属性文件中外部化数据库属性(例如用户
我试图理解的是和之间的区别,以及它存在的原因。我的意思是,上面的块表明关于数据源的细节对应用程序是透明的,但是在属性文件中外部化数据库属性如用户名、密码、url等,然后使用DriverManager是否会以同样的方式工作? 创建接口是否只是为了有一种返回可以池化的连接的通用方式?在Java EE中,应用程序服务器是否实现了这个接口,并且部署的应用程序是否具有对数据源的引用而不是连接?