搜尋
首頁資料庫mysql教程淺談Mysql5.7中怎麼搭建主從複製?

Mysql5.7中怎麼搭建主從複製?以下這篇文章帶大家了解Mysql5.7中主從複製搭建步驟,希望對大家有幫助!

淺談Mysql5.7中怎麼搭建主從複製?

一、概述​​

#主從複製可以實現對資料庫備份與讀寫分離:

為了避免服務的不可用以及保障數據的安全可靠性,我們至少需要部署兩台或兩台以上伺服器來儲存資料庫數據,也就是我們需要將資料複製多份部署在多台不同的伺服器上,即使有一台伺服器發生故障了,其他伺服器依然可以繼續提供服務.
MySQL提供了主從複製功能以提高服務的可用性與資料的安全可靠性.

主從複製是指伺服器分為主伺服器和從伺服器,主伺服器負責讀取和寫,從伺服器只負責讀,主從複製也叫master/slave,master是主,slave是從,但是並沒有強制,也就是說從也可以寫,主也可以讀,只不過一般我們不會這麼做。 【相關推薦:mysql影片教學

二、主從複製架構

一主多從架構:
淺談Mysql5.7中怎麼搭建主從複製?
多主多從架構:
淺談Mysql5.7中怎麼搭建主從複製?
#主從複製原理:

  1. #當master 主伺服器上的資料改變時,則將其變更寫入二進位事件記錄檔中
  2. salve 從伺服器會在一定時間間隔內對master 主伺服器上的二進位記錄檔進行探測,探測其是否發生過改變,如果探測到master 主伺服器的二進位事件日誌發生了改變,則開始一個I/O Thread 請求master 二進位事件日誌
  3. 同時master 主伺服器為每個I/O Thread 啟動一個dump Thread,用於向其發送二進位事件日誌
  4. slave 從伺服器將接收到的二進位事件日誌保存到自己本地的中繼日誌檔案中
  5. salve 從伺服器將啟動SQL Thread 從中繼日誌讀取二進位日誌,在本機重播,使得其資料和主伺服器保持一致;
  6. 最後I/O Thread 和SQL Thread 將進入睡眠狀態,等待下一次被喚醒

三、一主多從建置

#建置環境:
1. 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

淺談Mysql5.7中怎麼搭建主從複製?
#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淺談Mysql5.7中怎麼搭建主從複製?
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;

客戶端連線測試
淺談Mysql5.7中怎麼搭建主從複製?
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;

淺談Mysql5.7中怎麼搭建主從複製?
7.测试主从复制

在主数据库中进行创建表,从库同步就算搭建成功了!
淺談Mysql5.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

更多编程相关知识,请访问:编程入门!!

以上是淺談Mysql5.7中怎麼搭建主從複製?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除
PHP实现MySQL数据库主从复制的方法PHP实现MySQL数据库主从复制的方法May 17, 2023 am 08:18 AM

随着互联网的飞速发展,Web应用程序越来越多地集成了数据库操作。MySQL作为一款世界知名的关系型数据库系统,使用广泛。在高并发的Web应用中,MySQL主从复制是一种提高数据库性能和可用性的重要方式。本文将介绍如何使用PHP实现MySQL数据库主从复制。一、什么是MySQL主从复制MySQL主从复制是指将一个MySQL数据库服务器的数据复制到另一个服务器上

构建高可用的MySQL集群:主从复制与负载均衡的最佳实践指南构建高可用的MySQL集群:主从复制与负载均衡的最佳实践指南Sep 09, 2023 am 10:57 AM

构建高可用的MySQL集群:主从复制与负载均衡的最佳实践指南近年来,随着互联网的快速发展,数据库已成为大部分Web应用的核心数据存储和处理引擎之一。在这个场景下,高可用性和负载均衡成为了数据库架构设计中的重要考虑因素。而MySQL作为最受欢迎的开源关系型数据库之一,其集群化部署方案备受关注。本文将介绍如何通过MySQL主从复制与负载均衡实现高可用的数据库集群

MySQL中的数据主从复制技术MySQL中的数据主从复制技术Jun 14, 2023 pm 02:10 PM

MySQL数据库是一种非常流行的关系型数据库管理系统,支持多种数据复制技术,其中较为常用的是主从复制技术。本文将介绍MySQL中的数据主从复制技术,包括原理、实现方法、常见问题及应对措施等方面。一、主从复制技术的原理MySQL中的主从复制技术可以将一个MySQL数据库的数据复制到其他服务器上,以实现数据备份、负载均衡、读写分离等功能。它的基本原理是将主数据库

Redis的主从复制功能详解Redis的主从复制功能详解May 11, 2023 am 10:00 AM

Redis是一个开源的基于内存的键值存储系统,常用于缓存、队列和实时数据处理等场景。在大规模应用时,为了提高Redis的可用性和性能,常常需要采用分布式架构,其中主从复制是一种常用的机制。本文将介绍Redis的主从复制功能,包括定义、原理、配置和应用场景等方面。一、定义Redis的主从复制是指将一个Redis节点(即主节点)的数据自动同步到其他节点(即从节点

如何配置MySQL数据库的主从复制?如何配置MySQL数据库的主从复制?Jul 13, 2023 pm 10:05 PM

如何配置MySQL数据库的主从复制?MySQL数据库的主从复制是一种常见的数据备份和高可用性解决方案。通过配置主从复制,可以实现将数据从一个MySQL服务器(主服务器)同步到另一个(从服务器),从而提高数据库的可用性和性能。下面将介绍如何在MySQL数据库中配置主从复制,并提供相应的代码示例。确保MySQL服务器安装并启动首先,确保你的系统中已经安装了MyS

MySQL中的主从复制和高可用架构MySQL中的主从复制和高可用架构Sep 09, 2023 pm 12:03 PM

MySQL中的主从复制和高可用架构随着互联网应用和数据量的不断增长,数据库的高可用性和可扩展性变得越来越重要。MySQL作为一种使用广泛的开源关系型数据库,提供了主从复制和高可用架构的解决方案。主从复制是指将一个MySQL数据库实例作为主库(master),并将其数据复制到一个或多个从库(slave)的过程。这种复制的方式可以实现数据的冗余备份以及读写分离,

实现数据冗余与扩展:MySQL主从复制技术在集群环境中的应用案例实现数据冗余与扩展:MySQL主从复制技术在集群环境中的应用案例Sep 08, 2023 pm 04:36 PM

实现数据冗余与扩展:MySQL主从复制技术在集群环境中的应用案例引言:随着互联网发展,数据量的不断增大和用户的不断增加,传统的单机数据库已经无法满足高并发、高可用性的需求。在这种背景下,分布式数据库成为了热门的解决方案之一。MySQL作为最常用的关系型数据库之一,其主从复制技术在分布式数据库中的应用也受到了广泛关注。本文将介绍MySQL主从复制技术在集群环境

PHP实现Memcached数据库主从复制的方法PHP实现Memcached数据库主从复制的方法May 15, 2023 pm 06:40 PM

Memcached是一个开源的高性能分布式内存对象缓存系统,可用于加快web应用程序,尤其是在大规模数据缓存方面表现良好。对于该系统而言,主从复制是一种非常重要的功能,它可以用于保证数据的可靠性和高可用性。本文将介绍如何使用PHP实现Memcached数据库主从复制。主从模式介绍主从模式是Memcached服务器的一种分布式结构,它由至少两个服务器组成:一个

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境