Tugas cron untuk mem-backup database mysql ubuntu

Jalankan mysqldump untuk mencadangkan database Anda secara berkala menggunakan pengelola tugas cron di wadah. Cadangan Anda disimpan di /backup. Anda dapat me-mount direktori apa pun dari host Anda atau volume buruh pelabuhan di / backup. Jika tidak, volume buruh pelabuhan dibuat di lokasi default

Penggunaan

docker container run -d \
       --env MYSQL_USER=root \
       --env MYSQL_PASS=my_password \
       --link mysql
       --volume /path/to/my/backup/folder:/backup
       fradelg/mysql-cron-backup

Cek kesehatan

Healthcheck disediakan sebagai kontrol init dasar. Kontainer Sehat setelah fase init basis data, yaitu setelah

version: "2"
services:
  mariadb:
    image: mariadb
    container_name: my_mariadb
    expose:
      - 3306
    volumes:
      - data:/var/lib/mysql
      # If there is not scheme, restore the last created backup (if exists)
      - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
    environment:
      - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
      - MYSQL_DATABASE=${DATABASE_NAME}
    restart: unless-stopped

  mysql-cron-backup:
    image: fradelg/mysql-cron-backup
    depends_on:
      - mariadb
    volumes:
      - ${VOLUME_PATH}/backup:/backup
    environment:
      - MYSQL_HOST=my_mariadb
      - MYSQL_USER=root
      - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
      - MAX_BACKUPS=15
      - INIT_BACKUP=0
      # Every day at 03:00
      - CRON_TIME=0 3 * * *
      # Make it small
      - GZIP_LEVEL=9
    restart: unless-stopped

volumes:
  data:
0 atau
version: "2"
services:
  mariadb:
    image: mariadb
    container_name: my_mariadb
    expose:
      - 3306
    volumes:
      - data:/var/lib/mysql
      # If there is not scheme, restore the last created backup (if exists)
      - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
    environment:
      - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
      - MYSQL_DATABASE=${DATABASE_NAME}
    restart: unless-stopped

  mysql-cron-backup:
    image: fradelg/mysql-cron-backup
    depends_on:
      - mariadb
    volumes:
      - ${VOLUME_PATH}/backup:/backup
    environment:
      - MYSQL_HOST=my_mariadb
      - MYSQL_USER=root
      - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
      - MAX_BACKUPS=15
      - INIT_BACKUP=0
      # Every day at 03:00
      - CRON_TIME=0 3 * * *
      # Make it small
      - GZIP_LEVEL=9
    restart: unless-stopped

volumes:
  data:
1 terjadi tanpa pemeriksaan jika ada kesalahan, Mulai sebaliknya. Tidak ada pemeriksaan lain yang sebenarnya disediakan

