1. MySQL 主從配置
- 讀寫分離是啟動(dòng)多個(gè)MySQL服務(wù), 一臺(tái)服務(wù)器 作為主服務(wù)器(master), 剩下從服務(wù)器(slave)讀取主服務(wù)的 binlog然后寫入數(shù)據(jù)庫.
- 配置主從服務(wù), 可以分擔(dān)單臺(tái)數(shù)據(jù)庫服務(wù)器的壓力,
- 實(shí)現(xiàn)步驟:
- master:
- 開啟binlog 寫入指定文件, 并且創(chuàng)建一個(gè)授權(quán)用戶 用于授權(quán) slave 來復(fù)制日志.
- slave:
- 設(shè)置Master 的相關(guān)配置, slave 會(huì)復(fù)制master的binlog 并寫入自己的 relaylog 中, slave 會(huì)啟動(dòng)一個(gè)線程讀取 relaylog 并寫入數(shù)據(jù)庫中.
- master:
2. 主從配置
- 準(zhǔn)備主從兩個(gè)MySQL
- 我這里是單臺(tái)服務(wù)器啟動(dòng)了兩個(gè)MySQL 服務(wù)
[root@node10009 mysql]# ss -tanp |grep 330
LISTEN 0 128 127.0.0.1:3307 *:* users:(("mysqld",pid=3646,fd=34))
LISTEN 0 128 :::3306 :::* users:(("mysqld",pid=965,fd=35))
[root@node10009 mysql]#
- 備份并恢復(fù)
- 備份Master 數(shù)據(jù), 恢復(fù)到Slave 上
- 備份
[root@node10009 mysql]# mysqldump -uroot -p -P3306 test > /opt/back/test.sql
- 恢復(fù)到從服務(wù)器
[root@node10009 mysql]# mysql -uroot -p -P3307 < /opt/backup/test.sql
Enter password:
[root@node10009 mysql]#
- master 配置文件
[mysqld]
server_id = 101
log_bin = /opt/app/mysql57/data/binlog/mysql_bin
- 重啟
[root@node10009 mysql]# systemctl restart mysqld
[root@node10009 mysql]#
- 查看master 狀態(tài)
MySQL [(none)] > show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql_bin.000096 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
- 創(chuàng)建用戶用戶用于 salve 連接到 Master
MySQL [(none)] > GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.10.%' IDENTIFIED BY 'backup';
- slave 配置
- 編輯配置文件
[mysqld]
server_id = 102
relay_log = /opt/app/mysql/data/relaylog/relay_log
- 重啟
[root@node10009 mysql]# /opt/app/mysql/bin/mysqladmin -uroot -p -P3306 shutdown
[root@node10009 mysql]# /opt/app/mysql/bin/mysqld_safe --defaults-file=/opt/app/mysql/etc/my.cnf -umysql &
- 配置slave 連接master
MySQL [test] > CHANGE MASTER TO MASTER_HOST='192.168.10.9',MASTER_USER='slave',MASTER_PASSWORD='123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql_bin.000096',MASTER_LOG_POS=154;
Query OK, 0 rows affected, 2 warnings (0.03 sec)
- 查看狀態(tài)
MySQL [test] > show slave status\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.10.9
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql_bin.000096
Read_Master_Log_Pos: 154
Relay_Log_File: relay_log.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql_bin.000096
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
....
- 測(cè)試
- 查看主從數(shù)據(jù)

001.png
- master 修改數(shù)據(jù)并查看

002.png
END