MySQL8.0主從複製

MELF曉宇發表於2020-12-18

安裝MySQL8.0

更新軟體源

yum update -y

安裝wget

yum -y install wget

檢測系統是否自帶安裝 MySQL:

rpm -qa | grep mysql

如果你係統有安裝,那可以選擇進行解除安裝:

// 普通刪除模式
rpm -e mysql  
// 強力刪除模式,如果使用上面命令刪除時,提示有依賴的其它檔案,則用該命令可以對其進行強力刪除
rpm -e --nodeps mysql  

安裝MySQL

在https://dev.mysql.com/downloads/repo/yum/檢視最新yum源

wget http://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql80-community-release-el7-3.noarch.rpm 
yum -y install mysql-community-server

啟動 MySQL

systemctl start mysqld

設定MySQL開機自啟

systemctl enable mysqld

檢視MySQL密碼

grep 'password' /var/log/mysqld.log

2020-11-13T14:27:04.783981Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 23>,)uov0cFz

檢視防火牆狀態

firewall-cmd --state

啟動防火牆

systemctl start firewalld      

開機自啟防火牆

systemctl enable firewalld

開啟3306埠

firewall-cmd --zone=public --add-port=3306/tcp --permanent

重啟防火牆

systemctl restart firewalld.service

查詢3306埠是否開放

firewall-cmd --zone=public --query-port=3306/tcp

進入資料庫

mysql -u root -p

輸入密碼

23>,)uov0cFz

修改密碼

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root123@';

進入user庫

mysql> use mysql;

檢視使用者及許可權

mysql> select host, user from user;

將root使用者設定允許外網訪問

mysql> update user set host = '%' where user = 'root';

重新整理配置

flush privileges;

配置主從同步

主庫

修改主節點配置檔案

vim /etc/my.cnf
log-bin=mysql-bin
server-id=1

gtid_mode=ON
enforce_gtid_consistency=1   

重啟mysql

systemctl restart mysqld
mysql -u root -p

Root123@

建立一個專門用於複製資料的使用者

mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'Repl123@';

使用者名稱:repl
主機:使用萬用字元%,允許任意遠端主機登陸
密碼:Repl123@

對repl使用者進行授權

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

從庫

測試使用者有效性

mysql -urepl -p'Repl123@' -h192.168.12.128
vim /etc/my.cnf
server-id=2
gtid_mode=ON
enforce_gtid_consistency=1

master-info-repository=TABLE
relay-log-info-repository=TABLE

重啟mysql

systemctl restart mysqld
mysql -u root -p

Root123@

主庫

檢視二進位制日誌名稱

mysql> show master status \G

從庫

在從伺服器配置連線到主伺服器

mysql> CHANGE MASTER TO
MASTER_HOST='192.168.12.128',
MASTER_USER='repl',
MASTER_PASSWORD='Repl123@',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=0;

mysql> start slave;

設定 從伺服器只讀狀態

檢視當前只讀的狀態

mysql> SHOW VARIABLES LIKE '%read_only%';

設定普通使用者只讀

mysql> SET GLOBAL read_only=1;

設定超級使用者只讀

mysql> SET GLOBAL super_read_only=1;

停止目前正在執行復制鏈路

mysql> stop slave;

配置併發執行緒的方式

mysql> set global slave_parallel_type = "logical_clock";

配置併發數量

mysql> set global slave_parallel_workers = 4;

啟動從伺服器的複製鏈路

mysql> start slave

相關文章