mariadb.yml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. version: '3.4'
  2. services:
  3. seed:
  4. image: colinmollenhour/mariadb-galera-swarm:10.4.11-2020-01-06
  5. environment:
  6. - XTRABACKUP_PASSWORD_FILE=/run/secrets/xtrabackup_password
  7. - MYSQL_USER=user
  8. - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password
  9. - MYSQL_DATABASE=drupal
  10. - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password
  11. - NODE_ADDRESS=^10.0.*.*
  12. networks:
  13. - db-network
  14. command: seed
  15. volumes:
  16. - mysql-data:/var/lib/mysql
  17. - mariadb_backups:/srv/backups
  18. - mariadb_conf:/etc/mysql
  19. - /etc/localtime:/etc/localtime
  20. secrets:
  21. - xtrabackup_password
  22. - mysql_password
  23. - mysql_root_password
  24. deploy:
  25. mode: replicated
  26. replicas: 1
  27. resources:
  28. limits:
  29. cpus: '1'
  30. memory: 1024M
  31. reservations:
  32. cpus: '1'
  33. memory: 1024M
  34. placement:
  35. constraints:
  36. - node.role == manager
  37. - node.hostname == hetzner # <-- Vale oli siin
  38. node:
  39. image: colinmollenhour/mariadb-galera-swarm:10.4.11-2020-01-06
  40. ports:
  41. - target: 3306
  42. published: 3306
  43. protocol: tcp
  44. mode: ingress
  45. environment:
  46. - XTRABACKUP_PASSWORD_FILE=/run/secrets/xtrabackup_password
  47. - NODE_ADDRESS=^10.0.*.*
  48. - HEALTHY_WHILE_BOOTING=1
  49. networks:
  50. - db-network
  51. command: node tasks.seed,tasks.node
  52. volumes:
  53. - mysql-data:/var/lib/mysql
  54. - mariadb_backups:/srv/backups
  55. - mariadb_conf:/etc/mysql
  56. - /etc/localtime:/etc/localtime
  57. secrets:
  58. - xtrabackup_password
  59. deploy:
  60. mode: replicated
  61. replicas: 1
  62. placement:
  63. constraints:
  64. - node.role == manager
  65. - node.hostname == hetzner # <-- Parandi see "swarm" -> "hetzner"
  66. dbclient:
  67. image: alpine
  68. # depends_on: # <-- Eemalda
  69. # - node
  70. environment:
  71. - BACKUP_ENABLED=1
  72. - BACKUP_INTERVAL=86400
  73. - BACKUP_PATH=/srv/backups
  74. - BACKUP_FILENAME=swarm_db_backup_mysql
  75. - MYSQL_USER=user
  76. - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password
  77. secrets:
  78. - mysql_password
  79. networks:
  80. - db-network
  81. entrypoint: |
  82. sh -c 'sh -s << EOF
  83. apk add --no-cache mysql-client
  84. while true
  85. do
  86. if [ $$BACKUP_ENABLED == 1 ]
  87. then
  88. sleep 1800
  89. echo "Starting backup"
  90. mkdir -p $$BACKUP_PATH/$$(date +%F)
  91. echo "$$(date +%FT%H.%m) - Making Backup to : $$BACKUP_PATH/$$(date +%F)/$$BACKUP_FILENAME-$$(date +%FT%H.%m).sql.gz"
  92. mariadb-dump --skip-ssl -u $$MYSQL_USER -p`cat $$MYSQL_PASSWORD_FILE` -h node --all-databases | gzip > $$BACKUP_PATH/$$(date +%F)/$$BACKUP_FILENAME-$$(date +%FT%H.%m).sql.gz
  93. find $$BACKUP_PATH -mtime 7 -delete
  94. echo "Next backup will be at "
  95. echo $$(date -d@"$$(( `date +%s`+$$BACKUP_INTERVAL))" +%F" "%H:%m)
  96. sleep $$BACKUP_INTERVAL
  97. fi
  98. done
  99. EOF'
  100. volumes:
  101. - mariadb_backups:/srv/backups
  102. - /etc/localtime:/etc/localtime
  103. deploy:
  104. mode: replicated
  105. replicas: 1
  106. placement:
  107. constraints:
  108. - node.role == manager
  109. - node.hostname == hetzner # <-- Parandi see "swarm" -> "hetzner"
  110. volumes:
  111. mysql-data:
  112. name: '{{.Service.Name}}-{{.Task.Slot}}-data'
  113. driver: local
  114. mariadb_backups:
  115. name: mariadb_backups
  116. external: true
  117. mariadb_conf:
  118. name: mariadb_conf
  119. external: true
  120. networks:
  121. db-network:
  122. external: true
  123. secrets:
  124. xtrabackup_password:
  125. file: .secrets/xtrabackup_password
  126. mysql_password:
  127. file: .secrets/mysql_password
  128. mysql_root_password:
  129. file: .secrets/mysql_root_password