class Backup::Tasks::MySQL
Attributes
credentials[R]
host[R]
options[R]
Public Class Methods
new(host:, credentials:, databases: :all, **options)
click to toggle source
# File lib/backup-agent/tasks/mysql.rb, line 8 def initialize(host:, credentials:, databases: :all, **options) @host = host @credentials = credentials @databases = databases @options = options end
Public Instance Methods
databases()
click to toggle source
# File lib/backup-agent/tasks/mysql.rb, line 30 def databases if @databases == :all command("mysql", *credentials.to_options, *host_options, "-e", "SHOW DATABASES;") .split("\n") .reject { |el| el =~ /database|information_schema|mysql|performance_schema|test|phpmyadmin|pma|sys/i } else [@databases].flatten.compact end end
dump_options()
click to toggle source
# File lib/backup-agent/tasks/mysql.rb, line 40 def dump_options @options.fetch(:dump_options) do %W( --add-drop-table --add-locks --allow-keywords --comments --complete-insert --create-options --disable-keys --extended-insert --lock-tables --quick --quote-names --routines --set-charset --dump-date --tz-utc --verbose ) end end
host_options()
click to toggle source
# File lib/backup-agent/tasks/mysql.rb, line 61 def host_options ["--host=#{@host}"] end
perform(storage)
click to toggle source
# File lib/backup-agent/tasks/mysql.rb, line 15 def perform(storage) databases.map do |db| Tempfile.open do |tempfile| command("mysqldump", *credentials.to_options, *host_options, *dump_options, "--databases", db).tap do |dump_sql| stdin dump_sql do command("xz", "--compress", "-9", "--format=xz", "--keep", "--threads=0", "--verbose", "--check=sha256").tap do |dump_xz| tempfile.write(dump_xz) storage.store(construct_filename(db, ".sql.xz"), tempfile.path) end end end end end end