docker安装mysql并备份

1. 准备工作

2. 拉取镜像

  • 查找镜像,命令:docker search mysql,如下图:

图1

  • 也可以查询指定版本:docker search mysql:8.0,如下图:

图2

  • 拉去镜像,docker pull mysql 默认拉取的版本是latest,也可以拉取指定版本:docker pull mysql:8.0,如下图所示:

图3

  • 待拉取完成之后,查看镜像,命令:docker images, 如下图所示,出现mysql镜像

图4

3.创建配置文件

  • 由于mysql的配置文件要是不挂在到宿主机目录下,修改或者变更配置文件不方便,故需要将配置文件挂载出来,可方便操作,数据同理。但是配置文件在哪里呢?可以查看dockerhub官方的mysql的dockerfile文件进行查看:dockerhub

  • 在本地创建mysql的配置文件my.cnf

mkdir -p /opt/mysql/conf/
cd /opt/mysql/conf/
vim my.cnf


[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
tmpdir          = /var/lib/mysql
secure-file-priv= NULL
symbolic-links=0
skip-name-resolve
# 主服务器唯一ID
server-id=1
  • 将数据挂在到宿主机目录下
mkdir -p /opt/mysql/mysql 

4.启动mysql

  • 启动mysql
docker run -d -p 3306:3306 --name mysql -v /opt/mysql/conf/:/etc/mysql/conf.d/ -v /opt/mysql/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
  • 参数详解
参数说明
-d标识启动mysql后台运行,切启动完成之后返回容器id
-p 3306:3306端口映射,前者3306为宿主机端口,后者3306为容器内部端口
–name mysql容器名 为 mysql 自定义
-v /opt/mysql/conf/:/etc/mysql/conf.d/-v 挂在 /opt/mysql/conf/:宿主机目录 /etc/mysql/conf.d/:容器内部目录,将容器内部目录挂载到宿主机目录下
-v /opt/mysql/mysql:/var/lib/mysql同理
-e MYSQL_ROOT_PASSWORD=123456设置mysql密码为123456
mysql最后的mysql为之前所拉取的镜像名称
  • 运行命令之后,输入:docker ps,查看如下图:

图5至此代表mysql已经安装成功。

4.进入容器内,连接mysql

  • 进入容器内部
docker exec -it 73eadb6f35e2 bash 
#或者
docker exec -it 73eadb6f35e2 /bin/bash

图6

  • 连接mysql
    mysql -uroot -p 回车,输入密码:再回车即可,出现如下图所示即成功登录,之后就是mysql的命令操作了,详情可查看博主的:mysql安装图7

备注:

  • 如果需要将mysql容器设置成当docker服务启动的时候,mysql容器随之重启:
docker run -d -p 8080:8080 --name mysql--restart=always  mysql
#还有将运行的容器设置根据docker服务启动而启动
docker update --restart=always 容器名字或者容器ID

docker安装的mysql进行定时备份

  • 提前准备好脚本以及数据备份存放目录
#!/bin/bash
# 容器名称  容器ID,容器名称都行,建议使用id,不会被更改
container_name="73eadb6f35e2"
# 数据库账户
mysql_name="root"
# 数据库密码
mysql_pwd="123456"
# 数据库备份根目录
backup_dir="/home/mysqlBak/data"
bakup_log="/home/mysqlBak/log"
# 备份数据库
DATABASES=$(/usr/bin/docker exec -i ${container_name} mysql -u${mysql_name} -p${mysql_pwd} -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql|brp_log")
# 备份数据保留天数
backup_clean_day=5
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then     
                mkdir -p $back_dir;
fi

#循环数据库进行备份
for db in  $DATABASES
do
        echo
        echo ----------$BACKUP_FILEDIR/${db}_`date "+%Y_%m_%d_%H_%M_%S"`.sql.gz BEGIN----------

        /usr/bin/docker exec -i ${container_name}  mysqldump -u${mysql_name} -p${mysql_pwd} --default-character-set=utf8mb4 --single-transaction --source-data=2 --flush-logs --hex-blob --triggers --routines --events --databases ${db} |  gzip > ${backup_dir}/${db}`date "+%Y_%m_%d_%H_%M_%S"`.sql.gz

        #写创建备份日志
        echo "create $bakup_log/${db}-`date "+%Y_%m_%d_%H_%M_%S"`.dupm" >> $bakup_log/log.txt
        echo ----------$BACKUP_FILEDIR/${db}_`date "+%Y_%m_%d_%H_%M_%S"`.sql.gz COMPLETE----------
        echo
done
echo "done"
#删除5天之前的备份
find ${backup_dir} -type f -mtime +${backup_clean_day} -delete
  • 定时任务可查看链接:mysql定时备份,除了脚本略微不同,其他都一样。
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值