
이것이 나의 첫 번째 질문이고 영어는 나의 모국어가 아니지만 설명하려고 노력할 것입니다.
저는 공급자 인프라에서 실행되는 공용 IP 주소가 있는 마스터 MySQL 서버를 가지고 있으며 테스트 목적으로 모든 데이터를 복제할 로컬 MySQL 슬레이브 서버를 사무실에서 실행하고 싶습니다.
복제 설정은 완벽하게 작동합니다. 슬레이브가 마스터에서 binlog를 읽도록 SSH 터널을 만들었습니다. 여기서는 모든 것이 정상입니다.
내 문제는 마스터에서 데이터를 설정하는 것입니다. 일반적으로 마스터에서 동일한 네트워크의 슬레이브로 데이터를 로드하려면 마스터에서 다음 명령을 실행합니다.
mysqldump 'master' --master-data=1 | mysql 'slave'
하지만 여기서 슬레이브에 대한 IP는 일련의 NAT 라우터 뒤에 있는 내 사무실에 있기 때문에 얻을 수 없습니다.
마스터를 중지할 수 없고 마스터에 약 50GB의 데이터가 있다는 것을 아는 사람이 솔루션을 가지고 있습니까? 마스터에서 슬레이브로 '핫' 데이터 전송을 수행하는 다른 솔루션이 있다면 매우 관심이 있습니다.
미리 감사드립니다.
답변1
슬레이브에서 마스터로 SSH를 통해 연결할 수 있다고 가정하면 어떨까요?
ssh master 'mysqldump \'master\' --master-data=1' | mysql 'slave'
그러면 마스터에서 dump 명령이 실행되지만 로컬로 다시 로드됩니다.
답변2
scp
왜 그것을 aan 파일로 전달하고 나중에 또는 로 전송하지 않습니까 rsync
?
mysqldump master --master-data=1 >master.dump
노예에
mysql <master.dump
mysqldump
또는 마스터가 아닌 슬레이브에서 명령을 실행하십시오 . 어쩌면 위의 오류 없이 더 잘 작동할 수도 있습니다.
힌트: 데이터베이스 하나만 덤프하는 것이 아니라 모든 데이터베이스를 덤프해야 할까요?