飞牛OS布署MySQL容器

由于最近用了3年的云服务器到期,续费很贵,一气之下用儿子玩剩下的小主机来做家庭服务器,在上面装了飞牛OS。这几天就琢磨着怎么把所有数据都搬到这台家庭服务器上。今天开始搞MySQL数据库。

一,配置Docker的国内镜像源

飞牛OS原生支持Docker,就不用自己装了。为了方便拉取镜像, 需要配置Docker的国内镜像源如下:

在飞牛OS里修改文件 /etc/docker/daemon.json :

{
    "data-root":"/vol2/docker",
    "insecure-registries":["127.0.0.1:19827"],
    "live-restore":true,
    "registry-mirrors":["https://ccr.ccs.tencentyun.com"]   ## 腾讯镜像源
}

二,拉取MySQL镜像

在飞牛OS里打开Docker应用,搜索mysql镜像,并下载到本地:

 用ssh连到飞牛OS, 查看一下下载下来的镜像: 

三,挂载数据目录

为了数据安全(保证即使容器出问题了数据还在),在部署 MySQL 时,可以通过挂载宿主机的目录到容器内部的 MySQL 数据目录,从而将数据持久化保存在宿主机上,而不是存储在容器内部。

首先,在宿主机上创建一个目录,用于存储 MySQL 的数据:

mkdir -p /vol2/1000/mysql_data

 MySQL 容器内的用户(通常是mysql:mysql) 需要有权限读写宿主机的挂载目录 (这里是/vol2/1000/mysql_data) , 可以在宿主机上进行以下设置:

chmod -R 755 /vol2/1000/mysql_data
chown -R 999:999 /vol2/1000/mysql_data  ## 999:999分别是mysql用户的group名和userID
                                         # 可以在容器内用id mysql命令查到

 然后,启动 MySQL 容器并挂载数据目录:

 docker run -p 3306:3306 --name=mysql844 -e MYSQL_ROOT_PASSWORD=123456 -v /vol2/1000/mysql_data:/var/lib/mysql -d mysql:8.4.4

 命令解释:

  • -e MYSQL_ROOT_PASSWORD=your_root_password  :设置 MySQL 的 root 用户密码。
  • -p 3306:3306  :将容器的 3306 端口映射到宿主机的 3306 端口。
  • -v /vol2/mysql_data:/var/lib/mysql:将宿主机的/vol2/mysql_data目录挂载到容器的  /var/lib/mysql目录。
  • -d mysql:8.4.4  :后台运行 MySQL 8.4.4 容器。

四,验证数据持久化:

  1. 在飞牛OS桌面打开文件管理,进到mysql_data目录,可以看到里面已经有数据了:

     

  2. 测试数据持久化:
    在 MySQL 中创建一个数据库或表:
    CREATE DATABASE test_db;
    CREATE TABLE testdb.users(id INT);
    CREATE TABLE testdb.orders(id INT);

    停止并删除容器:

    docker stop mysql844
    docker rm mysql844

    在飞牛OS桌面看数据还在:

  3. 重新启动容器:

     docker run -p 3306:3306 --name=mysql844 -e MYSQL_ROOT_PASSWORD=123456 -v /vol2/1000/mysql_data:/var/lib/mysql -d mysql:8.4.4

    远程连接到 MySQL,检查 test_db数据库 和 users, orders table是否仍然存在:

    test_db数据库和users, orders table仍然存在,说明数据已经成功持久化到宿主机。

由于数据存储在宿主机上,我们可以直接备份 /vol2/1000/mysql_data目录,方便迁移或恢复,避免因容器删除而导致数据丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值