CentOS7 mysql8.x 配置讀寫分離、主從複製

一、安裝好mysql,並能成功啓動

二、配置新數據庫的主從複製

1、修改主庫配置文件    注意!注意!注意!:配置文件一定要保存成ASNI存儲方式,不然會報錯

vim /etc/my.cnf

#主服務器唯一ID
server-id=1
#啓用二進制日誌
log-bin=mysql-bin
# 設置不要複製的數據庫(可設置多個)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#設置需要複製的數據庫
binlog-do-db=mycatdb #需要複製的主數據庫名字
#設置logbin格式
binlog_format=STATEMENT

2、修改從庫配置文件

vim /etc/my.cnf

#從服務器唯一ID
server-id=2
#啓用中繼日誌
relay-log=mysql-relay

log-bin=mysql-bin #從庫會基於此log-bin來做複製
replicate-do-db=mycatdb #用於讀寫分離的具體數據庫

#設置logbin格式
binlog_format=STATEMENT

3、配置主數據庫

開啓主數據庫服務,創建用來測試讀寫分離的數據庫
對用戶授權使其用於複製主庫數據

注意:下面的語句要用root來執行

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';#創建用戶

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.103.%';#授權
或者
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';#授權

flush privileges; 

#我這裏用 GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identitied by '123456'; ,就是加上密碼授權是報錯。

然後查詢主數據庫狀態,並記錄下File和Position字段的值

mysql> show master status;
+------------------+----------+--------------+--------------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         | Executed_Gtid_Set |
+------------------+----------+--------------+--------------------------+-------------------+
| mysql-bin.000002 |      155 | mycatdb      | mysql,information_schema |                   |
+------------------+----------+--------------+--------------------------+-------------------+
1 row in set (0.00 sec)

4、

配置從數據庫

開啓從數據庫服務,手動創建測試讀寫分離的庫,這邊不會幫你自動創建,同時也創建和主庫一樣的用戶,我這裏還是先停止從庫

stop slave;

設置它的master

change master to master_host='192.168.232.124',
master_port=3306,
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000002',
master_log_pos=155;

注:這裏的 master_log_filemaster_log_pos就是配置主數據庫查詢到的FilePosition

啓動從庫

start slave;

檢查是否啓動成功

show slave status\G;

#下面兩個參數都是Yes,則說明主從配置成功!
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes

到這裏,已經配置好主從同步了。

在主庫建表、插入數據,然後在從庫查詢

---------------------------------------------------------------------------------------

如何停止從服務複製功能
stop slave;
如何重新配置主從
stop slave;
reset master;

---------------------------------------------------------------------------------------

我這裏啓動從庫的時候報了個錯誤:

The slave I/O thread stops because master and slave have equal MySQL server UUIDs

原因是我的這臺虛擬機是複製過來的,auto.cnf中的server-uuid是一樣的。

解決方法:停止從庫的mysqld服務,刪除他的auto.cnf文件,再啓動數據庫服務即可:

find / -name auto.cnf
# /var/lib/mysql/auto.cnf

rm auto.cnf 
# rm:是否刪除普通文件 "auto.cnf"?y


systemctl start mysqld
systemctl status mysqld

use mysql

start slave;
show slave status\G;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章