君匡

V1

2022/07/22阅读:15主题:自定义主题1

Docker系列二MariaDB

前言

又是重新换了服务器,这一次项目要求使用MariaDB

安装MariaDB

拉取镜像

搜寻镜像,并且拉取指定版本的镜像10.5.10。

#搜寻镜像
docker search mariadb

# RepoName默认为官网docker库,镜像名为mariadb,结果显示所有支持的tags
export RepoName=https://registry.hub.docker.com \
 && export ImagesName=mariadb \
 && wget -q $RepoName/v1/repositories/$ImagesName/tags -O -  | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n'  | awk -F: '{print $3}' | sort -u
 
#拉取镜像版本为10.5.10
sudo docker pull mariadb:10.5.10

创建外部挂载目录

公司一般都会将数据文件、binglog、redolog、slowlog、errlog等文件分类存储,放在自己定义的路径下

可以参考其他人的映射方案:

也可以继续沿用上一期的存储目录,递归创建存储目录。

# 自定义新建的目录名
export MysqlName=myriadb-10.5

# 指定配置目录、数据目录
mkdir -p /home/keen/docker/$MysqlName/conf
mkdir -p /home/keen/docker/$MysqlName/data

# 赋予权限
chmod -R 755 /home/keen/docker/$MysqlName/conf

配置容器

/home/keen/docker/mysql-5.7/conf/下创建文件my.cnf

vim /home/keen/docker/$MysqlName/conf/my.cnf

#先按`i`,底下出现一个"Insert"的文字。

复制内容如下,到命令行里粘贴。

[mysqld]
user=mysql
max_connections=1000
skip-name-resolve
character-set-server=utf8
default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

esc键退出编辑模式;再输入英文冒号和字母组合:wq保存并退出。

创建并运行容器

docker run \
    --name mariadb10.5.10 \
    -p 4305:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d \
    --restart=always \
    --privileged=true \
    -v /home/keen/docker/$MysqlName/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
    -v /home/keen/docker/$MysqlName/data/:/var/lib/mysql \
    mariadb:10.5.10
  • --name:启动容器设置容器名称为mariadb10.5.10
  • -p: 设置容器的3306端口映射到主机4305端口
  • -e MYSQL_ROOT_PASSWORD:设置环境变量数据库root用户密码为输入数据库root用户的密码
  • --restart=always:设置开机自启
  • –privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
  • -v:地址映射。
  • -d:后台运行

注意:其中的端口映射如果有特别要求,必须使用宿主机的端口,也可以用--net=host来替代-p 3306:3306这种方式来映射端口

使用容器

# 进入容器
docker exec -it  mariadb:10.5.10  /bin/bash

建立好了容器以后,接下来就分为两个情况。分别是新数据库和老数据库。

新数据库

如果是新数据库不需要从老数据库中迁移过来旧内容,那么直接使用就可以了。

# 进入数据库
mysql -u root -p
123456

#建立一个数据库hotel
create database hotel DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

然后在本地的数据库工具navicat或者是Dbeaver中,新建一个链接,测试成功便好。

老数据库

其实这里又是分为两种,一种是直接复制容器的文件,另一种是拿sql备份恢复。这里以SQL文件恢复为例,文件是hotel.sql

第一步,先将本地文件传输到服务器端的指定目录下,我这里以/home/keen/为例。

scp  /Users/keen/Downloads/hotel.sql  root@39.96.12.167:/home/keen/hotel.sql

第二步,登入服务器端,把文件复制到容器里。

#docker cp 第一个参数指定本地文件或者文件夹,第二个参数指定容器及容器内的目标文件夹 

docker cp /home/keen/hotel.sql   mariadb:10.5.10:/home/hotel.sql

第三步,进入容器并使用sorce命令

# 进入容器
docker exec -it  mariadb:10.5.10  /bin/bash

# 进入数据库
mysql -u root -p

# 创建数据库
create database hotel DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

# 使用数据库
use hotel

# 加载备份文件
source /home/hotel.sql

设置主从

详细可以参考文末链接。

感谢

感谢现在的好奇,为了能成为更好的自己。

实现MySQL主从复制

搭建mysql主从

分类:

后端

标签:

后端

作者介绍

君匡
V1