Variabel

  • version: "2"
    services:
      mariadb:
        image: mariadb
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          # If there is not scheme, restore the last created backup (if exists)
          - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
        environment:
          - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
          - MYSQL_DATABASE=${DATABASE_NAME}
        restart: unless-stopped
    
      mysql-cron-backup:
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          - MYSQL_USER=root
          - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
          - MAX_BACKUPS=15
          - INIT_BACKUP=0
          # Every day at 03:00
          - CRON_TIME=0 3 * * *
          # Make it small
          - GZIP_LEVEL=9
        restart: unless-stopped
    
    volumes:
      data:
    _2. Host/ip database mysql Anda
  • version: "2"
    services:
      mariadb:
        image: mariadb
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          # If there is not scheme, restore the last created backup (if exists)
          - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
        environment:
          - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
          - MYSQL_DATABASE=${DATABASE_NAME}
        restart: unless-stopped
    
      mysql-cron-backup:
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          - MYSQL_USER=root
          - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
          - MAX_BACKUPS=15
          - INIT_BACKUP=0
          # Every day at 03:00
          - CRON_TIME=0 3 * * *
          # Make it small
          - GZIP_LEVEL=9
        restart: unless-stopped
    
    volumes:
      data:
    _3. File dalam wadah tempat menemukan host database mysql Anda (lih. rahasia buruh pelabuhan). Anda harus menggunakan MYSQL_HOST_FILE atau MYSQL_HOST (lihat contoh di bawah)
  • version: "2"
    services:
      mariadb:
        image: mariadb
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          # If there is not scheme, restore the last created backup (if exists)
          - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
        environment:
          - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
          - MYSQL_DATABASE=${DATABASE_NAME}
        restart: unless-stopped
    
      mysql-cron-backup:
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          - MYSQL_USER=root
          - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
          - MAX_BACKUPS=15
          - INIT_BACKUP=0
          # Every day at 03:00
          - CRON_TIME=0 3 * * *
          # Make it small
          - GZIP_LEVEL=9
        restart: unless-stopped
    
    volumes:
      data:
    _4. Nomor port database mysql Anda
  • version: "2"
    services:
      mariadb:
        image: mariadb
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          # If there is not scheme, restore the last created backup (if exists)
          - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
        environment:
          - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
          - MYSQL_DATABASE=${DATABASE_NAME}
        restart: unless-stopped
    
      mysql-cron-backup:
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          - MYSQL_USER=root
          - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
          - MAX_BACKUPS=15
          - INIT_BACKUP=0
          # Every day at 03:00
          - CRON_TIME=0 3 * * *
          # Make it small
          - GZIP_LEVEL=9
        restart: unless-stopped
    
    volumes:
      data:
    _5. Nama pengguna database mysql Anda
  • version: "2"
    services:
      mariadb:
        image: mariadb
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          # If there is not scheme, restore the last created backup (if exists)
          - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
        environment:
          - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
          - MYSQL_DATABASE=${DATABASE_NAME}
        restart: unless-stopped
    
      mysql-cron-backup:
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          - MYSQL_USER=root
          - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
          - MAX_BACKUPS=15
          - INIT_BACKUP=0
          # Every day at 03:00
          - CRON_TIME=0 3 * * *
          # Make it small
          - GZIP_LEVEL=9
        restart: unless-stopped
    
    volumes:
      data:
    _6. File dalam wadah tempat menemukan pengguna database mysql Anda (lih. rahasia buruh pelabuhan). Anda harus menggunakan MYSQL_USER_FILE atau MYSQL_USER (lihat contoh di bawah)
  • version: "2"
    services:
      mariadb:
        image: mariadb
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          # If there is not scheme, restore the last created backup (if exists)
          - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
        environment:
          - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
          - MYSQL_DATABASE=${DATABASE_NAME}
        restart: unless-stopped
    
      mysql-cron-backup:
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          - MYSQL_USER=root
          - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
          - MAX_BACKUPS=15
          - INIT_BACKUP=0
          # Every day at 03:00
          - CRON_TIME=0 3 * * *
          # Make it small
          - GZIP_LEVEL=9
        restart: unless-stopped
    
    volumes:
      data:
    _7. Kata sandi database mysql Anda
  • version: "2"
    services:
      mariadb:
        image: mariadb
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          # If there is not scheme, restore the last created backup (if exists)
          - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
        environment:
          - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
          - MYSQL_DATABASE=${DATABASE_NAME}
        restart: unless-stopped
    
      mysql-cron-backup:
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          - MYSQL_USER=root
          - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
          - MAX_BACKUPS=15
          - INIT_BACKUP=0
          # Every day at 03:00
          - CRON_TIME=0 3 * * *
          # Make it small
          - GZIP_LEVEL=9
        restart: unless-stopped
    
    volumes:
      data:
    _8. File dalam wadah tempat menemukan kata sandi database mysql Anda (lih. rahasia buruh pelabuhan). Anda harus menggunakan MYSQL_PASS_FILE atau MYSQL_PASS (lihat contoh di bawah)
  • version: "2"
    services:
      mariadb:
        image: mariadb
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          # If there is not scheme, restore the last created backup (if exists)
          - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
        environment:
          - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
          - MYSQL_DATABASE=${DATABASE_NAME}
        restart: unless-stopped
    
      mysql-cron-backup:
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          - MYSQL_USER=root
          - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
          - MAX_BACKUPS=15
          - INIT_BACKUP=0
          # Every day at 03:00
          - CRON_TIME=0 3 * * *
          # Make it small
          - GZIP_LEVEL=9
        restart: unless-stopped
    
    volumes:
      data:
    _9. Nama database yang akan dibuang. Bawaan.
    version: "3.7"
    
    secrets:
      # Place your secret file somewhere on your host filesystem, with your password inside
      mysql_root_password:
        file: ./secrets/mysql_root_password
      mysql_user:
        file: ./secrets/mysql_user
      mysql_password:
        file: ./secrets/mysql_password
      mysql_database:
        file: ./secrets/mysql_database
    
    services:
      mariadb:
        image: mariadb:10
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
        secrets:
          - mysql_root_password
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
      backup:
        build: .
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          # Alternatively to MYSQL_USER_FILE, we can use MYSQL_USER=root to use root user instead
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          # Alternatively, we can use /run/secrets/mysql_root_password when using root user
          - MYSQL_PASS_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
          - MAX_BACKUPS=10
          - INIT_BACKUP=1
          - CRON_TIME=0 0 * * *
        secrets:
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
    volumes:
      data:
    
    _0
  • version: "3.7"
    
    secrets:
      # Place your secret file somewhere on your host filesystem, with your password inside
      mysql_root_password:
        file: ./secrets/mysql_root_password
      mysql_user:
        file: ./secrets/mysql_user
      mysql_password:
        file: ./secrets/mysql_password
      mysql_database:
        file: ./secrets/mysql_database
    
    services:
      mariadb:
        image: mariadb:10
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
        secrets:
          - mysql_root_password
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
      backup:
        build: .
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          # Alternatively to MYSQL_USER_FILE, we can use MYSQL_USER=root to use root user instead
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          # Alternatively, we can use /run/secrets/mysql_root_password when using root user
          - MYSQL_PASS_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
          - MAX_BACKUPS=10
          - INIT_BACKUP=1
          - CRON_TIME=0 0 * * *
        secrets:
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
    volumes:
      data:
    
    _1. File dalam wadah tempat menemukan nama basis data di basis data mysql Anda (lih. rahasia buruh pelabuhan). Di file itu, bisa ada beberapa nama database. satu per baris. Anda harus menggunakan MYSQL_DATABASE atau MYSQL_DATABASE_FILE (lihat contoh di bawah)
  • version: "3.7"
    
    secrets:
      # Place your secret file somewhere on your host filesystem, with your password inside
      mysql_root_password:
        file: ./secrets/mysql_root_password
      mysql_user:
        file: ./secrets/mysql_user
      mysql_password:
        file: ./secrets/mysql_password
      mysql_database:
        file: ./secrets/mysql_database
    
    services:
      mariadb:
        image: mariadb:10
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
        secrets:
          - mysql_root_password
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
      backup:
        build: .
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          # Alternatively to MYSQL_USER_FILE, we can use MYSQL_USER=root to use root user instead
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          # Alternatively, we can use /run/secrets/mysql_root_password when using root user
          - MYSQL_PASS_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
          - MAX_BACKUPS=10
          - INIT_BACKUP=1
          - CRON_TIME=0 0 * * *
        secrets:
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
    volumes:
      data:
    
    _2. Argumen baris perintah untuk diteruskan ke mysqldump (lihat dokumentasi mysqldump)
  • version: "3.7"
    
    secrets:
      # Place your secret file somewhere on your host filesystem, with your password inside
      mysql_root_password:
        file: ./secrets/mysql_root_password
      mysql_user:
        file: ./secrets/mysql_user
      mysql_password:
        file: ./secrets/mysql_password
      mysql_database:
        file: ./secrets/mysql_database
    
    services:
      mariadb:
        image: mariadb:10
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
        secrets:
          - mysql_root_password
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
      backup:
        build: .
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          # Alternatively to MYSQL_USER_FILE, we can use MYSQL_USER=root to use root user instead
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          # Alternatively, we can use /run/secrets/mysql_root_password when using root user
          - MYSQL_PASS_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
          - MAX_BACKUPS=10
          - INIT_BACKUP=1
          - CRON_TIME=0 0 * * *
        secrets:
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
    volumes:
      data:
    
    _3. Argumen baris perintah untuk menggunakan SSL
  • version: "3.7"
    
    secrets:
      # Place your secret file somewhere on your host filesystem, with your password inside
      mysql_root_password:
        file: ./secrets/mysql_root_password
      mysql_user:
        file: ./secrets/mysql_user
      mysql_password:
        file: ./secrets/mysql_password
      mysql_database:
        file: ./secrets/mysql_database
    
    services:
      mariadb:
        image: mariadb:10
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
        secrets:
          - mysql_root_password
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
      backup:
        build: .
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          # Alternatively to MYSQL_USER_FILE, we can use MYSQL_USER=root to use root user instead
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          # Alternatively, we can use /run/secrets/mysql_root_password when using root user
          - MYSQL_PASS_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
          - MAX_BACKUPS=10
          - INIT_BACKUP=1
          - CRON_TIME=0 0 * * *
        secrets:
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
    volumes:
      data:
    
    _4. Interval tugas cron untuk menjalankan mysqldump.
    version: "3.7"
    
    secrets:
      # Place your secret file somewhere on your host filesystem, with your password inside
      mysql_root_password:
        file: ./secrets/mysql_root_password
      mysql_user:
        file: ./secrets/mysql_user
      mysql_password:
        file: ./secrets/mysql_password
      mysql_database:
        file: ./secrets/mysql_database
    
    services:
      mariadb:
        image: mariadb:10
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
        secrets:
          - mysql_root_password
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
      backup:
        build: .
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          # Alternatively to MYSQL_USER_FILE, we can use MYSQL_USER=root to use root user instead
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          # Alternatively, we can use /run/secrets/mysql_root_password when using root user
          - MYSQL_PASS_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
          - MAX_BACKUPS=10
          - INIT_BACKUP=1
          - CRON_TIME=0 0 * * *
        secrets:
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
    volumes:
      data:
    
    _5 secara default, yaitu setiap hari Minggu pukul 03. 00. Ini menggunakan zona waktu UTC
  • version: "3.7"
    
    secrets:
      # Place your secret file somewhere on your host filesystem, with your password inside
      mysql_root_password:
        file: ./secrets/mysql_root_password
      mysql_user:
        file: ./secrets/mysql_user
      mysql_password:
        file: ./secrets/mysql_password
      mysql_database:
        file: ./secrets/mysql_database
    
    services:
      mariadb:
        image: mariadb:10
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
        secrets:
          - mysql_root_password
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
      backup:
        build: .
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          # Alternatively to MYSQL_USER_FILE, we can use MYSQL_USER=root to use root user instead
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          # Alternatively, we can use /run/secrets/mysql_root_password when using root user
          - MYSQL_PASS_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
          - MAX_BACKUPS=10
          - INIT_BACKUP=1
          - CRON_TIME=0 0 * * *
        secrets:
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
    volumes:
      data:
    
    _6. Jumlah cadangan yang akan disimpan. Saat mencapai batas, cadangan lama akan dibuang. Tidak ada batasan secara default
  • version: "2"
    services:
      mariadb:
        image: mariadb
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          # If there is not scheme, restore the last created backup (if exists)
          - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
        environment:
          - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
          - MYSQL_DATABASE=${DATABASE_NAME}
        restart: unless-stopped
    
      mysql-cron-backup:
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          - MYSQL_USER=root
          - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
          - MAX_BACKUPS=15
          - INIT_BACKUP=0
          # Every day at 03:00
          - CRON_TIME=0 3 * * *
          # Make it small
          - GZIP_LEVEL=9
        restart: unless-stopped
    
    volumes:
      data:
    _0. Jika disetel, buat cadangan saat penampung dimulai
  • version: "2"
    services:
      mariadb:
        image: mariadb
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          # If there is not scheme, restore the last created backup (if exists)
          - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
        environment:
          - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
          - MYSQL_DATABASE=${DATABASE_NAME}
        restart: unless-stopped
    
      mysql-cron-backup:
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          - MYSQL_USER=root
          - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
          - MAX_BACKUPS=15
          - INIT_BACKUP=0
          # Every day at 03:00
          - CRON_TIME=0 3 * * *
          # Make it small
          - GZIP_LEVEL=9
        restart: unless-stopped
    
    volumes:
      data:
    _1. Jika disetel, pulihkan cadangan terbaru
  • version: "3.7"
    
    secrets:
      # Place your secret file somewhere on your host filesystem, with your password inside
      mysql_root_password:
        file: ./secrets/mysql_root_password
      mysql_user:
        file: ./secrets/mysql_user
      mysql_password:
        file: ./secrets/mysql_password
      mysql_database:
        file: ./secrets/mysql_database
    
    services:
      mariadb:
        image: mariadb:10
        container_name: my_mariadb
        expose:
          - 3306
        volumes:
          - data:/var/lib/mysql
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
        secrets:
          - mysql_root_password
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
      backup:
        build: .
        image: fradelg/mysql-cron-backup
        depends_on:
          - mariadb
        volumes:
          - ${VOLUME_PATH}/backup:/backup
        environment:
          - MYSQL_HOST=my_mariadb
          # Alternatively to MYSQL_USER_FILE, we can use MYSQL_USER=root to use root user instead
          - MYSQL_USER_FILE=/run/secrets/mysql_user
          # Alternatively, we can use /run/secrets/mysql_root_password when using root user
          - MYSQL_PASS_FILE=/run/secrets/mysql_password
          - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
          - MAX_BACKUPS=10
          - INIT_BACKUP=1
          - CRON_TIME=0 0 * * *
        secrets:
          - mysql_user
          - mysql_password
          - mysql_database
        restart: unless-stopped
    
    volumes:
      data:
    
    _9. Jika disetel, buat cadangan saat penampung berhenti
  • docker container exec <your_mysql_backup_container_name> ls /backup
    0. Tunggu beberapa detik hingga database siap dan buat cadangan pertama,
    docker container exec <your_mysql_backup_container_name> ls /backup
    1 secara default. Setelah itu, upaya awal untuk membuat cadangan berhenti dan hanya tugas Cron yang akan mencoba membuat cadangan
  • docker container exec <your_mysql_backup_container_name> ls /backup
    2. Tentukan tingkat kompresi gzip dari 1 (tercepat, paling tidak dikompresi) hingga 9 (paling lambat, paling dikompresi), standarnya adalah 6
  • docker container exec <your_mysql_backup_container_name> ls /backup
    3. Jika disetel, cadangkan dan pulihkan file SQL biasa tanpa gzip
  • docker container exec <your_mysql_backup_container_name> ls /backup
    4. Tentukan TIMEZONE dalam Penampung. e. g. "Eropa/Berlin". Standarnya adalah UTC

