把数据库,redis放到docker容器会有什么弊端吗

把数据库,redis放到docker容器会有什么弊端吗,第1张

把数据库,redis放到docker容器会有什么弊端吗

docker的弊端就是网络IO开销。所以高度网络IO的请避免,磁盘IO的请用Volume挂载。

docker的优势就是随其即灭的不用悉心呵护的牛群特性。所以无状态很重要。

如果你希望享受docker的牛群特性,那么请你自己保管好你的状态。

如果对MySQL比较熟悉,那么可以使用MySQL异机迁移的方法:

先确定MySQL的运行系统、发行版、版本号,以前的配置文件。

根据以上信息在Docker环境下新建一台全新的MySQL。

根据业务需要实施停机迁移/在线迁移,将数据迁入Docker内的MySQL。

停机迁移:直接拷贝数据文件(物理迁移)、全量Dump导出(逻辑备份迁移)、xtraback备份(物理备份迁移)

在线迁移:将新库作为从库加入集群,完成同步后fo切换,原主库下线。

如果对Docker比较熟悉,可以使用Docker整机迁移的方法:

整机虚拟化直接作为一个镜像在Docker内运行。

这种方法虽然简单,但过程漫长而且运行时性能损耗非常大,也容易出问题,不是很推荐。

如果对MySQL比较熟悉,那么可以使用MySQL异机迁移的方法:

先确定MySQL的运行系统、发行版、版本号,以前的配置文件。

根据以上信息在Docker环境下新建一台全新的MySQL。

根据业务需要实施停机迁移/在线迁移,将数据迁入Docker内的MySQL。

停机迁移:直接拷贝数据文件(物理迁移)、全量Dump导出(逻辑备份迁移)、xtraback备份(物理备份迁移)

在线迁移:将新库作为从库加入集群,完成同步后fo切换,原主库下线。

如果对Docker比较熟悉,可以使用Docker整机迁移的方法:

整机虚拟化直接作为一个镜像在Docker内运行。

这种方法虽然简单,但过程漫长而且运行时性能损耗非常大,也容易出问题,不是很推荐。

我自己隐约觉得,用官方的就好了,因为这已经暂时满足我的需求了。其他人自己制作mysql镜像有他们的特殊需求吧! 所以我就先使用官方的了!

拉下来一看Docker Hub目前官方提供的mysql镜像才3802MB。

一、下载官方的mysql镜像

[root@localhost ~]# docker pull mysql

下载完成后查看镜像:

[root@localhost ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

dockerio/mysql latest 1195b21c3a45 10 weeks ago 3802 MB

二、生成容器

生成容器时,调用的启动脚本是/entrypointsh;通过查看/entrypointsh脚本内容,总结参数如下

oracle在导入数据时报1659的错误的原因主要是数据库表空间剩余空间不足引起的。

分析原因

1、表空间剩余空间不足。

使用下面语句,查看表空间剩余空间

select Upper(ftablespace_name) "表空间名",

dtot_grootte_mb "表空间大小(M)",

dtot_grootte_mb - ftotal_bytes "已使用空间(M)",

to_char(round((dtot_grootte_mb - ftotal_bytes) /

dtot_grootte_mb 100, 2),'99099') || '%' "使用比",

ftotal_bytes "空闲空间(M)",

fmax_bytes "最大块(M)"

from (select tablespace_name,

round(sum(bytes) / (1024 1024), 2) total_bytes,

round(max(bytes) / (1024 1024), 2) max_bytes

from sysdba_free_space

group by tablespace_name) f,

(select ddtablespace_name,

round(sum(ddbytes) / (1024 1024), 2) tot_grootte_mb

from sysdba_data_files dd

group by ddtablespace_name) d

where dtablespace_name = ftablespace_name

order by ftablespace_name;

表空间剩余空间不足时,可以根据原数据库表空间大小增加表空间。

alter tablespace 表空间名 add datafile '数据文件名' size 数据文件大小;

2、剩余表空间还很多。

使用下面语句查看原数据库表表定义,找到initial_extent值大的表,将这些表的

创建语句导出后修改initial_extent值,在目标数据库中创建后再导入数据,导入时

增加参数ignore=y。

select table_name, initial_extent

from user_tables

where initial_extent is not null

order by initial_extent desc

如果找不到原数据库,可以使用

imp userid/userid@service_name file=dmp文件名 indexfile=index文件名 rows=n full=Y

命令将dmp文件中创建表的语句导入到indexfile文件中,查看indexfile如下:

REM CREATE TABLE "TEST""DM_KJKM_COPY" ("KJZDMB_DM" VARCHAR2(100)

REM ENABLE, "KMID" NUMBER(20, 0), "KMBM" VARCHAR2(100), "KMMC"

REM VARCHAR2(500), "KMQC" VARCHAR2(1000), "KMLB_DM" VARCHAR2(100),

REM

使用文本编辑工具,查找INITIAL将过大的初始值改为65536后,将REM去除后,在数据库中创建后再使用exp导入数据,导入时增加参数ignore=y。

以上就是关于把数据库,redis放到docker容器会有什么弊端吗全部的内容,包括:把数据库,redis放到docker容器会有什么弊端吗、怎么linux本地mysql放到docker中、怎么linux本地mysql放到docker中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9765806.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存