MySQL 5.7.22 主從複製--use
阿新 • • 發佈:2018-12-16
一、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;