집 >데이터 베이스 >MySQL 튜토리얼 >Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.
Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법은 무엇입니까? 다음 글에서는 Mysql5.7-master-slave 복제를 구축하는 단계를 소개하겠습니다. 필요한 친구들이 배울 수 있습니다~
Master-slave 복제는 데이터베이스 백업 및 읽기를 실현할 수 있습니다. 쓰기 분리:
서비스 가용성을 방지하고 데이터의 보안과 신뢰성을 보장하려면 데이터베이스 데이터를 저장하기 위해 최소 두 개 이상의 서버를 배포해야 합니다. 즉, 데이터를 복사하여 서버에 배포해야 합니다. 여러 다른 서버 인터넷에서는 하나의 서버가 실패하더라도 다른 서버는 계속해서 서비스를 제공할 수 있습니다.
MySQL은 서비스 가용성과 데이터 보안 및 안정성을 향상시키기 위해 마스터-슬레이브 복제 기능을 제공합니다.
마스터-슬레이브 복제는 서버를 의미합니다. 마스터 서버와 서버에서 마스터 서버는 읽기와 쓰기를 담당하고, 슬레이브 서버는 읽기만 담당합니다. 마스터-슬레이브 복제를 마스터/슬레이브라고도 합니다. 슬레이브는 슬레이브이지만 필수는 아닙니다. 이는 슬레이브도 쓸 수 있고 마스터도 읽을 수 있다는 것을 의미하지만 일반적으로 우리는 이것을 하지 않습니다.
하나의 마스터와 다중 슬레이브 아키텍처:
다중 마스터와 다중 슬레이브 아키텍처:
마스터-슬레이브 복제 원칙:
1. Linux 버전 CentOS 릴리스 6.9(최종)
2. mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
다운로드 주소
1. mysql-5.7.26-linux-glibc2의 압축을 푼다. 12-x86_64.tar.gz1. Linux 版本 CentOS release 6.9 (Final)
2. mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
下载地址
1.解压 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
#/usr/local下解压 tar xzvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz #重命名文件 mv mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz mysql
2.创建多实例数据目录
cd /usr/local/mysql mkdir data cd data #主 mkdir 3306 #从 mkdir 3307
3.数据库初始化
#mysql 安装bin目录下执行 #initialize-insecure 表示不生成MySQL数据库root用户的随机密码,即root密码为空 #初始化3306 ./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3306 --user=mysql #初始化3307 ./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3307 --user=mysql
若出现错误执行yum install libaio-devel.x86_64
yum -y install numactl
4.创建各个数据库的配置文件my.cnf
注意:
1.建议在linux下创建文件防止windows 与 linux 编码不一致
2.不同的实例下配置要修改端口号
3.将修改好的my.cnf分别放至3306、3307文件夹内
[client] port = 3306 socket = /usr/local/mysql/data/3306/mysql.sock default-character-set=utf8 [mysqld] port = 3306 socket = /usr/local/mysql/data/3306/mysql.sock datadir = /usr/local/mysql/data/3306 log-error = /usr/local/mysql/data/3306/error.log pid-file = /usr/local/mysql/data/3306/mysql.pid character-set-server=utf8 lower_case_table_names=1 autocommit = 1 log-bin=mysql-bin server-id=3306
5.多实例启动
切换到/usr/local/mysql-5.7.24/bin目录下,使用 msyqld_safe 命令指定配置文件并启动MySQL服务:
#其中 --defaults-file 是指定配置文件,& 符合表示后台启动 ./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf & ./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &
6.数据库初始化配置
分别在各个实例内进行配置 如3306:
#客户端连接 ./mysql -uroot -p -P3306 -h127.0.0.1 #修改Mysql密码 alter user 'root'@'localhost' identified by 'root'; #授权远程访问(这样远程客户端才能访问) grant all privileges on *.* to root@'%' identified by 'root'; #刷新配置 flush privileges;
客户端连接测试
7.数据库唯一id配置
1.确定各个实例正常启动无误后进行主从配置
2.关闭实例分别在各个实例的my.cnf文件加入以下配置
#/usr/local/mysql/bin 关闭实例 ./mysqladmin -uroot -p -P3307 -h127.0.0.1 shutdown ./mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown #新加的配置 log-bin=mysql-bin #表示启用二进制日志 server-id=3307 #表示server编号,编号要唯一 建议和端口保持一致
加入完毕后启动各个实例
./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf & ./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &
7.主机设置1.在主服务器上创建复制数据的账号并授权
#在/usr/local/mysql/bin目录下执行 ./mysql -uroot -p -P3306 -h127.0.0.1 grant replication slave on *.* to 'copy'@'%' identified by 'root';
2.查看主服务器状态
# mysql主服务器默认初始值: # File:mysql-bin.000001 # Position:154 show master status;
3.如果主服务状态不是初始状态,需要重置状态
reset master;
7.从机设置
1.需要登录到 3306|3307|3308的从机客户端
#在/usr/local/mysql/bin目录下执行 多台从机‘|’分隔 ./mysql -uroot -p -P3308|3309|3310 -h127.0.0.1
2.查看从机状态
#初始状态:Empty set show slave status;
3.若不是初始状态,重置一下
stop slave; #停止复制,相当于终止从服务器上的IO和SQL线程 reset slave;
4.设置从机设置主机配置
change master to master_host='主机ip',master_user='copy', master_port=主机端口,master_password='连接主机密码', master_log_file='mysql-bin.000001',master_log_pos=154;
5.执行 开始复制命令
start slave;
6.查看从机状态
show slave status \G;🎜🎜2. 다중 인스턴스 데이터 디렉터리를 생성합니다🎜🎜
stop slave; set global sql_slave_skip_counter =1; start slave; show slave status\G;🎜🎜🎜3. 데이터베이스 초기화🎜🎜
slave-parallel-type=LOGICAL_CLOCK slave-parallel-workers=16 master_info_repository=TABLE relay_log_info_repository=TABLE relay_log_recovery=ON🎜오류가 발생하면 🎜
yum을 실행하세요. libaio-devel.x86_64 설치
🎜yum - y numactl 설치
🎜 🎜4. 각 데이터베이스에 대해 my.cnf 구성 파일을 생성합니다🎜🎜🎜참고:
🎜1. 다음을 수행하는 것이 좋습니다. Windows와 Linux 간의 코딩 불일치를 방지하기 위해 Linux에서 파일을 만듭니다.
🎜 2. 다른 인스턴스를 구성할 때 포트 번호를 수정합니다.
🎜3. 수정된 my.cnf를 3306 및 3307 폴더 각각
🎜rrreee🎜🎜5. 여러 인스턴스 시작 🎜🎜🎜 /usr/local/mysql-5.7.24/bin 디렉터리로 전환하고, msyqld_safe 명령을 사용하여 구성 파일을 지정하고 MySQL 서비스: 🎜🎜rrreee🎜🎜6. 데이터베이스 초기화 구성 🎜🎜🎜 인스턴스 내에서 3306으로 구성:
🎜rrreee🎜클라이언트 연결 테스트
🎜🎜🎜7. 데이터베이스 고유 ID 구성🎜🎜🎜1. 각 인스턴스가 정상적으로 시작되는지 확인하고 마스터-슬레이브 구성을 수행합니다
🎜 2. 인스턴스를 닫고 각 인스턴스의 my.cnf 파일에 다음 구성을 추가합니다
🎜rrreee🎜각 인스턴스 추가 후 시작🎜rrreee🎜🎜7. 호스트 설정🎜🎜1. 메인 서버에 데이터를 복제하기 위한 계정을 생성하고 권한을 부여합니다🎜rrreee🎜 2. 메인 서버 상태 확인
🎜rrreee🎜3. 메인 서비스 상태가 초기 상태가 아닌 경우 상태를 재설정해야 합니다
🎜rrreee🎜🎜7. 🎜🎜1.3306|3307|3308의 슬레이브 클라이언트에 로그인해야 합니다.
🎜rrreee🎜2.슬레이브 상태를 확인하세요
🎜rrreee🎜3. 초기 상태가 아니니 초기화
🎜rrreee🎜4. 슬레이브 설정 및 호스트 구성
🎜rrreee🎜 복사 시작 명령 실행
🎜 rrreee🎜6. 슬레이브 상태 확인
🎜show slave status \G;
7.测试主从复制
在主数据库中进行创建表,从库同步就算搭建成功了!
若你在从库进行写操作,则从服务器不再同步主库数据,在从库中执行此命令即可解决!
stop slave; set global sql_slave_skip_counter =1; start slave; show slave status\G;
若主从复制速度较慢的话,执行此命令
slave-parallel-type=LOGICAL_CLOCK slave-parallel-workers=16 master_info_repository=TABLE relay_log_info_repository=TABLE relay_log_recovery=ON
相关学习推荐:mysql教程(视频)
위 내용은 Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!