在我们意识到我们的备份(转储)花费的时间太长,以及 VPS 提供商关闭我们的数据库 vps 2 小时的事件之后,我们决定尝试复制(不会删除备份,只需在复制服务器中进行备份)。
我按照 mysql 8 的复制指南操作,但没有意识到该指南是针对未运行数据库的全新安装而编写的。然后我尝试导入早上的备份,希望日志能够奇迹般地知道从哪里开始复制,但我错了。
有人能告诉我该怎么做吗?我们有大约 30 个数据库,总共必须有 50GB。我真的不想停止两台服务器进行转储,然后将它们导入另一台服务器……
这是我的奴隶身份:
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: SERVER_IP
Master_User: replicador
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 24876902
Relay_Log_File: pergamum-relay-bin.000004
Relay_Log_Pos: 714
Relay_Master_Log_File: mysql-bin.000001
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: 1032
Last_Error: Could not execute Update_rows event on table gc57125800.ate_rondas_virtuais_pontos_registro; Can't find record in 'ate_rondas_virtuais_pontos_registro', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000001, end_log_pos 905
Skip_Counter: 0
Exec_Master_Log_Pos: 546
Relay_Log_Space: 293925133
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: 1032
Last_SQL_Error: Could not execute Update_rows event on table gc57125800.ate_rondas_virtuais_pontos_registro; Can't find record in 'ate_rondas_virtuais_pontos_registro', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000001, end_log_pos 905
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: bef45e1b-99d6-11ea-a355-3e2547e4f083
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State:
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp: 200810 19:53:10
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
Master_public_key_path:
Get_master_public_key: 0
Network_Namespace:
1 row in set (0.00 sec)
更新: 我正在做错误的。我使用了从属日志文件引用,但在备份时无法获取引用。如果有人正在阅读这篇文章,并且正在为你的第一次复制而挠头,那么这篇文章指导对我很有用。
基本上,我需要对日志位置进行完整转储,这样我就可以告诉我的从属服务器从哪里开始复制。
答案1
我假设您正在使用 进行备份mysqldump
。
要启动复制过程,从属节点需要两样东西:
- 来自主数据库的最新数据库副本
- 主二进制日志中与副本状态对应的坐标
您可以--master-data
向命令添加参数mysqldump
以包含备份中的坐标设置。
以这种方式复制后,您可以在从服务器上恢复该副本,然后使用它START SLAVE
来开始复制。从服务器将从中指定的位置开始从主服务器二进制日志中读取mysqldump
并继续复制。