我正在尝试设置一个复制从属服务器。
我希望如果我在从属服务器上将binlog位置设置为0,它就会从0开始读取,并从头开始复制所有内容,直到它与主服务器匹配,但从属服务器什么都不做,也不会出错。
所以我首先需要一个当前的数据库快照。如果两台服务器都可以在本地网络上相互通信,那么我可以在不将数据库转储到文件中的情况下做到这一点吗?我尝试了这个命令,但它只是吐出了用法帮助:
slave ~$ sudo mysqlimport --host='[master-server-ip]' --user='repl' -pC
重申一下,我想通过网络传输所有数据库(除了内置的mysql数据库(,而不必手动传输文件。
您可以使用0作为binlog位置,但也必须指定日志文件。
您可以在MySQL数据目录中看到第一个binlog文件的名称(在unix上通常是/var/lib/mysql
(。
然后在从属服务器上尝试这样的操作:
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='...',
MASTER_PORT=3306,
MASTER_USER='...',
MASTER_PASSWORD='...',
MASTER_LOG_FILE='<your first binlog file>',
MASTER_LOG_POS=0;
START SLAVE;
当然,如果所有binlog都仍然存在于主服务器上,因为它已经创建,这可能不是你的情况,因为binlog会在一段时间后自动清理。