MySQL 데이터베이스에는 증분 백업 메커니즘이 없습니다. 데이터 양이 너무 많으면 백업이 큰 문제가 됩니다. 다행스럽게도 MySQL 데이터베이스는 실제로 마스터 데이터베이스의 모든 데이터를 백업 데이터베이스에 동시에 쓰는 마스터-슬레이브 백업 메커니즘을 제공합니다.
1. MySQL 데이터베이스에는 증분 백업 메커니즘이 없습니다. 데이터 양이 너무 많으면 백업이 큰 문제가 됩니다. 다행스럽게도 MySQL 데이터베이스는 실제로 마스터 데이터베이스의 모든 데이터를 백업 데이터베이스에 동시에 쓰는 마스터-슬레이브 백업 메커니즘을 제공합니다. mysql 데이터베이스의 핫 백업을 구현합니다.
2. 이중 머신 핫 백업을 구현하려면 먼저 마스터-슬레이브 데이터베이스 서버의 버전 요구 사항을 이해해야 합니다. 상시 대기를 위해서는 MySQL 버전이 3.2 이상이어야 합니다. 또 다른 기본 원칙은 슬레이브 데이터베이스의 데이터베이스 버전이 마스터 서버 데이터베이스 버전보다 높을 수는 있지만 마스터 서버 데이터베이스 버전보다 낮을 수는 없다는 것입니다.
먼저 메인 서버는 핫 스탠바이 버전을 지원합니다. 그런 다음 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';
메인 서버의 구성 파일을 설정한 후 데이터베이스를 다시 시작하세요
데이터베이스 잠그기
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. 그런 다음 데이터베이스 잠금을 설정하세요
mysql> UNLOCK TABLES;
를 시작하고 슬레이브 데이터베이스 서버를 시작합니다. 시작할 때 "--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 //报告错误的服务器
mysql> slave stop; //停止slave的服务
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; //日志文件的开始位置(前面要求记住的参数)
데이터베이스의 동기화를 확인합니다. 동기화가 성공했다면 축하합니다!
마스터 및 슬레이브 서버 상태 확인
로그가 너무 큰 경우 로그를 지우는 방법은 다음과 같습니다.
mysql> slave start;
mysql> SHOW PROCESSLIST\G //可以查看mysql的进程看看是否有监听的进程
mysql> FLUSH TABLES WITH READ LOCK;
mysql> slave stop;
show master status; +---------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +---------------+----------+--------------+------------------+ | louis-bin.001 | 79 | | mysql | +---------------+----------+--------------+------------------+
위 내용은 MySQL - 데이터베이스 이중 머신 상시 대기 구성 방법 및 코드 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!