最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL主從級聯(lián)復(fù)制詳解(一主一從一級聯(lián))

 更新時間:2025年08月14日 11:00:38   作者:大新屋  
本文介紹三臺MySQL服務(wù)器主從復(fù)制配置流程:主庫設(shè)置server_id、log_bin并創(chuàng)建復(fù)制用戶,備份數(shù)據(jù)后同步至從庫slave01;slave01再作為主庫同步至級聯(lián)從庫slave02,均需鎖表確保數(shù)據(jù)一致性,最后通過測試驗證同步狀態(tài)

提示:三臺MySQL數(shù)據(jù)庫已安裝完成,本教程不講解MySQL數(shù)據(jù)庫安裝。

主機規(guī)劃

主機類型主機名稱主機IP操作系統(tǒng)版本MySQL版本備注
MySQL主庫master192.168.91.61CentOS 7.9MySQL 8.0.28
MySQL從庫slave01192.168.91.62CentOS 7.9MySQL 8.0.28
MySQL級聯(lián)從庫slave02192.168.91.63CentOS 7.9MySQL 8.0.28

一、Master主庫配置

1、主庫配置MySQL數(shù)據(jù)庫配置文件,添加server_id和log_bin參數(shù)即可開啟主從復(fù)制的主庫功能

[root@master ~]# vim /etc/my.cnf
[client]
socket=/usr/local/mysql/data/mysql.sock

[mysqld]
### 開啟主從復(fù)制功能并指定二進制日志存放路徑,指定的server_id不能與其它從庫的server_id重復(fù)
server_id=10
log_bin=/usr/local/mysql/logs/mysql-bin
### 設(shè)置自動清除binlog二進制日志,保留最近7天bin-log日志,默認(rèn)保留最近30天,單位秒
binlog_expire_logs_seconds=604800

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
mysqlx_socket=/usr/local/mysql/data/mysqlx.sock
pid_file=/usr/local/mysql/data/mysqld.pid
log_error=/usr/local/mysql/logs/error.log
log-bin=/usr/local/mysql/logs/mysql.bin
character-set-server=utf8mb4

max_connections=500
max_connect_errors=1000
port=3306
mysqlx_port=33060

2、重啟主庫MySQL數(shù)據(jù)庫

/etc/init.d/mysqld stop
/etc/init.d/mysqld start

3、主庫創(chuàng)建主從復(fù)制驗證用戶

mysql -uroot -p'123456'

create user 'sync'@'%' identified with 'mysql_native_password' by '123456';
grant replication slave on *.* to 'sync'@'%';
flush privileges;

4、主庫查看當(dāng)前二進制日志文件名和位置

注意:查看主庫二進制日志文件名和位置之前,需要把主庫MySQL數(shù)據(jù)庫進行鎖表,防止有寫入操作,以免影響二進制日志文件名和位置的同步信息

mysql -uroot -p'123456'

mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql.000001
         Position: 157
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

5、主庫備份數(shù)據(jù)庫并遠(yuǎn)程復(fù)制一份給salve01從庫

注意:如果MySQL數(shù)據(jù)庫過大,可以考慮使用物理備份XtraBackup工具。

mysqldump -uroot -p'123456' -A >/mnt/mysql_bak.sql

scp -rp /mnt/mysql_bak.sql root@192.168.91.62:/mnt/

二、Slave01從庫配置

1、slave01從庫配置MySQL數(shù)據(jù)庫配置文件,添加log_bin、relay_log、relay_log_index、log_replica_updates參數(shù)

[root@slave01 ~]# cat /etc/my.cnf 
[client]
socket=/usr/local/mysql/data/mysql.sock

