共計 3886 個字符,預計需要花費 10 分鐘才能閱讀完成。
這篇文章主要為大家展示了“在 Mysql5.7 中如何搭建主從復制”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領大家一起研究并學習一下“在 Mysql5.7 中如何搭建主從復制”這篇文章吧。
一、概述
主從復制可以實現對數據庫備份和讀寫分離:
為了避免服務的不可用以及保障數據的安全可靠性,我們至少需要部署兩臺或兩臺以上服務器來存儲數據庫數據,也就是我們需要將數據復制多份部署在多臺不同的服務器上,即使有一臺服務器出現故障了,其他服務器依然可以繼續提供服務.
MySQL 提供了主從復制功能以提高服務的可用性與數據的安全可靠性.
主從復制是指服務器分為主服務器和從服務器,主服務器負責讀和寫,從服務器只負責讀,主從復制也叫 master/slave,master 是主,slave 是從,但是并沒有強制,也就是說從也可以寫,主也可以讀,只不過一般我們不這么做。
二、主從復制架構
一主多從架構:
多主多從架構:
主從復制原理:
當 master 主服務器上的數據發生改變時,則將其改變寫入二進制事件日志文件中
salve 從服務器會在一定時間間隔內對 master 主服務器上的二進制日志進行探測,探測其是否發生過改變,如果探測到 master 主服務器的二進制事件日志發生了改變,則開始一個 I/O Thread 請求 master 二進制事件日志
同時 master 主服務器為每個 I/O Thread 啟動一個 dump Thread,用于向其發送二進制事件日志
slave 從服務器將接收到的二進制事件日志保存至自己本地的中繼日志文件中
salve 從服務器將啟動 SQL Thread 從中繼日志中讀取二進制日志,在本地重放,使得其數據和主服務器保持一致;
最后 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
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 -h227.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 -h227.0.0.1 shutdown
./mysqladmin -uroot -p -P3306 -h227.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 -h227.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 -h227.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;
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 中如何搭建主從復制”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!