当前位置:   article > 正文

docker安装mysql并备份_docker mysql 备份

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 将数据挂在到宿主机目录下
mkdir -p /opt/mysql/mysql 
  • 1

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
  • 1
  • 参数详解
参数说明
-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
  • 1
  • 2
  • 3

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

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 定时任务可查看链接:mysql定时备份,除了脚本略微不同,其他都一样。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/404030
推荐阅读
相关标签
  

闽ICP备14008679号