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


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


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

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

    解决方案1

    在配置文件my.cnf中加入

    skip-name-resolve
    
    • 1

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

    docker restart 你的容器id
    
    • 1

    解决方案2

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

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

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

    实测数据

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

    在这里插入图片描述

    处理后-1m27s

    在这里插入图片描述

    解决方法

    linux中输入

    lsblk -f
    
    • 1

    获取你的数据库所在的存储位置的信息
    在这里插入图片描述
    然后使用

    vi /etc/fstab
    
    • 1

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

    barrier=0
    
    • 1

    示例

    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
    
    • 1
    • 2

    然后重启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
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    Lora训练Windows[笔记]
    (二)SpringCloud+Security+Oauth2 微服务初步集成
    2023.11.18 Hadoop之 YARN
    仿京东拼多多商品分类页-(RecyclerView悬浮头部实现、xml绘制ItemDecoration)
    《Redis设计与实现》笔记
    Python:实现radix sort基数排序算法(附完整源码)
    【第2章 Node.js基础】2.4 Node.js 全局对象...持续更新
    FOC控制之小A小B小C是如何追求小D的
    windows软件手动设置开机自启
    web前端-CSS基本选择器
  • 原文地址:https://blog.csdn.net/Franciz777/article/details/126648233