Ad Widget

Collapse

Problemas para fazer backup do Zabbix no MySQL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    Problemas para fazer backup do Zabbix no MySQL

    E aí pessoal, blz?

    Eu estou monitorando o tamanho da base de dados do meu Zabbix e percebi que ela está crescendo muito (já disparou o trigger de menos de 20% de espaço livre em disco). Dei uma pesquisada e encontrei que uma das abordagens para esse tipo de problema é implementar o particionamento da base de dados e eu gostaria de tentar fazer isso. No entanto, antes de tentar modificar a base de dados eu gostaria de fazer um backup de como ela está hoje, mas estou tendo alguns problemas com isso...

    Eu já fiz um backup a um tempo atrás utilizando o comando mysqldump mas agora não dá mais certo pois eu não tenho espaço suficiente na máquina virtual. Então o que eu pensei em fazer é rodar o mysqldump em uma outra máquina virtual, que tenha espaço suficiente.
    Pra ficar mais fácil de entender vou chamar a VM que está rodando o Zabbix de "A" e a VM que gostaria de fazer o dump de "B", sendo que o IP da máquina A é 10.100.100.242 e o IP da máquina B é 10.100.52.5.

    1. A máquina A e B conseguem se comunicar (uma consegue pingar a outra);
    2. Não existem regras de firewall que estejam bloqueando a comunicação entre elas;
    3. Eu já alterei o arquivo mysql.conf da máquina A e alterei o valor do bind-address para 0.0.0.0, possibilitando que ela seja acessada por qualquer IP;

    Quando eu rodo o comando "mysqldump -P3306 -h 10.100.100.242 -u zabbix -p zabbix > /home/zabbixbd/zabbixbd.sql" na máquina B eu recebo o seguinte erro:

    Code:
    mysqldump: Got error: 1130: Host '10.100.52.5' is not allowed to connect to this MySQL server when trying to connect
    Eu dei uma pesquisada nesse erro e pelo que li eu devo criar um novo usuário no mysql, ou garantir acesso da máquina B à máquina A, mas é aí que estou travado...

    Eu consigo fazer o login no mysql através da máquina A utilizando o comando:

    Code:
    mysql -u zabbix -p zabbix
    E então utilizo a senha especificada no arquivo de configuração do Zabbix para completar o login. Agora que estou dentro do mysql, quando executo o comando SHOW GRANTS; tenho a seguinte saída:

    Code:
    +------------------------------------------------------------+
    | Grants for [email protected]                                |
    +------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'zabbix'@'localhost'                 |
    | GRANT ALL PRIVILEGES ON `zabbix`.* TO 'zabbix'@'localhost' |
    +------------------------------------------------------------+
    2 rows in set (0.00 sec)
    Portanto o usuário [email protected] pode visualizar todas as tabelas do banco de dados e tem privilégios apenas nas tabelas contendo zabbix no nome, é isso??

    Quando eu tento garantir privilégios à máquina B, através dos comandos:

    Code:
    GRANT ALL ON *.* to [email protected] IDENTIFIED BY 'password';
    GRANT ALL ON `zabbix`.* TO 'root'@'10.100.52.5' IDENTIFIED BY 'password';
    Recebo o seguinte erro na saída:

    Code:
    ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES)
    Eu não entendo muito do mysql mas pelo que pude perceber eu deveria logar como [email protected] pra poder garantir privilégios a outros usuários, porém eu não sei como logar como root, pois só tenho a senha do [email protected]
    Como eu proceder agora???

    Valeu pela atenção!

    #2
    Pessoal, consegui resolver o problema aqui. Vou colocar a solução aqui, caso alguém passe por isso também:

    1. Parar o serviço do MySQL com service mysql stop
    2. Iniciar o MySQL com o comando: mysqld_safe --skip-grant-tables &
    3. Logar como root: mysql -u root
    4. Selecionar a base de dados do mysql: use mysql;
    5. A partir do MySQL 5.7, o campo de senha na tabela mysql.user foi removido e substituído pelo campo 'authentication_string'. Para ver onde está armazenado o campo de senha verificar as tabelas: show tables;
    6. Atualizar a senha do usuário root: update user set authentication_string=password('novasenha') where user='root';
    7. Atualizar os privilégios e reiniciar o MySQL:
    flush privileges;
    service mysql stop;
    service mysql start;


    Agora, para fazer o dump através da máquina A, logamos como root e criamos um novo usuário no MySQL com permissão de acesso:
    CREATE USER 'zabbixbackup'@'IP-MAQUINA-B' IDENTIFIED BY 'senha-qualquer';
    GRANT ALL PRIVILEGES ON *.* TO 'zabbixbackup'@'IP-DA-OUTRA-MAQUINA' WITH GRANT OPTION ;


    E na máquina B executamos o seguinte comando: mysqldump -P3306 -h IP-MAQUINA-A -u zabbixbackup -p zabbix > /local/do/backup/zabbixbd.sql

    E é isso!


    Comment

    Announcement

    Collapse
    No announcement yet.
    Working...
    X