Docker 下 MySQL 8 自动备份

MySQL logo

root@debian:~# crontab -e 进入crontab,添加以下内容:

0 2 * * * find /var/backup/ -mtime +5 -name "*.sql" -delete && docker exec mysql sh -c 'exec mysqldump --all-databases -u<username> -p<password> --all-databases' > /var/backup/bcksql_`date +\%F`.sql

0 2 * * *:crontab 每天 2 点

find /var/backup/ -mtime +5 -name "*.sql" -delete:查找该路径下的备份文件,删除 6 天前的备份任务,即保留 7 个版本

-u<username> -p<password>:数据库的用户名及密码

/var/backup/bcksql_`date +\%F`.sql:将备份文件保存到该路径下并命名为“bcksql_日期.sql”(以上路径需要有对应权限,否则无法正常存储)

mysqldump 常用操作示例

备份全部数据库的数据和结构

mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql

备份全部数据库的结构(加 -d 参数)

mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql

备份全部数据库的数据(加 -t 参数)

mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql

备份单个数据库的数据和结构(数据库名mydb)

mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql

备份单个数据库的结构

mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql

 备份单个数据库的数据

mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql

 备份多个表的数据和结构(数据,结构的单独备份方法与上同)

mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql

一次备份多个数据库

mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql

Docker 部署青龙面板

部署青龙面板

docker pull qinglong

在相关目录创建 docker-compose.yml

mkdir ql
cd ql
touch docker-compose.yml

然后输入 vi docker-compose.yml 并填写以下内容

version: "3"
services:
  qinglong:
    image: whyour/qinglong:latest
    container_name: qinglong
    restart: unless-stopped
    tty: true
    ports:
      - 5700:5700
      - 5701:5701
    environment:
      - ENABLE_HANGUP=true
      - ENABLE_WEB_PANEL=true
    volumes:
      - ./config:/ql/config
      - ./log:/ql/log
      - ./db:/ql/db
      - ./repo:/ql/repo
      - ./raw:/ql/raw
      - ./scripts:/ql/scripts
      - ./jbot:/ql/jbot
      - ./ninja:/ql/ninja
      - ./damei:/ql/damei
    labels:
      - com.centurylinklabs.watchtower.enable=false

保存后退出,在窗口输入:

docker-compose up -d

等待下载完成

下载完成后提示 Creating qinglong *** done并返回root输入提示

Docker 常用命令

Docker logo

Docker 安装

curl -sSL https://get.daocloud.io/docker | sh

Docker-Compose 安装并设置权限

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.3.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

配置 Docker 镜像源

创建 daemon.json 文件

sudo mkdir -p /etc/docker

写入镜像源

sudo tee /etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}

赋予普通用户执行 Docker 命令

gpasswd -a username docker

Docker 使用

搜索镜像

docker search debian

拉取镜像

docker pull debian

查看镜像文件

docker images

查看镜像层级关系

docker images tree

查看 Docker 所有进程

docker ps -a

查看 Docker 内存占用

docker stats

开启容器

docker start debian

开启所有容器

docker start $(docker ps -aq)

进入正在运行中的容器

docker exec -it debian /bin/bash

重启容器

docker restart 容器 ID

文件传输

docker cp 本地文件路径 ID全称:容器路径
或
docker cp ID全称:容器文件路径 本地路径

卸载

停止容器

docker stop debian

停止所有容器

docker stop $(docker ps -aq)

删除指定容器

docker rm 容器 ID

删除所有已停止容器

docker rm $(docker ps -aq)

删除所有镜像

docker rmi 镜像 ID

Docker 安装部署教程

Docker logo

Docker 安装

curl -sSL https://get.daocloud.io/docker | sh

Docker-Compose 安装并设置权限

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.3.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

配置 Docker 镜像源

创建 daemon.json 文件

sudo mkdir -p /etc/docker

写入镜像源

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}
EOF

赋予普通用户执行 Docker 命令

gpasswd -a username docker

重启 Docker 服务

sudo service docker restart

部署 MySQL 容器

docker run --name mysql --restart=always -d -p port:3306 -v $PWD/mysql/data:/var/lib/mysql -v $PWD/mysql/conf/conf.d:/etc/mysql/conf.d -v $PWD/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD="××××××××××" mysql

部署 phpMyAdmin 容器

docker run --name phpmyadmin --restart=always -d --link mysql:db -p port:80 phpmyadmin/phpmyadmin

部署 WordPress 容器

docker run --name wordpress --restart=always -d -p port:80 --link mysql:db -v $PWD/wordpress:/var/www/html wordpress

部署 Nginx 容器

docker run -p port:80 -p port:443 --name nginx --restart=always -v $PWD/nginx/nginx.conf:/etc/nginx/nginx.conf -v $PWD/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v $PWD/nginx/log:/var/log/nginx -v $PWD/nginx/html:/usr/share/nginx/html -v $PWD/nginx/cert:/etc/nginx/cert -d nginx

Nginx 初始配置文件

Nginx 初始配置文件

部署 NextCloud 容器

docker run -d --name nextcloud --restart=always -p port:80 --link wordpress_mysql:db -v $PWD/nextcloud/:/var/www/html/ nextcloud

以 www-data 身份运行 crontab

crontab -u www-data -e
*/5 * * * * docker exec --user www-data ${container id} php cron.php