Jika Anda ingin menjadikan gambar ini pendamping yang sempurna untuk wadah MySQL Anda, gunakan docker-compose. Anda dapat menambahkan lebih banyak layanan yang dapat terhubung ke gambar MySQL menggunakan nama

docker container exec <your_mysql_backup_container_name> ls /backup
5, perhatikan bahwa Anda hanya mengekspos port
docker container exec <your_mysql_backup_container_name> ls /backup
6 secara internal ke server dan bukan ke host

Docker-compose dengan MYSQL_PASS env var

version: "2"
services:
  mariadb:
    image: mariadb
    container_name: my_mariadb
    expose:
      - 3306
    volumes:
      - data:/var/lib/mysql
      # If there is not scheme, restore the last created backup (if exists)
      - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
    environment:
      - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
      - MYSQL_DATABASE=${DATABASE_NAME}
    restart: unless-stopped

  mysql-cron-backup:
    image: fradelg/mysql-cron-backup
    depends_on:
      - mariadb
    volumes:
      - ${VOLUME_PATH}/backup:/backup
    environment:
      - MYSQL_HOST=my_mariadb
      - MYSQL_USER=root
      - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
      - MAX_BACKUPS=15
      - INIT_BACKUP=0
      # Every day at 03:00
      - CRON_TIME=0 3 * * *
      # Make it small
      - GZIP_LEVEL=9
    restart: unless-stopped

