1. 程式人生 > >MySQL 5.7.22 主從複製--use

MySQL 5.7.22 主從複製--use

一、mysql主從配置

1、解決web應用系統,資料庫出現的效能瓶頸,採用資料庫叢集的方式來實現查詢負載; 2、mysql支援資料庫的主從複製功能,使用主資料庫進行資料的寫入操作,從資料庫則用來進行資料讀操作

二、資料庫配置

1、修改主庫的配置檔案(my.cnf)

[[email protected] ~]#  vi /etc/my.cnf

[client]
default-character-set=utf8   #設定mysql客戶端預設字符集

[mysqld]
datadir=/data/mysql     #設定mysql資料庫的資料的存放目錄
socket=/var/lib/mysql/mysql.sock

character-set-server = utf8
collation-server = utf8-general-ci

binlog-cache-size = 524288
expire-logs-days = 15

# ------------------------ log 設定 ------------------------- #
slow-query-log = 1  #慢查詢
slow-query-log-file = /data/logs/mysql/mysql-slow.log

log-slow-slave-statements = 1
long-query-time = 8
min-examined-row-limit = 100

# ------------------------ 主從複製 master設定 ------------------------- #
log-bin = /data/logs/mysql/mysql-bin.log   #開啟二進位制日誌
log-bin-index = /data/logs/mysql/mysql-bin.index
max-binlog-size = 1G
server-id = 101

binlog-format=mixed
binlog-do-db=opportmgt   # 只記錄指定庫的更新到binlog
binlog-ignore-db=mysql   #不記錄指定庫的更新到binlog
binlog-ignore-db=information-schema
binlog-ignore-db=performance-schema

# ----------------------------------------------------- #
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

2、修改主庫的配置檔案(my.cnf)

[[email protected] ~]#  vi /etc/my.cnf

[client]
default-character-set=utf8   #設定mysql客戶端預設字符集

[mysqld]
datadir=/data/mysql     #設定mysql資料庫的資料的存放目錄
socket=/var/lib/mysql/mysql.sock

character-set-server = utf8
collation-server = utf8-general-ci

binlog-cache-size = 524288
expire-logs-days = 15

# ------------------------ log 設定 ------------------------- #
slow-query-log = 1  #慢查詢
slow-query-log-file = /data/logs/mysql/mysql-slow.log

log-slow-slave-statements = 1
long-query-time = 8
min-examined-row-limit = 100

# ------------------------ 主從複製 slave設定 ------------------------- #
server-id = 102

relay-log       = /data/logs/mysql/slave-relay-bin
relay-log-index = /data/logs/mysql/slave-relay-bin.index


log-bin = /data/logs/mysql/mysql-bin.log   #開啟二進位制日誌
log-bin-index = /data/logs/mysql/mysql-bin.index
max-binlog-size = 1G

symbolic-links=0

binlog-format=mixed
binlog-do-db=opportmgt   # 只記錄指定庫的更新到binlog


# ----------------------------------------------------- #
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

三、關聯主庫與從庫

1、 在主庫(master)中建立一個使用者用於與從庫同步的使用者名稱和密碼(這裡我建立一個slave_user使用者,密碼為123456),並給slave_user使用者授權,以用於主庫操作從庫

1.master建立授權使用者:
192.168.78.128(master):
 
## 建立 test 使用者, 指定該使用者只能在主庫 192.168.78.130 上使用 MyPass1! 密碼登入
mysql> create user 'test1'@'192.168.1.228' identified by 'MyPass1!';
 
## 為 test 使用者賦予 REPLICATION SLAVE 許可權。
mysql> grant replication slave on *.* to 'test1'@'192.168.1.228';
mysql> flush privileges; 
 
## 檢視使用者
mysql> select user,host from mysql.user;
 
## 檢視 master 狀態
mysql> show master status;
 
注:這裡的 mysql-bin.000001和 Position 值 slave 配置時需要用到。
 
2.將 master 中現有的資料資訊匯出:
$ mysqldump -u root -p --all-databases --master-data > all.sql
 
3.將 all.sql 傳送到 slave 伺服器 tmp 目錄下:
$ scp all.sql 
[email protected]
:/tmp 4.slave 匯入 master 資料, 使 master-slave 資料保持一致: 192.168.78.130(slave): $ mysql –u root -p < all.sql 5.使 slave 與 master 建立連線, 從而同步(在從伺服器上操作): mysql> change master to     -> master_host='192.168.1.117',     -> master_user='test1',     -> master_password='MyPass1!',     -> master_log_file='mysql-bin.000001',     -> master_log_pos=2193;    mysql> start slave; mysql> show slave status \G 注: l master_log_file 和 master_log_pos值為主庫上面執行show master status得到 2 如果 Slave_IO_Running 和 Slave_SQL_Running 都為 Yes, 說明配置成功 3 如果其中一項不為 Yes, 檢視 Last_IO_Errno 錯誤碼和錯誤資訊, 或者檢視 MySQL 日誌資訊並查詢對應問題 ----------------------------------- 相關命令:   create user slave_user;   grant replication slave on *.* to '從庫使用者名稱(slave_user)'@'從庫主機地址(127.0.0.1)'identified by '密碼(123456)';   flush privileges;   現在我們切到從庫(slave), 把主庫與從庫聯絡起來。   執行以下命令: mysql> change master to master_host='127.0.0.1',master_port=3307, master_user='slave_user',master_password='123456', master_log_file='master-bin.000003',master_log_pos=0;   然後執行命令 mysql> start slave 開啟主從同步 然後執行命令檢視 slave的狀態   mysql> show slave status \G;