Class: Backup::Database::MySQL
- Defined in:
- lib/backup/database/mysql.rb
Defined Under Namespace
Classes: Error
Instance Attribute Summary collapse
-
#additional_options ⇒ Object
Additional “mysqldump” or “innobackupex (backup creation)” options.
-
#backup_engine ⇒ Object
Default is :mysqldump (which is built in MySQL and generates a textual SQL file), but can be changed to :innobackupex, which has more feasible restore times for large databases.
-
#host ⇒ Object
Connectivity options.
-
#name ⇒ Object
Name of the database that needs to get dumped To dump all databases, set this to ‘:all` or leave blank.
-
#only_tables ⇒ Object
Tables to dump.
-
#password ⇒ Object
Credentials for the specified database.
-
#port ⇒ Object
Connectivity options.
-
#prepare_options ⇒ Object
Additional innobackupex log preparation phase (“apply-logs”) options.
-
#skip_tables ⇒ Object
Tables to skip while dumping the database.
-
#socket ⇒ Object
Connectivity options.
-
#sudo_user ⇒ Object
If set the backup engine command block is executed as the given user.
-
#username ⇒ Object
Credentials for the specified database.
-
#verbose ⇒ Object
If set, do not suppress innobackupdb output (useful for debugging).
Attributes inherited from Base
#database_id, #dump_path, #model
Instance Method Summary collapse
-
#initialize(model, database_id = nil, &block) ⇒ MySQL
constructor
A new instance of MySQL.
-
#perform! ⇒ Object
Performs the mysqldump or innobackupex command and outputs the dump file in the
dump_pathusingdump_filename.
Methods included from Config::Helpers
Constructor Details
#initialize(model, database_id = nil, &block) ⇒ MySQL
Returns a new instance of MySQL.
58 59 60 61 62 63 64 |
# File 'lib/backup/database/mysql.rb', line 58 def initialize(model, database_id = nil, &block) super instance_eval(&block) if block_given? @name ||= :all @backup_engine ||= :mysqldump end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Backup::Config::Helpers
Instance Attribute Details
#additional_options ⇒ Object
Additional “mysqldump” or “innobackupex (backup creation)” options
37 38 39 |
# File 'lib/backup/database/mysql.rb', line 37 def end |
#backup_engine ⇒ Object
Default is :mysqldump (which is built in MySQL and generates a textual SQL file), but can be changed to :innobackupex, which has more feasible restore times for large databases. See: www.percona.com/doc/percona-xtrabackup/
48 49 50 |
# File 'lib/backup/database/mysql.rb', line 48 def backup_engine @backup_engine end |
#host ⇒ Object
Connectivity options
20 21 22 |
# File 'lib/backup/database/mysql.rb', line 20 def host @host end |
#name ⇒ Object
Name of the database that needs to get dumped To dump all databases, set this to ‘:all` or leave blank.
12 13 14 |
# File 'lib/backup/database/mysql.rb', line 12 def name @name end |
#only_tables ⇒ Object
Tables to dump. This in only valid if ‘name` is specified. If none are given, the entire database will be dumped.
33 34 35 |
# File 'lib/backup/database/mysql.rb', line 33 def only_tables @only_tables end |
#password ⇒ Object
Credentials for the specified database
16 17 18 |
# File 'lib/backup/database/mysql.rb', line 16 def password @password end |
#port ⇒ Object
Connectivity options
20 21 22 |
# File 'lib/backup/database/mysql.rb', line 20 def port @port end |
#prepare_options ⇒ Object
Additional innobackupex log preparation phase (“apply-logs”) options
41 42 43 |
# File 'lib/backup/database/mysql.rb', line 41 def end |
#skip_tables ⇒ Object
Tables to skip while dumping the database
If ‘name` is set to :all (or not specified), these must include a database name. e.g. ’name.table’. If ‘name` is given, these may simply be table names.
28 29 30 |
# File 'lib/backup/database/mysql.rb', line 28 def skip_tables @skip_tables end |
#socket ⇒ Object
Connectivity options
20 21 22 |
# File 'lib/backup/database/mysql.rb', line 20 def socket @socket end |
#sudo_user ⇒ Object
If set the backup engine command block is executed as the given user
52 53 54 |
# File 'lib/backup/database/mysql.rb', line 52 def sudo_user @sudo_user end |
#username ⇒ Object
Credentials for the specified database
16 17 18 |
# File 'lib/backup/database/mysql.rb', line 16 def username @username end |
#verbose ⇒ Object
If set, do not suppress innobackupdb output (useful for debugging)
56 57 58 |
# File 'lib/backup/database/mysql.rb', line 56 def verbose @verbose end |
Instance Method Details
#perform! ⇒ Object
Performs the mysqldump or innobackupex command and outputs the dump file in the dump_path using dump_filename.
<trigger>/databases/MySQL[-<database_id>].[sql|tar][.gz]
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/backup/database/mysql.rb', line 71 def perform! super pipeline = Pipeline.new dump_ext = sql_backup? ? 'sql' : 'tar' pipeline << sudo_option(sql_backup? ? mysqldump : innobackupex) model.compressor.compress_with do |command, ext| pipeline << command dump_ext << ext end if model.compressor pipeline << "#{ utility(:cat) } > " + "'#{ File.join(dump_path, dump_filename) }.#{ dump_ext }'" pipeline.run if pipeline.success? log!(:finished) else raise Error, "Dump Failed!\n" + pipeline. end end |