在复制环境中使用 mysqldump 进行 MySql 备份

在复制环境中使用 mysqldump 进行 MySql 备份

我检查了由资深 mysql 管理员(很久以前离开)设计的 mysql 备份脚本,只是为了为不同的客户端实现相同的设置。所有步骤都很清楚,并与 mysql 官方参考资料中提供的指南和说明相符,直到我发现备份脚本正在执行/安排在错误的机器(据我所知)由于以下因素:

  1. 备份脚本主要做3个命令【stop slave;mysqldump;start slave;】
  2. 尽管应该从从属 mysql 服务器调用停止从属和启动从属,但备份脚本计划在主 mysql 服务器上运行,而不是在从属 mysql 服务器上运行。对吗?
  3. 经过仔细检查,我发现主服务器包含格式为“hostname-relay-bin.NUMBERS”的最新文件,并且该文件仅由从服务器生成。

这样可以确保主 mysql 服务器处于自引导状态!

我知道单个 mysql 服务器可以同时作为主从服务器,但数据库不同,但我们的设置非常简单和直接的复制形式,其中从服务器完全复制主服务器。并且我 100% 确定我所说的服务器是主服务器而不是从服务器,所以我没有弄错。

我试图找到对此的解释,但没有找到,所以我认为那位前辈在执行调度任务时很着急。

更新
备份脚本简介 [它安排在主服务器上,但我认为它应该安排在从服务器上]

mysqladmin.exe --user=%mysqluser% --password=%mysqlpwd% stop-slave  
mysqldump.exe --user=%mysqluser% --password=%mysqlpwd% --lock-all-tables --databases db1 db2 > %backupworkingdir%\backup-%backupname%_%mydate%.sql  
mysqladmin.exe --user=%mysqluser% --password=%mysqlpwd% start-slave  

显示从属状态\G;MASTER 上的输出

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.xx.xx.xx
                  Master_User: repuser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000093
          Read_Master_Log_Pos: 6354
               Relay_Log_File: Host-DB-relay-bin.000002
                Relay_Log_Pos: 1681
        Relay_Master_Log_File: mysql-bin.000029
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 1062
                   Last_Error: Error 'Duplicate entry '192.xx.xx.xx-user'
 for key 'PRIMARY'' on query. Default database: 'mysql'. Query: 'INSERT INTO mys
ql.user(User, Host, Password, ssl_cipher, x509_issuer, x509_subject) SELECT 'user', '192.xx.xx.xx', Password, ssl_cipher, x509_issuer, x509_subject FROM
mysql.user WHERE User='user' ORDER BY Host LIMIT 1'
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 2775
              Relay_Log_Space: 1824235
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 1062
               Last_SQL_Error: Error 'Duplicate entry '192.xx.xx.xx-user'
 for key 'PRIMARY'' on query. Default database: 'mysql'. Query: 'INSERT INTO mys
ql.user(User, Host, Password, ssl_cipher, x509_issuer, x509_subject) SELECT 'user', '192.xx.xx.xx', Password, ssl_cipher, x509_issuer, x509_subject FROM
mysql.user WHERE User='user' ORDER BY Host LIMIT 1'
1 row in set (0.00 sec)

ERROR:
No query specified

mysql>

但在从机上,从机状态未显示任何错误。

如果我错了,请给我建议和启发,
谢谢,

答案1

  1. 您可以从远程服务器备份 MySQL。

  2. 您介意发布您的备份脚本吗?

  3. 看起来像二进制日志文件。它可以通过log-bin选项启用,无论是主服务器还是从服务器。

这样可以确保主 mysql 服务器处于自引导状态!

您可以使用以下方式检查:mysql> show slave status\G

相关内容