>  기사  >  데이터 베이스  >  MySQL 마스터-슬레이브 구성에 대한 자세한 설명

MySQL 마스터-슬레이브 구성에 대한 자세한 설명

藏色散人
藏色散人앞으로
2020-03-13 08:51:302752검색

● 새 프로젝트에 보안을 제공하기 위해 클라우드 데이터를 구매할 계획이었습니다. Alibaba Cloud와 Tencent Cloud가 원을 그리며 돌아 왔는데 두 단어가 너무 비쌉니다. 데이터만 백업해 놓는 게 아닌가요? 그렇다면 제가 직접 백업하는 게 낫겠죠?

● 집에 라즈베리파이가 2개 있고 거기에 mysql을 직접 백업해 두면 인터넷에 튜토리얼이 있으니 여기서부터 시작하겠습니다. 나는 Segmentfault mysql에 대한 여러 기사를 검색하고 그들이 말한 내용을 따랐습니다. 물론 성공했다면 이 기사를 작성하지 않았을 것입니다. 추신: 그들의 튜토리얼은 모두 정확합니다.

● 방금 본 튜토리얼이므로 마스터 및 슬레이브 서버 구성을 시작하겠습니다.

1. 마스터 설정(master)

mysql 구성 파일을 수정합니다. 일반적으로 /etc/mysql/my.conf

server-id=1 //设置mysql的id标识
log-bin=/var/lib/mysql/mysql-bin  //log-bin的日志文件,主从备份就是用这个日志记录来实现的
#binlog-do-db=mysql1 #需要备份的数据库名,如果备份多个数据库,重复设置这个选项 即可
#binlog-ignore-db=mysql2 #不需要备份的数据库名,如果备份多个数据库,重复设置这 个选项即可
#log-slave-updates=1 #这个参数当从库又作为其他从库的主库时一定要加上,否则不会给更新的记录写到binglog里二进制文件里
#slave-skip-errors=1 #是跳过错误,继续执行复制操作(可选)

기본 mysql에서 동기화를 위해 2개의 계정을 추가합니다

mysql>grant replication slave on *.* to 'sync-1'@'%' identified by '123456';
mysql>grant replication slave on *.* to 'sync-2'@'%' identified by '123456';

msql을 다시 시작합니다

mysql>show master status; //可以查看主mysql状态

2. 설정(슬레이브)

의 mysql 구성 파일 my.conf 두 슬레이브 노드는 동일한 방식으로 구성됩니다.

server-id=2
#log-bin=/var/lib/mysql/mysql-bi //从mysql可以不用设置日志文件

슬레이브 mysql에 master_log_file, master_log_pos 명령 매개변수를 추가합니다. 이는 show master status를 사용하여 마스터 mysql에서 쿼리할 수 있습니다.

mysql>change master to master_host='192.168.145.222',master_user='sync-1',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=308;  
mysql>start slave //启动
mysql>show slave status\G //查询状态,Slave_IO_Running 和Slave_IO_Running都为yes表示成功

3 설정 문제

Last_Errno: 1146

슬레이브를 설정할 때 내 마스터 mysql이 있습니다. 은 이미 테이블인데 테이블 생성 당시 binlog 바이너리 로그에 기록이 없습니다. 이때 슬레이브 mysql은 데이터를 쓸 수 없습니다. 그 이유는 데이터베이스 파일을 수동으로 import하는 것뿐입니다. 온라인 튜토리얼은 새로 설치된 마스터 msql과 슬레이브 mysql에 관한 것이므로 기존 데이터에는 문제가 없습니다.

Last_Errno: 1062
Error 'Duplicate entry 'xxxxx' for key 'PRIMARY'' on query

기본 키 충돌. 이 문제는 테이블 설정이 잘못되었기 때문에 발생합니다. 나중에 Stack Overflow

# on slave
mysql> stop slave;
mysql> flush privileges;
# on master rest master
mysql> reset master;
# on slave;
mysql> reset slave;
mysql> start slave;

추천 mysql 비디오 튜토리얼에서 이 문제에 대한 해결책을 찾았습니다. 주소: https:/ /www.php.cn /course/list/51.html

위 내용은 MySQL 마스터-슬레이브 구성에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제