[mysqld]
### 開啟主從復(fù)制功能并指定二進制日志存放路徑,指定的server_id不能與其它主庫或從庫的server_id重復(fù)
server_id=20
log_bin=/usr/local/mysql/logs/mysql-bin
### 設(shè)置自動清除binlog二進制日志,保留最近7天bin-log日志,默認(rèn)保留最近30天,單位秒
binlog_expire_logs_seconds=604800
### 開啟從庫記錄中繼日志功能,命名方式(主機名稱-relay-bin),命名可自定義,默認(rèn)開啟
#relay_log=/usr/local/mysql/logs/slave01-relay-bin
#relay_log_index=/usr/local/mysql/logs/slave01-relay-bin.index
### 啟動副本更新,從庫從主庫接收到log-bin更新操作由從庫SQL線程執(zhí)行更新寫入到從庫自己的log-bin日志中,默認(rèn)開啟
#log_replica_updates=1
#### 設(shè)置只允許普通用戶寫入,只針對普通用戶有效(擁有insert、update、delete、drop等權(quán)限),但對于超級用戶無效(管理員root或者all privileges所有權(quán)限用戶),默認(rèn)關(guān)閉
read_only=1
#### 設(shè)置是否禁止超級管理員寫入,針對所有數(shù)據(jù)庫用戶,包括超級用戶和普通用戶,默認(rèn)關(guān)閉
super_read_only=1

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
mysqlx_socket=/usr/local/mysql/data/mysqlx.sock
pid_file=/usr/local/mysql/data/mysqld.pid
log_error=/usr/local/mysql/logs/error.log
log-bin=/usr/local/mysql/logs/mysql.bin
character-set-server=utf8mb4

max_connections=500
max_connect_errors=1000
port=3306
mysqlx_port=33060

2、slave01從庫導(dǎo)入master主庫的備份庫文件并重啟MySQL數(shù)據(jù)庫

mysql -uroot -p'123456'
mysql>source /mnt/mysql_bak.sql

/etc/init.d/mysqld stop
/etc/init.d/mysqld start

3、開啟slave01從庫同步master主庫

mysql -uroot -p'123456'

CHANGE MASTER TO
MASTER_HOST='192.168.91.61',
MASTER_PORT=3306,
MASTER_USER='sync',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql.000001',
MASTER_LOG_POS=157;

mysql> start slave;

mysql> show slave status\G;

4、slave01從庫查看當(dāng)前二進制日志文件名和位置

注意:查看slave01從庫二進制日志文件名和位置之前,需要把slave01從庫MySQL數(shù)據(jù)庫鎖表,防止有寫入操作,以免影響二進制日志文件名和位置的同步信息

mysql -uroot -p'123456'

mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql.000002
         Position: 157
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 

5、slave01從庫備份數(shù)據(jù)庫并遠(yuǎn)程復(fù)制一份給salve02級聯(lián)從庫

注意:如果MySQL數(shù)據(jù)庫過大,可以考慮使用物理備份XtraBackup工具。

mysqldump -uroot -p'123456' -A >/mnt/mysql_slave_bak.sql

scp -rp /mnt/mysql_slave_bak.sql root@192.168.91.63:/mnt/

三、Slave02級聯(lián)從庫配置

1、slave01從庫配置MySQL數(shù)據(jù)庫配置文件,添加log_bin、relay_log、relay_log_index、log_replica_updates參數(shù)

[root@slave01 ~]# cat /etc/my.cnf 
[client]
socket=/usr/local/mysql/data/mysql.sock

