更新時間:2020-08-07 11:39:36 來源:動力節點 瀏覽1684次
相信有些初學java的小伙伴對mysql主從復制搭建步驟還不是很了解,下面就由動力節點java培訓學校的小編就來告訴大家該如何做。
環境:
linux64位,一臺機器兩個實例,主庫3306端口,從庫3307端口
步驟:
一、下載安裝
先下載安裝mysql,這里使用了5.7.21版本,具體過程不做詳細說明,可自行查資料如何下載
二、配置
1.master配置,/etc/my.cnf文件入下
[mysqld]
port=3306
server-id=1
basedir=/home/shared_disk/mysql-5.7.21
datadir=/home/shared_disk/mysql-5.7.21/data
socket=/home/shared_disk/mysql-5.7.21/data/mysql.sock
symbolic-links=0
log-error=/home/shared_disk/mysql-5.7.21/data/error.log
pid-file=/home/shared_disk/mysql-5.7.21/data/mysql.pid
#skip-grant-tables
#開啟gtid模式,global transaction identified
gtid-mode=on
#保證gtid強一致性
enforce-gtid-consistency=1
#slave記錄binlog,否則slave執行完relay log后就刪了,找不到slave的執行記錄
log_slave_updates
#按行記錄binlog
binlog_format=row
#binlog文件名
log-bin=/home/shared_disk/mysql_datadir/mysql-bin
#需要記錄binlog的數據庫,即需要同步的數據庫,同步是通過binlog實現的
binlog-do-db=allen
#不需要記錄binlog的數據庫
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
其中紅色部分是主從同步必須的配置
2.啟動主庫,安裝到系統服務的直接service命令啟動即可,沒安裝的運行mysqld --defaults-file=/etc/my.cnf --user=mysql &
3.登錄主庫,創建主從復制的賬號
create user 'sync'@'localhost' identified by 'sync';
給賬號授權
grant file,replication slave on *.* to 'sync'@'localhost' identified by 'sync';
4.slave配置
配置文件/etc/my-slave.cnf入下
[mysqld]
port=3307
server-id=2
basedir=/home/shared_disk/mysql-slave
datadir=/home/shared_disk/mysql-slave/data
socket=/home/shared_disk/mysql-slave/data/mysql.sock
symbolic-links=0
log-error=/home/shared_disk/mysql-slave/data/error.log
pid-file=/home/shared_disk/mysql-slave/data/mysql.pid
#skip-grant-tables
gtid-mode=on
enforce-gtid-consistency=1
log_slave_updates
binlog_format=row
log-bin=/home/shared_disk/mysql_datadir/mysql-bin
#從庫啟動時跳過自動啟動slave這一步
skip_slave_start=1
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
5.啟動從庫,service命令或mysqld --defaults-file=/etc/my-slave.cnf --user=mysql &
啟動后登錄進去,執行
stop slave;
change master to master_host='locahost',master_port=3306,master_user='sync',master_password='sync',master_auto_position=1;
start slave;
show slave status\G;
看到以下兩個YES即說明主從已經搭建成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
PS:
當slave遇到問題時候,我們可以show slave status\G;看到同步情況
Retrieved_Gtid_Set: 9461bcc7-4850-11e8-a9f7-525400045eeb:1-7
Executed_Gtid_Set: 4f7a4829-9a29-11e8-aa21-525400045eeb:1-5,9461bcc7-4850-11e8-a9f7-525400045eeb:1-7。
其中9461bcc7-4850-11e8-a9f7-525400045eeb是主庫的mysql實例唯一id,4f7a4829-9a29-11e8-aa21-525400045eeb是從庫的mysql實例唯一id,
Retrieved_Gtid_Set和Executed_Gtid_Set分別為已接收的和已執行的gtid,已執行的gtid中有一個和Retrieved_Gtid一樣的,表明是執行了從主庫同步過來的事務,另一個則是本機自己執行的事務。
假設現在Executed_Gtid_Set如下:
Executed_Gtid_Set: 4f7a4829-9a29-11e8-aa21-525400045eeb:1-5,9461bcc7-4850-11e8-a9f7-525400045eeb:1-3
我們可以看到同步的gtid從4之后就沒執行了,應該是遇到錯誤了導致slave停止了,我們可以用以下操作跳過第四個gtid,讓slave繼續工作
stop slave;
set gtid_next='9461bcc7-4850-11e8-a9f7-525400045eeb:4';
begin;
commit;
set gtid_next='automatic';
start slave;
show slave status\G;
原理就是讓下一個事務指到第四個,然后begin接著commit,中間為空實現,讓slave以為這個事務執行成功了。
三、驗證
主庫建表,插入數據,去從庫看是否存在相同數據。
從庫使用show slave status\G;命令查看Retrieved_Gtid_Set和Executed_Gtid_Set。
以上就是動力節點java培訓學校的小編針對“mysql主從復制搭建步驟”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習