volumes:
  data:
_

Docker-compose menggunakan rahasia buruh pelabuhan

Kata sandi root basis data diteruskan ke wadah buruh pelabuhan dengan menggunakan rahasia buruh pelabuhan

Pada contoh di bawah, buruh pelabuhan dalam 'mode mesin buruh pelabuhan' klasik (iow. bukan mode segerombolan) dan sumber rahasia adalah file lokal di sistem file host

Alternatifnya, rahasia dapat disimpan di mesin rahasia buruh pelabuhan (iow. tidak dalam sistem file host)

version: "3.7"

secrets:
  # Place your secret file somewhere on your host filesystem, with your password inside
  mysql_root_password:
    file: ./secrets/mysql_root_password
  mysql_user:
    file: ./secrets/mysql_user
  mysql_password:
    file: ./secrets/mysql_password
  mysql_database:
    file: ./secrets/mysql_database

services:
  mariadb:
    image: mariadb:10
    container_name: my_mariadb
    expose:
      - 3306
    volumes:
      - data:/var/lib/mysql
      - ${VOLUME_PATH}/backup:/backup
    environment:
      - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password
      - MYSQL_USER_FILE=/run/secrets/mysql_user
      - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password
      - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
    secrets:
      - mysql_root_password
      - mysql_user
      - mysql_password
      - mysql_database
    restart: unless-stopped

  backup:
    build: .
    image: fradelg/mysql-cron-backup
    depends_on:
      - mariadb
    volumes:
      - ${VOLUME_PATH}/backup:/backup
    environment:
      - MYSQL_HOST=my_mariadb
      # Alternatively to MYSQL_USER_FILE, we can use MYSQL_USER=root to use root user instead
      - MYSQL_USER_FILE=/run/secrets/mysql_user
      # Alternatively, we can use /run/secrets/mysql_root_password when using root user
      - MYSQL_PASS_FILE=/run/secrets/mysql_password
      - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
      - MAX_BACKUPS=10
      - INIT_BACKUP=1
      - CRON_TIME=0 0 * * *
    secrets:
      - mysql_user
      - mysql_password
      - mysql_database
    restart: unless-stopped

