MySQL主从同步:手动操作指南(mysql主从手动同步)
MySQL主从同步,原本以及建议使用基于脚本的主从复制来实现服务器间数据同步,但在某些场景下,你也可以使用mysql 命令或自定义脚本来手动实现主从同步。
在主数据库上,首先记录一下当前binlog文件的名称和位置,例如
`shell
MYSQL> SHOW MASTER STATUS;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000010 | 107374 | | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)
`
然后,在从数据库上配置主从连接:
`shell
CHANGE MASTER TO MASTER_HOST=”,
MASTER_USER=’repluser’,
MASTER_PASSWORD=’replpass’,
MASTER_LOG_FILE=’mysql-bin.000010′,
MASTER_LOG_POS=107374;
`
其中MASTER_IP_ADDRESS表示主数据库的IP地址,MASTER_USER和MASTER_PASSWORD表示从数据库连接主库时使用的用户名和密码。MASTER_LOG_FILE和MASTER_LOG_POS用于指明更新内容从哪个位置开始,用上文的例子,从binlog的mysql-bin.000010的107374的位置开始。
最后,执行START SLAVE命令,开启同步功能,此时从数据库应该会马上开始与主数据库轮询binlog文件,从而实现数据的同步更新:
`shell
MYSQL>START SLAVE;
`
对于上述的操作,最好还是检查下,是否成功完成了完整的数据同步更新:
`shell
MYSQL> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host:
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000010
Read_Master_Log_Pos: 107374
Relay_Log_File: mysqld-relay-bin.000001
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000010
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 107374
Relay_Log_Space: 631
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: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)
`
从上述输出可以看到,`Slave_IO_Running`和`Slave_SQL_Running`字段均显示为Yes,表示同步过程已正常完成,`Seconds_Behind_Master`字段显示为0,表示主从间的延迟为0,说明主从数据已完全同步。
最后,需要注意的是,MySQL的binlog文件会随时的变化,所以执行手动同步的操作时,一定要记得及时更新binlog文件信息,以便可以正确的进行同步更新操作。