[mysqld]
### 開啟主從復(fù)制功能并指定二進制日志存放路徑,指定的server_id不能與其它主庫或從庫的server_id重復(fù)
server_id=30
log_bin=/usr/local/mysql/logs/mysql-bin
### 設(shè)置自動清除binlog二進制日志,保留最近7天bin-log日志,默認(rèn)保留最近30天,單位秒
binlog_expire_logs_seconds=604800
### 開啟從庫記錄中繼日志功能,命名方式(主機名稱-relay-bin),命名可自定義,默認(rèn)開啟
#relay_log=/usr/local/mysql/logs/slave01-relay-bin
#relay_log_index=/usr/local/mysql/logs/slave01-relay-bin.index
### 啟動副本更新,從庫從主庫接收到log-bin更新操作由從庫SQL線程執(zhí)行更新寫入到從庫自己的log-bin日志中,默認(rèn)開啟
#log_replica_updates=1
#### 設(shè)置只允許普通用戶寫入,只針對普通用戶有效(擁有insert、update、delete、drop等權(quán)限),但對于超級用戶無效(管理員root或者all privileges所有權(quán)限用戶),默認(rèn)關(guān)閉
read_only=1
#### 設(shè)置是否禁止超級管理員寫入,針對所有數(shù)據(jù)庫用戶,包括超級用戶和普通用戶,默認(rèn)關(guān)閉
super_read_only=1

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
mysqlx_socket=/usr/local/mysql/data/mysqlx.sock
pid_file=/usr/local/mysql/data/mysqld.pid
log_error=/usr/local/mysql/logs/error.log
log-bin=/usr/local/mysql/logs/mysql.bin
character-set-server=utf8mb4

max_connections=500
max_connect_errors=1000
port=3306
mysqlx_port=33060

2、slave02級聯(lián)從庫導(dǎo)入slave01從庫的備份庫文件并重啟MySQL數(shù)據(jù)庫

mysql -uroot -p'123456'
mysql> source /mnt/mysql_slave_bak.sql

/etc/init.d/mysqld stop
/etc/init.d/mysqld start

3、開啟slave01從庫同步master主庫

mysql -uroot -p'123456'

CHANGE MASTER TO
MASTER_HOST='192.168.91.62',
MASTER_PORT=3306,
MASTER_USER='sync',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql.000002',
MASTER_LOG_POS=157;

mysql> start slave;

mysql> show slave status\G;

四、測試

1、master主庫創(chuàng)建測試數(shù)據(jù),查看slave01從庫同步狀態(tài),查看slave02級聯(lián)從庫同步狀態(tài)

### master主庫寫入測試數(shù)據(jù)
mysql -uroot -p'123456'

create database student;
create table student.test (id int(11),name varchar(25));
insert into student.test values(1,'xiaoming');
insert into student.test values(2,'zhangshang');
insert into student.test values(3,'lishi');
select * from student.test;

### slave01從庫查看主從同步狀態(tài)
mysql -uroot -p'123456'
select * from student.test;
show slave status\G;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

### slave02級聯(lián)從庫查看主從同步狀態(tài)
mysql -uroot -p'123456'
select * from student.test;
show slave status\G;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

2、master主庫大批量寫入測試數(shù)據(jù),查看slave01從庫同步狀態(tài),查看slave02級聯(lián)從庫同步狀態(tài)

### master主庫在操作系統(tǒng)使用shell批量寫入測試數(shù)據(jù)
for i in {4..1000}; do mysql -uroot -p'123456' -e "insert into student.test(id,name) values('$i','AAA');";done

### slave01從庫查看主從同步狀態(tài)
mysql -uroot -p'123456'
mysql> select * from student.test;
mysql> show slave status\G;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

### slave02級聯(lián)從庫查看主從同步狀態(tài)
mysql -uroot -p'123456'
mysql> select * from student.test;
mysql> show slave status\G;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

旺苍县| 上饶市| 山西省| 晋江市| 阿拉尔市| 淮北市| 绿春县| 商河县| 聂荣县| 昭平县| 大余县| 崇阳县| 南京市| 邻水| 乌兰浩特市| 都匀市| 灵璧县| 上犹县| 汉寿县| 怀化市| 太原市| 天祝| 古交市| 陈巴尔虎旗| 昌江| 铁岭市| 南昌县| 如东县| 房产| 太谷县| 绥中县| 大厂| 榕江县| 丰都县| 三明市| 达日县| 五寨县| 洛隆县| 禹州市| 邯郸县| 南郑县|