volumes:
  data:

Pulihkan dari cadangan

Buat daftar semua cadangan yang tersedia

Lihat daftar cadangan di wadah buruh pelabuhan Anda yang sedang berjalan, tulis saja di terminal favorit Anda

docker container exec <your_mysql_backup_container_name> ls /backup

Pulihkan menggunakan file penulisan

Untuk memulihkan database dari cadangan tertentu, Anda mungkin harus menentukan nama database dalam variabel MYSQL_DATABASE

mysql-cron-backup:
    image: fradelg/mysql-cron-backup
    command: "/restore.sh /backup/201708060500.${DATABASE_NAME}.sql.gz"
    depends_on:
      - mariadb
    volumes:
      - ${VOLUME_PATH}/backup:/backup
    environment:
      - MYSQL_HOST=my_mariadb
      - MYSQL_USER=root
      - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
      - MYSQL_DATABASE=${DATABASE_NAME}

Pulihkan menggunakan perintah buruh pelabuhan

docker container exec <your_mysql_backup_container_name> /restore.sh /backup/<your_sql_backup_gz_file>

jika tidak ada nama basis data yang ditentukan,

docker container exec <your_mysql_backup_container_name> ls /backup
7 akan mencoba mencari nama basis data dari file cadangan

Pencadangan dan pemulihan otomatis pada wadah dimulai dan berhenti

