1. 程式人生 > >MySQL高可用(三)搭建主備同步實戰

MySQL高可用(三)搭建主備同步實戰

### 目標 掌握如何搭建一主一備的主備架構 ### 實驗環境 - 系統:Ubuntu 18.04.1 LTS - MySQL版本:5.7.32 - 主庫IP:192.168.200.120 - 備庫IP:192.168.200.121 ### 操作步驟 #### 1.分別在兩臺伺服器上安裝MySQL ```sheel sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install libmysqlclient-dev ``` 注:要求MySQL版本號一致 #### 2.(主庫)配置同步賬號 建立資料庫複製使用者: ```mysql mysql> CREATE USER 'repl'@'192.168.200.121' IDENTIFIED BY '123456'; ``` 授權: ```mysql mysql> grant replication slave on *.* to 'repl'@'192.168.200.121'; ``` #### 3.(主庫)修改/etc/my.cnf檔案,注意確保:server-id 唯一 ``` [mysqld] bind-address = 192.168.200.120 //這裡的IP地址必須是通過ipconfig查出來的IP server-id = 1 log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M binlog_do_db = empw_test #binlog_ignore_db = include_database_name binlog_format = row # binlog的格式 row 具有 statement和mixed 不具備的優勢 填寫 row sync_binlog = 1 innodb_flush_log_at_trx_commit = 1 # 和 sync_binlog 組成雙1 配置 保證資料的完整性 ``` #### 4.(主庫)重啟master端 ```sheel service mysql restart ``` #### 5.(主庫)查詢主庫上當前的二進位制日誌名和偏移量值,記錄下file跟position的值,待會從庫要用 ```mysql mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000003 | 154 | empw_test | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) ``` #### 6.(從庫)修改/etc/my.cnf檔案,注意確保:server-id 唯一 ``` [mysqld] server-id = 2 ``` #### 7.(從庫)重啟slave端 ```sheel service mysql restart ``` #### 8.(從庫)對從資料庫伺服器做相應設定,指定複製使用的使用者,主資料庫伺服器的IP、埠以及開始執行復制的日誌檔案和位置等 ```mysql mysql> CHANGE MASTER TO MASTER_HOST='192.168.200.120',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=154; ``` #### 9.(從庫)啟動slave執行緒 ```mysql mysql> start slave; ``` #### 10.主庫跟從庫分別檢查狀態 檢查master的: ```mysql mysql> show processlist; +----+------+-----------------------+------+-------------+------+---------------------------------------------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------------------+------+-------------+------+---------------------------------------------------------------+------------------+ | 2 | root | localhost | NULL | Query | 0 | starting | show processlist | | 3 | repl | 192.168.200.121:56822 | NULL | Binlog Dump | 12 | Master has sent all binlog to slave; waiting for more updates | NULL | +----+------+-----------------------+------+-------------+------+---------------------------------------------------------------+------------------+ 2 rows in set (0.00 sec) ``` 看到上面的Command: Binlog Dump說明配置成功! 檢查slave的: ```mysql mysql> show slave status; ``` 提示: `Slave_IO_Running` 和 `Slave_SQL_Running` 兩個值為YES基本上成功了。