Linux中Docker挂载mysql/mariadb等数据库,数据库问题汇总

Docker挂载数据库问题汇总
觉得有帮助的同学可以点个赞!传递给更多人!


Docker挂载的mysql/mariadb等数据库,远程连接时间长

本地链接秒连但是远程连接慢

解决方案1

在配置文件my.cnf中加入

skip-name-resolve

在这里插入图片描述
然后重启容器

docker restart 你的容器id

解决方案2

在原来的启动的命令中加上
–skip-name-resolve
例如

docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=输入你的密码 --name mariadb_ubuntu --skip-name-resolve 0a2fe61c51d1

Docker挂载的mysql/mariadb等数据库,IO性能下降严重/性能损失/备份还原慢

实测数据

测试环境为同环境同服务,同备份数据库文件.这个服务器累积的数据库文件目前已经有280G+
未处理前-3m22s

在这里插入图片描述

处理后-1m27s

在这里插入图片描述

解决方法

linux中输入

lsblk -f

获取你的数据库所在的存储位置的信息 确认你是ext4的文件系统
在这里插入图片描述
然后使用

vi /etc/fstab

在这里插入图片描述
在你对应的存储位置增加

barrier=0

示例

UUID=a90a3f4d-d95f-4e25-94cb-a608e5ce943d /home/diska ext4 defaults,barrier=0 0 0
UUID=7086b60d-2524-4cda-994a-254c8ade9bdb /home/diskb ext4 defaults,barrier=0 0 0

然后重启linux服务器,即可完成修复.

barrier的解释

此处参考:https://blog.csdn.net/lidan3959/article/details/12617639
Linux日志和barrier功能
要理解barrier,你首先需要理解文件系统日志功能。常用的文件系统使用日志功能来保证文件系统的完整性。该功能背后的思路很简单:在写入新的 数据块到磁盘之前,会先将元数据写入日志。预先将元数据写入日志可以保证在写入真实数据前后一旦发生错误,日志功能能很容易地回滚到更改之前的状态。这个方法确保了不会发生文件系统崩溃的情况。 单独使用日志功能不能保证没有任何差错。现在的磁盘大都有大容量的缓存,数据不会立即写入到磁盘中,而是先写入到磁盘缓存中。到这一步,磁盘控制器就能更加高效地将其复制到磁盘中。这对性能来说是有好处的,但是对日志功能来说则相反。为了保证日志百分之百可靠,它必须绝对保证元数据在真实数据写入之前被预先写入。这就是我们要介绍文件系统barrier的原因。我们很容易理解使用barrier的根本原因:barrier本身禁止在barrier之后写入数据,真实的数据块将在barrier被写入之前完全写入磁盘。使用barrier可以确保文件系统的完整性,因为barrier功能在EXT4文件系统中是默认启用的(除非你的操作系统更改了这个默认设>置)。


Docker启动mysql/mariadb并挂载目录和解决数据库时间不正确

# 这里我使用了配置文件my.cnf;3307:3306 3307是外部端口。并且利用目录挂载实现将数据库的存储位置挂载到其他磁盘。
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=输入你的密码 -v /home/disk_sql/mariadb_data/data:/var/lib/mysql -v /home/disk_sql/mariadb_data/conf/my.cnf:/etc/mysql/my.cnf --name mariadb_ubuntu 0a2fe61c51d1
# 解决数据库时间不正确(因为需要更改时区) docker cp 时区文件 容器id:容器内时区路径
docker cp /usr/share/zoneinfo/Asia/Shanghai f552c2171ecf:/etc/localtime
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Franciz小测测

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值