Setel

version: "2"
services:
  mariadb:
    image: mariadb
    container_name: my_mariadb
    expose:
      - 3306
    volumes:
      - data:/var/lib/mysql
      # If there is not scheme, restore the last created backup (if exists)
      - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz
    environment:
      - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
      - MYSQL_DATABASE=${DATABASE_NAME}
    restart: unless-stopped

  mysql-cron-backup:
    image: fradelg/mysql-cron-backup
    depends_on:
      - mariadb
    volumes:
      - ${VOLUME_PATH}/backup:/backup
    environment:
      - MYSQL_HOST=my_mariadb
      - MYSQL_USER=root
      - MYSQL_PASS=${MARIADB_ROOT_PASSWORD}
      - MAX_BACKUPS=15
      - INIT_BACKUP=0
      # Every day at 03:00
      - CRON_TIME=0 3 * * *
      # Make it small
      - GZIP_LEVEL=9
    restart: unless-stopped

volumes:
  data:
_1 untuk otomatis memulihkan cadangan terakhir saat startup. Setel
version: "3.7"

secrets:
  # Place your secret file somewhere on your host filesystem, with your password inside
  mysql_root_password:
    file: ./secrets/mysql_root_password
  mysql_user:
    file: ./secrets/mysql_user
  mysql_password:
    file: ./secrets/mysql_password
  mysql_database:
    file: ./secrets/mysql_database

