> 데이터 베이스 > MySQL 튜토리얼 > MySQL - 데이터베이스 이중 머신 상시 대기 구성 방법 및 코드 예

MySQL - 데이터베이스 이중 머신 상시 대기 구성 방법 및 코드 예

黄舟
풀어 주다: 2017-03-11 14:01:40
원래의
964명이 탐색했습니다.

MySQL 데이터베이스에는 증분 백업 메커니즘이 없습니다. 데이터 양이 너무 많으면 백업이 큰 문제가 됩니다. 다행스럽게도 MySQL 데이터베이스는 실제로 마스터 데이터베이스의 모든 데이터를 백업 데이터베이스에 동시에 쓰는 마스터-슬레이브 백업 메커니즘을 제공합니다.

1. 설명

1. MySQL 데이터베이스에는 증분 백업 메커니즘이 없습니다. 데이터 양이 너무 많으면 백업이 큰 문제가 됩니다. 다행스럽게도 MySQL 데이터베이스는 실제로 마스터 데이터베이스의 모든 데이터를 백업 데이터베이스에 동시에 쓰는 마스터-슬레이브 백업 메커니즘을 제공합니다. mysql 데이터베이스의 핫 백업을 구현합니다.
2. 이중 머신 핫 백업을 구현하려면 먼저 마스터-슬레이브 데이터베이스 서버의 버전 요구 사항을 이해해야 합니다. 상시 대기를 위해서는 MySQL 버전이 3.2 이상이어야 합니다. 또 다른 기본 원칙은 슬레이브 데이터베이스의 데이터베이스 버전이 마스터 서버 데이터베이스 버전보다 높을 수는 있지만 마스터 서버 데이터베이스 버전보다 낮을 수는 없다는 것입니다.

2. 구성

1. 메인 서버 구성

a. 버전 확인

먼저 메인 서버는 핫 스탠바이 버전을 지원합니다. 그런 다음 my.cnf(unix-like) 또는 my.ini(windows)의 mysqld 구성 블록에 log-bin(데이터베이스 변경 로그 기록)이 있는지 확인합니다. 왜냐하면 mysql의 복제 메커니즘은 로그 기반 복제 메커니즘이기 때문입니다. , 주 서버는 변경 로그에 대한 지원이 필요합니다. 그런 다음 로그를 기록할 데이터베이스와 로그를 기록하지 않을 데이터베이스를 설정합니다. 이렇게 하면 관심 있는 데이터베이스 변경 사항만 데이터베이스 로그에 기록됩니다.

server-id=1 //数据库的id这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
binlog-do-db=db_name //记录日志的数据库
binlog-ignore-db=db_name //不记录日志的数据库
로그인 후 복사

데이터베이스가 여러 개인 경우 ","를 사용하여
을 구분한 후 데이터베이스 동기화를 위한 사용자 계정을 설정하세요.

mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
로그인 후 복사

4.0.2 이전 버전은 지원하지 않습니다. REPLICATION 이 기능을 구현하려면

mysql> GRANT FILE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
로그인 후 복사

메인 서버의 구성 파일을 설정한 후 데이터베이스를 다시 시작하세요

b. 기존 데이터베이스를 백업하고 지금 백업하세요. 데이터

데이터베이스 잠그기

mysql> FLUSH TABLES WITH READ LOCK;
로그인 후 복사
로그인 후 복사

데이터베이스를 백업하는 방법은 두 가지가 있습니다. 하나는 mysql의 데이터 디렉토리에 직접 들어가는 방법과 데이터베이스를 백업하는 데 필요한 폴더를 패키지화합니다. 두 번째는 mysqldump를 사용하여 데이터베이스를 백업하되 "--master-data" 매개변수를 추가하는 것입니다. 데이터베이스를 백업하려면 첫 번째 방법을 사용하는 것이 좋습니다.
c . 마스터 서버의 상태를 확인하세요

mysql> show master status\G;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
로그인 후 복사

나중에 사용할 수 있도록 파일 및 위치 항목의 값을 기록해 두세요.
d. 그런 다음 데이터베이스 잠금을 설정하세요

rree

4. 슬레이브 서버 구성

a. 먼저 데이터베이스 구성 파일을 설정
mysql> UNLOCK TABLES;
로그인 후 복사
b. 마스터 데이터베이스 서버에서 백업한 데이터베이스를 슬레이브 서버로 가져오기
c. 슬레이브 서버 Database

를 시작하고 슬레이브 데이터베이스 서버를 시작합니다. 시작할 때 "--skip-slave-start" 매개변수를 추가하지 않으면 mysql

server-id=n //设置数据库id默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。
master-host=db-master.mycompany.com //主服务器的IP地址或者域名
master-port=3306 //主数据库的端口号
master-user=pertinax //同步数据库的用户
master-password=freitag //同步数据库的密码
master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差
report-host=db-slave.mycompany.com //报告错误的服务器
로그인 후 복사
로 들어갑니다. d. 서버의 다양한 매개변수
mysql> slave stop; //停止slave的服务
로그인 후 복사
를 설정합니다. e. 데이터베이스 동기화를 위한 스레드를 시작합니다.
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服务器的IP地址
-> MASTER_PORT=3306, //主服务器端口
-> MASTER_USER='replication_user_name', //同步数据库的用户
-> MASTER_PASSWORD='replication_password', //同步数据库的密码
-> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
로그인 후 복사

데이터베이스의 동기화를 확인합니다. 동기화가 성공했다면 축하합니다!
마스터 및 슬레이브 서버 상태 확인

rree

3. 로그 지우기

로그가 너무 큰 경우 로그를 지우는 방법은 다음과 같습니다.

1. 마스터 데이터베이스 잠금

mysql> slave start;
로그인 후 복사

2. 데이터베이스에서 슬레이브 중지

mysql> SHOW PROCESSLIST\G //可以查看mysql的进程看看是否有监听的进程
로그인 후 복사

3. 메인 데이터베이스의 로그 파일 이름과 위치를 확인합니다. 로그 파일

mysql> FLUSH TABLES WITH READ LOCK;
로그인 후 복사
로그인 후 복사

4. 메인 데이터베이스 잠금 해제

mysql> slave stop;
로그인 후 복사

5. 슬레이브 데이터베이스의 마스터 데이터베이스 정보 업데이트

show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| louis-bin.001 | 79 | | mysql |
+---------------+----------+--------------+------------------+
로그인 후 복사

6. 데이터베이스

아아아

위 내용은 MySQL - 데이터베이스 이중 머신 상시 대기 구성 방법 및 코드 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