====== Docker und MySQL/MariaDB ====== ===== Mysql aus Docker Container sichern und restoren ===== **[[https://gist.github.com/spalladino/6d981f7b33f6e0afe6bb#file-mysql-docker-sh|mysql-docker.sh]]** **Backup und restore** |docker exec CONTAINER /usr/bin/mysqldump -u root –password=root DATABASE > backup.sql| |cat backup.sql docker exec -i CONTAINER /usr/bin/mysql -u root –password=root DATABASE| **restore 2. Version ****backup und restore ** docker exec db_container_name mysqldump [--user yourusername] [--password=yourpassword] databasename> /desired/path/to/db.dump docker exec -i db_container_name mysql [--user yourusername] [--password=yourpassword] databasename ===== Mariadb aus Docker Container sichern und restoren ===== Hier die [[https://mariadb.com/kb/en/making-backups-with-mariadb-dump/|Anleitung für die Sicherung]] docker exec CONTAINER NAME/usr/bin/mariadb-dump --user=root --password= MARIADB-PASSWORT --lock-tables DATABASENAME> /SPEICHERORT/DATEINAME_`date +"%d"`.sql Hier die [[https://mariadb.com/kb/en/restoring-data-from-dump-files/|Anleitung für den restore]] einer normalen db, [[https://davejansen.com/how-to-dump-and-restore-a-mariadb-mysql-database-from-a-docker-container/|hier über Docker]] docker exec -i CONTAINERNAME /usr/bin/mariadb –user=USERNAME –password=DBPASSWORD DATABASENAME ===== Maria-DB CLI starten ===== - suche in der Bash mit ''docker container ps -a'' die ID des Containers - ''docker exec -it container-id bash'' - ''mysql –user=root –password=dein-rootpasswort'' Nähere Infos [[https://linoxide.com/containers/setup-use-mariadb-docker-container/|findest du hier]] ===== Maria-DB Error 4047 ===== ''InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE'' \\ in docker-compose folgende Zeile einfügen: \\ ''command: --innodb-read-only-compressed=OFF'' ===== Standardkonfiguration des Docker Containers ändern ===== Oft ist es notwendig, einige Standardvariablen von Mariadb zu ändern. Bei einigen Fällen geht das über die ENVIRONMENT Variablen, z.B.: - MYSQL_ROOT_PASSWORD=mysecretpassword - MYSQL_DATABASE=mydatabase - MYSQL_USER=myuser - MYSQL_PASSWORD=mypassword - MYSQL_CHARACTER_SET_SERVER=utf8mb4 - MYSQL_COLLATION_SERVER=utf8mb4_general_ci - MYSQL_MAX_ALLOWED_PACKET=128M - MYSQL_INNODB_BUFFER_POOL_SIZE=512M - MYSQL_INNODB_LOG_FILE_SIZE=512M - MYSQL_MAX_CONNECTIONS=100 Abhängig von der Maria-DB Version können u.a. auch folgende Variablen über Command übergeben werden: command: --transaction-isolation=READ-COMMITTED command: --binlog-format=ROW command: --innodb-read-only-compressed=OFF command: --innodb_buffer_pool_size=512M