services:
  mariadb:
    image: mariadb:10
    container_name: my_mariadb
    expose:
      - 3306
    volumes:
      - data:/var/lib/mysql
      - ${VOLUME_PATH}/backup:/backup
    environment:
      - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password
      - MYSQL_USER_FILE=/run/secrets/mysql_user
      - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password
      - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
    secrets:
      - mysql_root_password
      - mysql_user
      - mysql_password
      - mysql_database
    restart: unless-stopped

  backup:
    build: .
    image: fradelg/mysql-cron-backup
    depends_on:
      - mariadb
    volumes:
      - ${VOLUME_PATH}/backup:/backup
    environment:
      - MYSQL_HOST=my_mariadb
      # Alternatively to MYSQL_USER_FILE, we can use MYSQL_USER=root to use root user instead
      - MYSQL_USER_FILE=/run/secrets/mysql_user
      # Alternatively, we can use /run/secrets/mysql_root_password when using root user
      - MYSQL_PASS_FILE=/run/secrets/mysql_password
      - MYSQL_DATABASE_FILE=/run/secrets/mysql_database
      - MAX_BACKUPS=10
      - INIT_BACKUP=1
      - CRON_TIME=0 0 * * *
    secrets:
      - mysql_user
      - mysql_password
      - mysql_database
    restart: unless-stopped

volumes:
  data:
_9 untuk otomatis membuat cadangan terakhir saat dimatikan

Bagaimana cara menjadwalkan cadangan MySQL di Ubuntu?

Cara menjadwalkan backup database MySQL di Ubuntu .
Gunakan mysqldump
Otomatiskan mysqldump melalui crontab
Gunakan automysqlbackup
Menyesuaikan automysqlbackup

Bagaimana cara mem-backup database MySQL menggunakan cron job?

Metode #1. Masukkan informasi login MySQL di perintah cron job . Ganti dbusername dengan pengguna basis data, dbpassword dengan kata sandi pengguna basis data, dbname dengan basis data yang akan dicadangkan, dan jalur dengan jalur tempat Anda ingin menyimpan file cadangan. Contoh ini menggunakan cadangan.

Bagaimana cara menjadwalkan backup database MySQL di Linux?

Cara menjadwalkan pencadangan Database MySQL di Linux .
Pilih atau buat direktori tempat file DB Anda akan disimpan. .
Buat file shell dbdump. sh dan tambahkan skrip mysqldump di file itu. .
Setelah file ini dibuat, kita perlu membuat file ini dapat dieksekusi

Bagaimana cara menjadwalkan backup database di MySQL?

Menggunakan Solusi GUI .
Buat pekerjaan cadangan dengan mengklik Pekerjaan > Tambahkan Pekerjaan Cadangan
Buat koneksi dengan Server MySQL Anda
Pilih database yang ingin Anda cadangkan
Tentukan lokasi di mana cadangan akan disimpan. .
Buat jadwal pencadangan
Masukkan email Anda untuk menerima notifikasi gagal/berhasil