又是重新换了服务器,这一次项目要求使用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 [email protected]:/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主从