性能更好的新伺服器申請下來了,我們決定在2台新伺服器上使用MySQL 5.7,并且使用主從同步、讀寫分離架構,很不幸這個任務落到了我的頭上。讀寫分離是在業務代碼中實作的,在此不做詳述,介紹一下我搭建MySQL主從的過程。
環境介紹:
Master 10.20.66.150
Slave 10.20.66.151
端口都是3306
一、修改主庫的配置 vi /etc/my.cnf
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
<br>[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
server-id=2
log-bin=log
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
需要注意的點:
1.為了相容emoji等特殊位元組符,配置中使用utf8mb4編碼
2.與主從相關的配置在整個配置的最下邊,主庫和從庫的server-id必須不同
3.binlog-ignore-db設定不需要同步的庫
二、建立用于主從同步的賬戶
1.登入MySQL mysql -uroot -p
2.create user 'sync'@'%' identified by 'Sync!0000'; (5.7要求密碼必須含有大小寫英文,符号和數字)
3.grant FILe on *.* to 'sync'@'10.20.66.151' identified by 'Sync!0000'; (賦予FILE權限,允許從從庫ip通路主庫)
4.grant replication slave on *.* to 'sync'@'10.20.66.151' identified by 'Sync!0000'; (賦予主從同步權限)
5.flush privileges;
6.重新開機mysql
三、檢視主庫狀态,記錄必要資訊
1.登入MySQL
2.show master status; 記錄File和Position對應的資訊,我這裡是log.000006和151
四、修改從庫配置
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
server-id=3
log-bin=mysql-bin
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
注意事項和主庫配置相同,使用replicate-ignore-db标記出不需要同步的庫
五、配置同步賬号
1.systemctl restart mysql (重新開機MySQL),然後進入MySQL
2.stop slave;
3.change master to master_host='10.20.66.150', master_user='sync',master_password='Sync!0000',master_file_log='log.000006',master_log_pos='151'; (最關鍵的一步,将主庫ip,同步賬号的使用者密碼,show master status得到的file、position寫入。在5.7之前的版本這一步的相關參數是寫到配置檔案中的,5.7如果再寫進配置檔案會報參數錯誤)
4.start slave;
如果順利的話,到目前為止主從同步已經搭建完成,在從庫中使用show slave status \G;檢視同步狀态
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwIjNx8CX39CXy8CXycXZpZVZnFWbp9zZlBnauQ2NkVjY1MWM0UDZiBjN4MmMiJ2MiNTO0E2MzATN1UWMvwFO5gjM5QDOtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.jpeg)
看到以上結果說明生效了,大家可以在主庫上插入資料測試一下主從同步是否生效了~
希望對大家有所幫助,祝大家每天開心~