
把数据库,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中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)