Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /opt/webdir/bin/ |
Upload File : |
#!/usr/bin/perl # # start ansible playbook for: # 1. add slave server # 2. remove slave server # 3. change master # 4. view server status # this script is wrapper for ansible playbook ( we need json output for web-interface) # use strict; use warnings; use lib "/opt/webdir/lib"; use bxMysql; use Output; use Pool; use Data::Dumper; use Getopt::Long; use File::Basename qw( dirname basename ); use Pod::Usage; # program options my $prog_name = basename $0; my $prog_dir = dirname $0; my $o_action = "list"; # type of action that script must do. # status - status the server: role: options # list - serverList # master - change master # slave - create slave # delete - delete mysql # create - create config file my $o_config = '/etc/ansible/group_vars/bitrix-mysql.yml'; my $options = { cluster_login => 'bx_clusteruser', cluster_password => undef, replica_login => 'bx_repluser', replica_password => undef, slave_server => undef, password_file => undef, }; my $o_mysql_server = undef; # ip address or hostname for mysql server my $o_format = 'plain'; # format of stdout message my $o_verbose = 0; my $o_help = undef; my $o_man = undef; # get command line options Getopt::Long::Configure("bundling"); my $result_option = GetOptions( 'v' => \$o_verbose, 'verbose' => \$o_verbose, 'h' => \$o_help, 'help' => \$o_help, "a:s" => \$o_action, 'action:s' => \$o_action, "s:s" => \$o_mysql_server, 'server:s' => \$o_mysql_server, "c:s" => \$o_config, 'config:s' => \$o_config, 'cluster_login:s' => \$options->{'cluster_login'}, 'cluster_password:s' => \$options->{'cluster_password'}, 'replica_login:s' => \$options->{'replica_login'}, 'replica_password:s' => \$options->{'replica_password'}, 'password_file:s' => \$options->{'password_file'}, "o:s" => \$o_format, 'output' => \$o_format, 'man' => \$o_man, 'm' => \$o_man, ) or pod2usage(2); # help message pod2usage(1) if ( $o_help || $o_format !~ /^(json|plain|te?xt)$/ ); # manual message pod2usage(-exitval => 0, -verbose => 2) if $o_man; if ( $o_format =~ /^te?xt$/ ) { $o_format = "plain" } # process request my $confPool = bxMysql->new( cmd => $options ); my $confMysql = undef; if ( $o_action eq "status" ) { $confMysql = $confPool->serverOptions($o_mysql_server); } elsif ( $o_action eq "list" ) { $confMysql = $confPool->serverList(); } #elsif ( $o_action eq "slave" ) { # $confMysql = $confPool->slave($o_mysql_server); #} #elsif ( $o_action eq "master" ) { # $confMysql = $confPool->master($o_mysql_server); #} #elsif ( $o_action eq "remove" ) { # $confMysql = $confPool->remove($o_mysql_server); #} elsif ( $o_action eq "update" ) { $confMysql = $confPool->update(); } elsif ( $o_action =~ /^(change_password|client_config)$/ ) { $confMysql = $confPool->password( $o_mysql_server, $1 ); } elsif ( $o_action =~ /^(stop_service|start_service)$/ ) { $confMysql = $confPool->manage( $o_mysql_server, $1 ); } else { $confMysql = Output->new( error => 1, message => "Unknown action option. PLease use -h for help message." ); } $confMysql->print($o_format); exit; __END__ =pod =head1 NAME bx-mysql - Managing MySQL servers in the Bitrix pool =head1 SYNOPSIS bx-mysql --help|-h bx-mysql [--verbose|-v] [--output|-o json|plain] [-a status|list] \ [-s|--server pool_hostname] bx-mysql [--verbose|-v] [--output|-o json|plain] [-a master|slave|remove] \ [-s|--server pool_hostname] \ [--cluster_login cluster_login --cluster_password cluster_password] \ [--replica_login replica_login --replica_password replica_password] bx-mysql [--verbose|-v] [--output|-o json|plain] [-a update|change_password|client_config] \ [-s|--server pool_hostname] \ [--password_file /path/to/file] bx-mysql [--verbose\-v] [--output|-o json|plain] [-a stop_service|start_service] \ [-s|--server pool_hostname] =head1 OPTIONS =over 8 =item B<--help|-h> Print a brief help message and exits. =item B<--man|-m> Prints the manual page and exits. =item B<--verbose|-v> Enable verbose/debug output. =item B<--server|-s> Server name in the Bitrix pool. =item B<--action|-a> Available options for actions in the Bitrix pool. =item B<--password_file> File with MySQL password. Mandatory option for changing root password. =item B<--cluster_login and --cluster_password> MySQL login and password that used by Bitrix cluster module. =item B<--replica_login and --replica_password> MySQL login and password that used by MySQL replication process. =back =head2 ACTIONS =over 7 =item B<status> Get mysql status in a specific server. bx-mysql -a status --server pool_hostname =item B<list> Get mysql status for all mysql servers in the Bitrix pool. bx-mysql -a list =item B<slave> Create MySQL replication on the specified pool server. bx-mysql -a slave --server pool_hostname \ --cluster_login cluster_login --cluster_password cluster_password \ --replica_login replica_login --replica_password replica_password =item B<master> Change MySQL master. bx-mysql -a master --server pool_hostname =item B<remove> Delete MySQL service on the specified pool server. Only slave-server can be deleted. bx-mysql -a remove --server pool_hostname =item B<change_password> Update MySQL root password. Password value is saved in password file, it will be deleted upfter update process. bx-mysql -a change_password --server pool_hostname \ --password_file /path/to/password_file =item B<stop_service|start_service> Start and stop MySQL service on the specified pool server bx-mysql -a stop_service --server pool_hostname =back =head1 EXAMPLES =head1 DESCRIPTION The script <bx-mysql> is used to manage, create and delete MySQL servers. It allows you to get the current settings for the MySQL service, as well as take a number of steps to configure it: change the password, update the configuration, and restart. =cut