我检查了由资深 mysql 管理员(很久以前离开)设计的 mysql 备份脚本,只是为了为不同的客户端实现相同的设置。所有步骤都很清楚,并与 mysql 官方参考资料中提供的指南和说明相符,直到我发现备份脚本正在执行/安排在错误的机器(据我所知)由于以下因素:
- 备份脚本主要做3个命令【stop slave;mysqldump;start slave;】
- 尽管应该从从属 mysql 服务器调用停止从属和启动从属,但备份脚本计划在主 mysql 服务器上运行,而不是在从属 mysql 服务器上运行。对吗?
- 经过仔细检查,我发现主服务器包含格式为“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
您可以从远程服务器备份 MySQL。
您介意发布您的备份脚本吗?
看起来像二进制日志文件。它可以通过
log-bin
选项启用,无论是主服务器还是从服务器。
这样可以确保主 mysql 服务器处于自引导状态!
您可以使用以下方式检查:mysql> show slave status\G