@ -63,6 +63,13 @@ options:
required : false
required : false
default : [ ]
default : [ ]
version_added : " 2.7 "
version_added : " 2.7 "
hex_blob :
description :
- Dump binary columns using hexadecimal notation
required : false
default : false
type : bool
version_added : " 2.10 "
author : " Ansible Core Team "
author : " Ansible Core Team "
requirements :
requirements :
- mysql ( command line binary )
- mysql ( command line binary )
@ -184,7 +191,7 @@ def db_delete(cursor, db):
def db_dump ( module , host , user , password , db_name , target , all_databases , port , config_file , socket = None , ssl_cert = None , ssl_key = None , ssl_ca = None ,
def db_dump ( module , host , user , password , db_name , target , all_databases , port , config_file , socket = None , ssl_cert = None , ssl_key = None , ssl_ca = None ,
single_transaction = None , quick = None , ignore_tables = None ):
single_transaction = None , quick = None , ignore_tables = None , hex_blob = None ):
cmd = module . get_bin_path ( ' mysqldump ' , True )
cmd = module . get_bin_path ( ' mysqldump ' , True )
# If defined, mysqldump demands --defaults-extra-file be the first option
# If defined, mysqldump demands --defaults-extra-file be the first option
if config_file :
if config_file :
@ -214,6 +221,8 @@ def db_dump(module, host, user, password, db_name, target, all_databases, port,
if ignore_tables :
if ignore_tables :
for an_ignored_table in ignore_tables :
for an_ignored_table in ignore_tables :
cmd + = " --ignore-table= {0} " . format ( an_ignored_table )
cmd + = " --ignore-table= {0} " . format ( an_ignored_table )
if hex_blob :
cmd + = " --hex-blob "
path = None
path = None
if os . path . splitext ( target ) [ - 1 ] == ' .gz ' :
if os . path . splitext ( target ) [ - 1 ] == ' .gz ' :
@ -326,6 +335,7 @@ def main():
single_transaction = dict ( type = ' bool ' , default = False ) ,
single_transaction = dict ( type = ' bool ' , default = False ) ,
quick = dict ( type = ' bool ' , default = True ) ,
quick = dict ( type = ' bool ' , default = True ) ,
ignore_tables = dict ( type = ' list ' , default = [ ] ) ,
ignore_tables = dict ( type = ' list ' , default = [ ] ) ,
hex_blob = dict ( default = False , type = ' bool ' ) ,
) ,
) ,
supports_check_mode = True ,
supports_check_mode = True ,
)
)
@ -360,6 +370,7 @@ def main():
module . fail_json ( msg = " Name of ignored table cannot be empty " )
module . fail_json ( msg = " Name of ignored table cannot be empty " )
single_transaction = module . params [ " single_transaction " ]
single_transaction = module . params [ " single_transaction " ]
quick = module . params [ " quick " ]
quick = module . params [ " quick " ]
hex_blob = module . params [ " hex_blob " ]
if len ( db ) > 1 and state == ' import ' :
if len ( db ) > 1 and state == ' import ' :
module . fail_json ( msg = " Multiple databases are not supported with state=import " )
module . fail_json ( msg = " Multiple databases are not supported with state=import " )
@ -425,7 +436,7 @@ def main():
rc , stdout , stderr = db_dump ( module , login_host , login_user ,
rc , stdout , stderr = db_dump ( module , login_host , login_user ,
login_password , db , target , all_databases ,
login_password , db , target , all_databases ,
login_port , config_file , socket , ssl_cert , ssl_key ,
login_port , config_file , socket , ssl_cert , ssl_key ,
ssl_ca , single_transaction , quick , ignore_tables )
ssl_ca , single_transaction , quick , ignore_tables , hex_blob )
if rc != 0 :
if rc != 0 :
module . fail_json ( msg = " %s " % stderr )
module . fail_json ( msg = " %s " % stderr )
module . exit_json ( changed = True , db = db_name , db_list = db , msg = stdout )
module . exit_json ( changed = True , db = db_name , db_list = db , msg = stdout )