2023-10-06 21:05:35 +00:00
#
#
#
2023-10-13 18:09:33 +00:00
bundle agent mysql ( cfg_param )
2023-10-06 21:05:35 +00:00
{
vars :
2023-10-13 18:09:33 +00:00
" d e f a u l t _ c f g " data => ' {
" b i n d _ a d d r e s s " : " 1 2 7 . 0 . 0 . 1 " ,
" u s e r " : " m y s q l " ,
2023-11-13 00:18:10 +00:00
" p o r t " : " 3 3 0 6 " ,
2023-11-14 18:47:25 +00:00
" b a c k u p _ d i r " : " / v a r / b a c k u p s " ,
" m a r i a d b " : true
2023-10-13 18:09:33 +00:00
} ' ;
" c f g " data => mergedata ( @(default_cfg) , @(cfg_param) ) ;
2023-10-06 21:05:35 +00:00
freebsd ::
2023-10-22 23:48:08 +00:00
" u s e r " string => " m y s q l " ;
2023-10-22 21:29:39 +00:00
" s e r v e r _ p k g s " slist => { " m y s q l 8 0 - s e r v e r " } ;
2023-10-22 11:39:35 +00:00
" c l i e n t _ p k g s " slist => { " m y s q l 8 0 - c l i e n t " } ;
2023-11-16 20:24:38 +00:00
" t y p e " string => " m y s q l 8 " ;
2023-11-14 18:47:25 +00:00
" s e r v e r _ p k g s " slist => { " m a r i a d b 1 0 6 - s e r v e r " } , if => strcmp ( " $( cfg[mariadb] ) " , " t r u e " ) ;
" c l i e n t _ p k g s " slist => { " m a r i a d b 1 0 6 - c l i e n t " } , if => strcmp ( " $( cfg[mariadb] ) " , " t r u e " ) ;
2023-11-16 20:24:38 +00:00
" t y p e " string => "mariadb",if => strcmp ( " $( cfg[mariadb] ) " , " t r u e " ) ;
2023-10-06 21:05:35 +00:00
" s e r v i c e _ n a m e " string => " m y s q l - s e r v e r " ;
2023-10-13 18:09:33 +00:00
" c f g _ d i r " string => " / u s r / l o c a l / e t c / m y s q l " ;
2023-10-06 21:05:35 +00:00
" c f g _ f i l e " string => " / u s r / l o c a l / e t c / m y s q l / m y . c n f " ;
2023-10-16 07:24:11 +00:00
" b i n _ d i r " string => " / u s r / l o c a l / b i n " ;
2023-10-22 23:48:08 +00:00
" d e f a u l t _ d a t a d i r " string => " / v a r / d b / m y s q l " ;
2023-10-23 00:47:29 +00:00
" m y s q l d _ c m d " string => " / u s r / l o c a l / l i b e x e c / m y s q l d " ;
2023-10-06 21:05:35 +00:00
debian ::
2023-10-22 23:48:08 +00:00
" u s e r " string => " m y s q l " ;
2023-10-22 21:29:39 +00:00
" s e r v e r _ p k g s " slist => { " m a r i a d b - s e r v e r " } ;
2023-10-16 07:24:11 +00:00
" c l i e n t _ p k g s " slist => { " m a r i a d b - c l i e n t " } ;
2023-10-22 21:29:39 +00:00
" t y p e " string => " m a r i a d b " ;
2023-10-06 21:05:35 +00:00
" s e r v i c e _ n a m e " string => " m y s q l " ;
2023-10-13 18:09:33 +00:00
" c f g _ d i r " string => " / e t c / m y s q l " ;
2023-10-06 21:05:35 +00:00
" c f g _ f i l e " string => " / e t c / m y s q l / m y . c n f " ;
2023-10-16 07:24:11 +00:00
" b i n _ d i r " string => " / u s r / b i n " ;
2023-10-22 23:48:08 +00:00
" d e f a u l t _ d a t a d i r " string => " / v a r / l i b / m y s q l " ;
2023-10-23 00:47:29 +00:00
" m y s q l d _ c m d " string => " / u s r / s b i n / m y s q l d " ;
2023-10-24 23:25:10 +00:00
fedora|centos ::
2023-10-22 23:48:08 +00:00
" u s e r " string => " m y s q l " ;
2023-10-22 21:29:39 +00:00
" s e r v e r _ p k g s " slist => { " m a r i a d b - s e r v e r " } ;
" c l i e n t _ p k g s " slist => { " m a r i a d b - c l i e n t " } ;
2024-02-16 11:08:59 +00:00
" s e r v e r _ p k g s " slist => { " M a r i a D B - s e r v e r " } ;
" c l i e n t _ p k g s " slist => { " M a r i a D B - c l i e n t " } ;
2023-10-22 21:29:39 +00:00
" t y p e " string => " m a r i a d b " ;
" s e r v i c e _ n a m e " string => " m a r i a d b " ;
" c f g _ d i r " string => " / e t c / m y s q l " ;
" c f g _ f i l e " string => " / e t c / m y . c n f " ;
2023-10-22 23:48:08 +00:00
" b i n _ d i r " string => " / u s r / b i n " ;
" d e f a u l t _ d a t a d i r " string => " / v a r / l i b / m y s q l " ;
2023-10-23 00:47:29 +00:00
" m y s q l d _ c m d " string => " / u s r / s b i n / m y s q l d " ;
2023-10-16 07:24:11 +00:00
any ::
" m y s q l _ c m d " string => " $( bin_dir ) / m y s q l " ;
" m y s q l d u m p _ c m d " string => " $( bin_dir ) / m y s q l d u m p " ;
2023-10-06 21:05:35 +00:00
files :
2023-10-22 11:39:35 +00:00
freebsd ::
" / e t c / r c . c o n f . d / m y s q l "
2025-04-15 11:05:07 +00:00
create => " t r u e " ,
content => " m y s q l _ e n a b l e = Y E S " ;
2023-10-22 11:39:35 +00:00
any ::
2025-04-15 11:05:07 +00:00
" $( cfg_dir ) / . "
create => " t r u e " ,
perms => m ( " 0 7 5 5 " ) ,
handle => " m y s q l _ c f g _ d i r _ c r e a t e d " ;
" $( cfg_file ) "
#create => "true",
perms => m ( " 6 4 4 " ) ,
copy_from => seed_cp ( " $( sys.workdir ) / i n p u t s / $( def.wmde_libdir ) / t e m p l a t e s / m y . c n f . m u s t a c h e " ) ,
# edit_template => "$(sys.workdir)/inputs/$(def.wmde_libdir)/templates/my.cnf.mustache",
# template_method => "mustache",
handle => " m y s q l _ c f g _ c r e a t e d " ,
depends_on => { " m y s q l _ c f g _ d i r _ c r e a t e d " } ,
classes => if_repaired ( " m y s q l _ r e p a i r e d " ) ;
2023-10-06 21:05:35 +00:00
services :
" $( service_name ) "
depends_on => { " m y s q l _ p k g s _ i n s t a l l e d " } ,
service_policy => " s t a r t " ,
handle => " m y s q l _ r u n n i n g " ;
mysql_repaired ::
" $( service_name ) "
2025-04-15 11:05:07 +00:00
service_policy => " r e s t a r t " ,
depends_on => { " m y s q l _ r u n n i n g " , " m y s q l _ c f g _ c r e a t e d " } ;
2023-10-06 21:05:35 +00:00
2023-10-13 18:09:33 +00:00
reports :
2023-10-06 21:05:35 +00:00
}
2023-10-22 21:29:39 +00:00
bundle agent install_mysql_server ( cfg )
{
2023-10-23 00:47:29 +00:00
classes :
" t y p e _ $( mysql.type ) " ;
2023-10-22 21:29:39 +00:00
vars :
" m y s q l d _ i d x " slist => getindices ( @(cfg[settings][mysqld]) ) ;
" s e t t i n g s [ m y s q l d ] [ $( mysqld_idx ) ] " string => " $( cfg[settings][mysqld][ $( mysqld_idx ) ] ) " ;
2025-04-15 11:05:07 +00:00
" d a t a d i r " string => ifelse (
isvariable ( " c f g [ s e t t i n g s ] [ m y s q l d ] [ d a t a d i r ] " ) ,
" $( cfg[settings][mysqld][datadir] ) " ,
" $( mysql.default_datadir ) "
) ;
2023-10-23 00:47:29 +00:00
type_mariadb ::
2025-04-15 11:05:07 +00:00
" i n s t a l l _ d b _ e x e " string => ifelse (
fileexists ( " $( mysql.bin_dir ) / m y s q l _ i n s t a l l _ d b " ) ,
" $( mysql.bin_dir ) / m y s q l _ i n s t a l l _ d b " ,
" $( mysql.bin_dir ) / m a r i a d b - i n s t a l l - d b "
) ;
2023-10-28 12:02:30 +00:00
" i n s t a l l _ d b _ c m d " string => " i f [ ! - d $( datadir ) / m y s q l ] ; t h e n $( install_db_exe ) - - u s e r = $( mysql.user ) > / d e v / n u l l ; f i " ;
2023-10-23 00:47:29 +00:00
type_mysql8 ::
" i n s t a l l _ d b _ c m d " string => " i f [ ! - d $( datadir ) / m y s q l ] ; t h e n $( mysql.mysqld_cmd ) - - i n i t i a l i z e - i n s e c u r e - - u s e r = $( mysql.user ) ; f i " ;
2023-10-22 21:29:39 +00:00
" j " string => storejson ( @(cfg) ) ;
2025-04-15 11:05:07 +00:00
2023-10-22 21:29:39 +00:00
methods :
2023-11-13 00:18:10 +00:00
" a n y " usebundle => mysql ( @(cfg) ) ;
2023-10-22 21:29:39 +00:00
" a n y " usebundle => wmde_install_packages ( @(mysql.server_pkgs) , " m y s q l _ s e r v e r " ) ;
files :
" $( mysql.cfg_file ) "
2025-04-15 11:05:07 +00:00
copy_from => seed_cp ( " $( sys.workdir ) / i n p u t s / $( def.wmde_libdir ) / t e m p l a t e s / m y . c n f . m u s t a c h e " ) ,
handle => " m y s l q _ s e r v e r _ c f g _ c r e a t e d " ,
depends_on => { " m y s q l _ s e r v e r _ p k g s _ i n s t a l l e d " } ;
2023-10-22 21:29:39 +00:00
" $( mysql.cfg_file ) "
2025-04-15 11:05:07 +00:00
create => " t r u e " ,
perms => m ( " 6 4 4 " ) ,
edit_line => set_variable_values_inix ( " $( this.bundle ) . s e t t i n g s " , " m y s q l d " ) ,
depends_on => { " m y s l q _ s e r v e r _ c f g _ c r e a t e d " } ,
handle => " m y s l q _ s e r v e r _ c f g _ e d i t e d " ,
classes => if_repaired ( " m y s q l _ s e r v e r _ r e p a i r e d " ) ;
2023-10-23 00:47:29 +00:00
2023-10-22 23:48:08 +00:00
commands :
2023-10-23 00:47:29 +00:00
" $( install_db_cmd ) "
2025-04-15 11:05:07 +00:00
handle => " m y s q l _ d a t a d i r _ i n i t i a l i z e d " ,
contain => wmde_cmd_useshell ,
inform => " f a l s e " ,
depends_on => { " m y s l q _ s e r v e r _ c f g _ e d i t e d " } ;
2023-10-22 23:48:08 +00:00
2023-10-22 21:29:39 +00:00
methods :
" a n y " usebundle => wmde_service ( " $( mysql.service_name ) " , " m y s q l _ s e r v e r _ k e p t " , " m y s q l _ s e r v e r _ r e p a i r e d " ) ,
2023-10-22 23:48:08 +00:00
depends_on => { " m y s q l _ d a t a d i r _ i n i t i a l i z e d " } ;
2023-10-11 09:25:38 +00:00
2023-10-22 21:29:39 +00:00
reports :
}
bundle edit_line set_variable_values_inix ( tab , sectionName )
{
2025-04-15 11:05:07 +00:00
vars :
" i n d e x " slist => getindices ( " $( tab ) [ $( sectionName ) ] " ) ;
# Be careful if the index string contains funny chars
" c i n d e x [ $( index ) ] " string => canonify ( " $( index ) " ) ;
2023-10-22 21:29:39 +00:00
2025-04-15 11:05:07 +00:00
classes :
" e d i t _ $( cindex[ $( index ) ] ) " not => strcmp ( " $( $( tab ) [ $( sectionName ) ][ $( index ) ] ) " , " d o n t c h a n g e " ) ,
comment => " C r e a t e c o n d i t i o n s t o m a k e c h a n g e s " ;
field_edits :
# If the line is there, but commented out, first uncomment it
# "#+\s*$(index)\s*=.*"
# select_region => INI_section(escape("$(sectionName)")),
# edit_field => col("\s*=\s*","1","$(index)","set"),
# if => "edit_$(cindex[$(index)])";
# match a line starting like the key something
" \s * $( index ) \s * = . * "
edit_field => col ( " \s * = \s * " , " 2 " , " $( $( tab ) [ $( sectionName ) ][ $( index ) ] ) " , " s e t " ) ,
select_region => INI_section ( escape ( " $( sectionName ) " ) ) ,
classes => results ( " b u n d l e " , " s e t _ v a r i a b l e _ v a l u e s _ i n i _ n o t _ $( cindex[ $( index ) ] ) " ) ,
if => " e d i t _ $( cindex[ $( index ) ] ) " ;
delete_lines :
" ! i n c l u d e . * " ;
insert_lines :
" [ $( sectionName ) ] "
location => start ,
comment => " I n s e r t l i n e s " ;
" $( index ) = $( $( tab ) [ $( sectionName ) ][ $( index ) ] ) "
select_region => INI_section ( escape ( " $( sectionName ) " ) ) ,
if => " ! ( s e t _ v a r i a b l e _ v a l u e s _ i n i _ n o t _ $( cindex[ $( index ) ] ) _ k e p t | s e t _ v a r i a b l e _ v a l u e s _ i n i _ n o t _ $( cindex[ $( index ) ] ) _ r e p a i r e d ) . e d i t _ $( cindex[ $( index ) ] ) " ;
2023-10-22 21:29:39 +00:00
}
2023-10-16 07:24:11 +00:00
bundle agent install_mysql_client
{
methods :
" a n y " usebundle => wmde_install_packages ( @(mysql.client_pkgs) , " m y s q l _ c l i e n t " ) ,
handle => " m y s q l _ c l i e n t _ i n s t a l l e d " ;
}
2023-10-11 09:25:38 +00:00
body contain mysql_cmd
{
useshell => " u s e s h e l l " ;
}
bundle agent mysql_table_exists ( dbdef , table_name )
{
vars :
2025-04-15 11:05:07 +00:00
" p a s s _ a r g " string => ifelse (
isvariable ( " d b d e f [ d b _ p a s s ] " ) ,
" - p $( dbdef[db_pass] ) " ,
" "
) ;
" h o s t _ a r g " string => ifelse (
isvariable ( " d b d e f [ d b _ h o s t ] " ) ,
" - h $( dbdef[db_host] ) " ,
" "
) ;
" u s e r _ a r g " string => ifelse (
isvariable ( " d b d e f [ d b _ u s e r ] " ) ,
" - u $( dbdef[db_user] ) " ,
" "
) ;
2023-10-11 09:25:38 +00:00
" x a r g s " string => " $( pass_arg ) $( host_arg ) $( user_arg ) " ;
" c l a s s n a m e " string => " m y s q l _ $( dbdef[db_name] ) _ $( table_name ) _ e x i s t s " ;
2024-06-23 11:49:28 +00:00
" c m d " string => ' m y s q l $( xargs ) - e " s h o w t a b l e s L I K E \' $( table_name ) \' " $( dbdef[db_name] ) > / t m p / $( dbdef[db_name] ) . c h e c k & & i f g r e p - q \' $( table_name ) \' / t m p / $( dbdef[db_name] ) . c h e c k ; t h e n e c h o " + $( classname ) " ; e l s e e c h o " - $( classname ) " ; f i ' ;
2025-04-15 11:05:07 +00:00
2023-10-11 09:25:38 +00:00
commands :
" $( cmd ) "
contain => mysql_cmd ,
inform => " f a l s e " ,
module => " t r u e " ;
2023-10-16 07:24:11 +00:00
reports :
}
bundle agent mysql_backup_all ( cfg )
{
vars :
2024-06-19 10:50:11 +00:00
" c m d " string => ' $( mysql.mysql_cmd ) - N - e \' s h o w d a t a b a s e s \' | w h i l e r e a d d b n a m e ; d o $( mysql.mysqldump_cmd ) - - d e f a u l t - c h a r a c t e r - s e t = u t f 8 m b 4 - - c o m p l e t e - i n s e r t - - r o u t i n e s - - t r i g g e r s - - s i n g l e - t r a n s a c t i o n - - m a x _ a l l o w e d _ p a c k e t = 5 1 2 M " $ d b n a m e " > $( cfg[backup_dir] ) / " $ d b n a m e " . s q l ; d o n e ' ;
2023-10-16 07:24:11 +00:00
2023-10-11 09:25:38 +00:00
reports :
# "CMD: $(cmd)";
2023-10-16 07:24:11 +00:00
2023-10-11 09:25:38 +00:00
}
2023-10-16 07:24:11 +00:00
bundle agent mysql_backup_db ( cfg , file )
{
2023-11-04 20:56:03 +00:00
classes :
" t y p e _ $( mysql.type ) " ;
2023-10-16 07:24:11 +00:00
vars :
" t a b l e _ e x i s t s _ c m d " string => ' $( mysql.mysql_cmd ) - e " s h o w t a b l e s L I K E \' $( table_name ) \' " $( cdfg[db_name] ) | g r e p - q $( table_name ) ' ;
2024-06-19 10:50:11 +00:00
" c m d " string => " $( mysql.mysqldump_cmd ) - - d e f a u l t - c h a r a c t e r - s e t = u t f 8 m b 4 - - n o - t a b l e s p a c e s - - c o m p l e t e - i n s e r t - - r o u t i n e s - - t r i g g e r s - - s i n g l e - t r a n s a c t i o n - - m a x _ a l l o w e d _ p a c k e t = 5 1 2 M - h $( cfg[db_host] ) - u $( cfg[db_user] ) - p $( cfg[db_pass] ) $( cfg[db_name] ) > $( file ) " ;
2023-10-16 07:24:11 +00:00
}
2023-10-17 07:54:06 +00:00
#
# Create cronjob
# @param cfg definition for database, db_user, db_host, db_pass, db_name
# @param file file to dump database into
# @table_name a table in the database which has to exist, if not no dump will be done
# @run "true" or "false", means create cron job or not
#
2023-10-16 07:24:11 +00:00
bundle agent create_mysql_backup_cron_job ( cfg , file , table_name , run )
{
classes :
2023-11-04 20:56:03 +00:00
" t y p e _ $( mysql.type ) " ;
2023-10-16 07:24:11 +00:00
" c r e a t e _ c r o n " expression => strcmp ( " $( run ) " , " t r u e " ) ;
vars :
2023-10-27 22:37:52 +00:00
" t a b l e _ e x i s t s _ c m d " string => ' $( mysql.mysql_cmd ) - h $( cfg[db_host] ) - u $( cfg[db_user] ) - p $( cfg[db_pass] ) $( cfg[db_name] ) - e " s h o w t a b l e s L I K E \' $( table_name ) \' " | g r e p - q $( table_name ) ' ;
2023-11-04 20:56:03 +00:00
type_mariadb ::
2025-04-15 11:05:07 +00:00
" b a c k u p _ c m d " string => " $( mysql.mysqldump_cmd ) - - d e f a u l t - c h a r a c t e r - s e t = u t f 8 m b 4 - - c o m p l e t e - i n s e r t - - r o u t i n e s - - t r i g g e r s - - s i n g l e - t r a n s a c t i o n - - m a x _ a l l o w e d _ p a c k e t = 5 1 2 M - h $( cfg[db_host] ) - u $( cfg[db_user] ) - p $( cfg[db_pass] ) $( cfg[db_name] ) > $( file ) " ;
2023-11-04 20:56:03 +00:00
type_mysql8 ::
2025-04-15 11:05:07 +00:00
" b a c k u p _ c m d " string => " $( mysql.mysqldump_cmd ) - - s e t - g t i d - p u r g e d = O F F - - n o - t a b l e s p a c e s - - c o m p l e t e - i n s e r t - - r o u t i n e s - - t r i g g e r s - - s i n g l e - t r a n s a c t i o n - - m a x _ a l l o w e d _ p a c k e t = 5 1 2 M - h $( cfg[db_host] ) - u $( cfg[db_user] ) - p $( cfg[db_pass] ) $( cfg[db_name] ) > $( file ) " ;
2023-10-16 07:24:11 +00:00
files :
!create_cron ::
2023-10-20 18:01:42 +00:00
" / e t c / c r o n . d / d u m p - m y s q l - d b - $( cfg[db_name] ) "
2025-04-15 11:05:07 +00:00
delete => tidy ;
2023-10-16 07:24:11 +00:00
create_cron ::
2023-10-20 18:01:42 +00:00
" / e t c / c r o n . d / d u m p - m y s q l - d b - $( cfg[db_name] ) "
2025-04-15 11:05:07 +00:00
perms => m ( " 6 4 4 " ) ,
create => " t r u e " ,
content => "
2023-10-16 07:24:11 +00:00
#
# /etc/cron.d/roundcube
#
SHELL = / bin / sh
PATH = / usr / local / sbin : / usr / local / bin : / sbin : / bin : / usr / sbin : / usr / bin
0 * * * * root $(table_exists_cmd) & & $(backup_cmd)
" ;
}
2023-11-13 10:40:40 +00:00
#
# Create cronjob
# @param cfg definition for database, db_user, db_host, db_pass, db_name
# @param file file to dump database into
# @run "true" or "false", means create cron job or not
#
bundle agent create_mysqldump_cron ( cfg , file , run )
{
classes :
" t y p e _ $( mysql.type ) " ;
" c r e a t e _ c r o n " expression => strcmp ( " $( run ) " , " t r u e " ) ;
vars :
2025-04-15 11:05:07 +00:00
" c r o n " string => ifelse (
isvariable ( " c f g [ d b _ c r o n ] " ) ,
" $( cfg[db_cron] ) " ,
" 0 1 * * * "
) ;
2023-11-13 10:40:40 +00:00
" t a b l e _ e x i s t s _ c m d " string => ' $( mysql.mysql_cmd ) - h $( cfg[db_host] ) - u $( cfg[db_user] ) - p $( cfg[db_pass] ) $( cfg[db_name] ) - e " s h o w t a b l e s L I K E \' $( cfg[db_check_table] ) \' " | g r e p - q $( cfg[db_check_table] ) ' ;
type_mariadb ::
2024-06-19 10:50:11 +00:00
" b a c k u p _ c m d " string => " $( mysql.mysqldump_cmd ) - - d e f a u l t - c h a r a c t e r - s e t = u t f 8 m b 4 - - c o m p l e t e - i n s e r t - - r o u t i n e s - - t r i g g e r s - - s i n g l e - t r a n s a c t i o n - - m a x _ a l l o w e d _ p a c k e t = 5 1 2 M - h $( cfg[db_host] ) - u $( cfg[db_user] ) - p $( cfg[db_pass] ) $( cfg[db_name] ) > $( file ) " ;
2023-11-13 10:40:40 +00:00
type_mysql8 ::
" b a c k u p _ c m d " string => " $( mysql.mysqldump_cmd ) - - s e t - g t i d - p u r g e d = O F F - - n o - t a b l e s p a c e s - - c o m p l e t e - i n s e r t - - r o u t i n e s - - t r i g g e r s - - s i n g l e - t r a n s a c t i o n - - m a x _ a l l o w e d _ p a c k e t = 5 1 2 M - h $( cfg[db_host] ) - u $( cfg[db_user] ) - p $( cfg[db_pass] ) $( cfg[db_name] ) > $( file ) " ;
files :
!create_cron ::
" / e t c / c r o n . d / m y s q l d u m p - $( cfg[db_name] ) "
delete => tidy ;
create_cron ::
" / e t c / c r o n . d / m y s q l d u m p - $( cfg[db_name] ) "
2025-04-15 11:05:07 +00:00
perms => m ( " 6 4 4 " ) ,
create => " t r u e " ,
content => "
2023-11-13 10:40:40 +00:00
#
# /etc/cron.d/mysqldump-$(cfg[db_name])
#
SHELL = / bin / sh
PATH = / usr / local / sbin : / usr / local / bin : / sbin : / bin : / usr / sbin : / usr / bin
$(cron) root $(table_exists_cmd) & & $(backup_cmd)
" ;
}
2023-10-06 21:05:35 +00:00
bundle agent create_mysql_db ( cfg )
{
2023-10-22 21:29:39 +00:00
classes :
" t y p e _ $( mysql.type ) " ;
2023-11-13 00:18:10 +00:00
# "do_restore" expression => isvariable("cfg[restore]");
2023-11-13 10:40:40 +00:00
" d o _ r e s t o r e " expression => strcmp ( " $( cfg[db_restore] ) " , " t r u e " ) ;
" d o _ b a c k u p " expression => strcmp ( " $( cfg[db_backup] ) " , " t r u e " ) ;
2023-10-06 21:05:35 +00:00
vars :
2025-04-15 11:05:07 +00:00
" d b _ n a m e " string => " $( cfg[db_name] ) " ;
" d b _ u s e r " string => " $( cfg[db_user] ) " ;
" h o s t " string => " $( cfg[db_user_host] ) " ;
" d b _ p a s s " string => " $( cfg[db_pass] ) " ;
2023-11-14 18:47:25 +00:00
" a r g s " string => " p n u n f " ;
2023-10-22 21:29:39 +00:00
type_mariadb ::
2025-11-11 09:43:35 +00:00
# "args" string => "-e \"CREATE DATABASE IF NOT EXISTS $(db_name); GRANT ALL PRIVILEGES ON $(db_name).* TO '$(db_user)'@'$(host)' IDENTIFIED BY '$(db_pass)'; \" ";
" a r g s " string => " - e \" C R E A T E D A T A B A S E I F N O T E X I S T S $( db_name ) ; C R E A T E U S E R I F N O T E X I S T S ' $( db_user ) ' @ ' $( host ) ' I D E N T I F I E D B Y ' $( db_pass ) ' ; G R A N T A L L P R I V I L E G E S O N $( db_name ) . * T O ' $( db_user ) ' @ ' $( host ) ' ; \" " ;
2023-10-22 21:29:39 +00:00
type_mysql8 ::
2025-04-15 11:05:07 +00:00
" a r g s " string => " - e \" C R E A T E D A T A B A S E I F N O T E X I S T S $( db_name ) ; C R E A T E U S E R I F N O T E X I S T S ' $( db_user ) ' @ ' $( host ) ' ; A L T E R U S E R ' $( db_user ) ' @ ' $( host ) ' I D E N T I F I E D B Y ' $( db_pass ) ' ; G R A N T R E L O A D O N * . * t o ' $( db_user ) ' @ ' $( host ) ' ; G R A N T A L L P R I V I L E G E S O N $( db_name ) . * T O ' $( db_user ) ' @ ' $( host ) ' ; \" " ;
2023-10-22 21:29:39 +00:00
2023-11-13 00:18:10 +00:00
methods :
do_restore ::
" a n y " usebundle => restore_mysql_db_conditional ( @(cfg) , " $( mysql.cfg[backup_dir] ) / $( cfg[db_name] ) - d m p . s q l " ) ,
depends_on => { " m y s q l _ $( cfg[db_name] ) _ c r e a t e d " } ;
2023-11-13 10:40:40 +00:00
do_backup ::
" a n y " usebundle => create_mysqldump_cron ( @(cfg) , " $( mysql.cfg[backup_dir] ) / $( cfg[db_name] ) - d m p . s q l " , " t r u e " ) ;
!do_backup ::
" a n y " usebundle => create_mysqldump_cron ( @(cfg) , " $( mysql.cfg[backup_dir] ) / $( cfg[db_name] ) - d m p . s q l " , " f a l s e " ) ;
2023-10-06 21:05:35 +00:00
commands :
2025-04-15 11:05:07 +00:00
" $( mysql.mysql_cmd ) "
args => " $( args ) " ,
handle => " m y s q l _ $( cfg[db_name] ) _ c r e a t e d " ,
inform => " f a l s e " ;
2023-10-06 21:05:35 +00:00
reports :
}
2023-10-17 11:29:33 +00:00
bundle agent restore_mysql_db ( cfg , file )
{
commands :
" $( mysql.mysql_cmd ) "
args => " - h $( cfg[db_host] ) - u $( cfg[db_user] ) - p $( cfg[db_pass] ) $( cfg[db_name] ) < $( file ) " ,
contain => wmde_cmd_useshell ;
}
2023-11-13 00:18:10 +00:00
bundle agent restore_mysql_db_conditional ( cfg , file )
{
classes :
" b a c k u p _ e x i s t s " expression => fileexists ( " $( file ) " ) ;
vars :
2023-11-13 10:40:40 +00:00
" t a b l e _ e x i s t s " string => " m y s q l _ $( cfg[db_name] ) _ $( cfg[db_check_table] ) _ e x i s t s " ;
2023-11-13 00:18:10 +00:00
methods :
2023-11-16 20:24:38 +00:00
" a n y " usebundle => mysql_table_exists ( @(cfg) , " $( cfg[db_check_table] ) " ) ,
handle => " $( table_exists ) _ c h e c k e d " ;
2023-11-13 00:18:10 +00:00
"!$(table_exists)&backup_exists" ::
2023-11-16 20:24:38 +00:00
" a n y " usebundle => restore_mysql_db ( @(cfg) , " $( file ) " ) ,
depends_on => { " $( table_exists ) _ c h e c k e d " } ;
2023-11-13 00:18:10 +00:00
reports :
2024-06-23 11:49:28 +00:00
#"!$(table_exists)&backup_exists"::
# "DB DOES NOT EXISTS";
#"$(table_exists)&backup_exists"::
# "DB DOES EXISTS";
2023-11-13 00:18:10 +00:00
}