이 글은 주로 Docker 기반의 Mysql 마스터-슬레이브 복제를 공유하는데, 도움이 되길 바랍니다.
환경 소개
Master 서버: JD Cloud CentOS
Slave 서버: Vultr Cloud CentOS
Mysql 실행에는 Docker를 사용합니다.
docker run --name mysql-server-01 -p 3306:3306 -v "$PWD"/conf.d:/etc/mysql/conf.d -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
로그인 후 복사
Configure Master
편의상 master 데이터베이스를 운영하기 위한 특별한 디렉터리를 생성합니다. 구조는 다음과 같습니다
mysql └── server01 ├── conf.d ├── data └── start.sh
로그인 후 복사
[mysqld]log-bin=mysql-binserver-id=1innodb_flush_log_at_trx_commit=1sync_binlog=1
로그인 후 복사
시작 후, mysql을 구동할 컨테이너에 들어가세요
# 进入容器 docker exec -it 容器ID bash # 进入msyql客户端 mysql -u root -p # 新建salve用户并配置权限,格式如下 mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com'; # 查看master状态,这里file和position后面配置salve会用到mysql> show master status; +------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+| mysql-bin.000001 | 1092 | | | | +------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)
로그인 후 복사
slave my.cnf 구성 파일은 다음과 같습니다. 프로덕션 환경):
[mysqld]server-id=2
로그인 후 복사
# 配置master到slave mysql> CHANGE MASTER TO -> MASTER_HOST='master_host_name', -> MASTER_USER='replication_user_name', -> MASTER_PASSWORD='replication_password', -> MASTER_LOG_FILE='recorded_log_file_name', -> MASTER_LOG_POS=recorded_log_position;
로그인 후 복사
START SLAVE;
로그인 후 복사
MySQL5.7.18 마스터-슬레이브 복제를 위한 마스터-슬레이브 인스턴스 설정에 대한 자세한 설명
- Mycat MySQL 마스터에서 읽기-쓰기 분리 복사를 기반으로 구현된 예제