1. 程式人生 > >mysql 多例項 主從複製實戰記錄

mysql 多例項 主從複製實戰記錄

本文章: 參考 跟老男孩學linux-web叢集實戰  第九章

  大環境:
    contos:Linux localhost 2.6.32-754.3.5.el6.x86_64 #1 SMP Tue Aug 14 20:46:41 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    mysql: mysql-5.5.32           mysql 一機多例項3個 搭建環境:  跟老男孩學linux-web叢集實戰  第九章
    

  1.   環境的準備
      a.  contos上 mysql 一機多例項3個   
  2. 定義主從複製需要的伺服器角色
      a.  master 3306、slave1 3307、slave2 3308
  3. 在主庫 master 上操作	
      a. 設定 server-id 值並開啟 binlog 功能, my.cnf 配置檔案上
          i. [
[email protected]
~]# egrep 'server-id|log-bin' /data/3306/my.cnf log-bin = /data/3306/mysql-bin server-id = 1 b. 登入mysql 檢查引數更改情況 mysql> show variables like 'server_id'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | server_id | 1 | +---------------+-------+ 1 row in set (0.01 sec) mysql> show variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | ON | +---------------+-------+ 1 row in set (0.00 sec) c. 在主庫上 建立用於 主從複製的賬號 grant replication slave on *.* to 'rep'@'10.0.0.%' identified by 'oldboy123' d. 檢測主庫建立的 rep 複製賬號命令和結果如下 e. 實現對主資料庫鎖表只讀 flush table with read lock; f. 鎖表後,檢視主庫的狀態 show master status; g. 鎖表後,單開一個 ssh ,匯出資料庫的所有資料 mysqldump -uroot -poldboy123 -S /data/3306/mysql.sock --events -A -B | gzip > /server/backup/mysql_bak.$(date +%F).sql.gz | 引數有 gzip 不太好用 mysqldump -uroot -poldboy123 -S /data/3306/mysql.sock --events -A -B > /server/backup/mysql_bak.$(date +%F).sql 這個ok 記得再次檢查,master 主庫資訊狀態 mysql -u root -poldboy123 -S /data/3306/mysql.sock -e "show master status" h. 匯出資料後,解鎖主庫,恢復可寫狀態 unlock tables; 4.從庫操作 1. 把主庫匯出的 mysql 資料遷移到 從庫 mysql -uroot -poldboy123 -S /data/3308/mysql.sock < mysql_bak.2018-10-13.sql 這個ok 2. mysql 從庫連結主庫的 配置資訊 CHANGE MASTER TO MASTER_HOST='192.168.190.128', MASTER_PORT=3306, MASTER_USER='rep', MASTER_PASSWORD='oldboy123', MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=504; 整個配置 mysql 從庫連結主庫的資訊操作過程如下: mysql -uroot -poldboy123 -S /data/3307/mysql.sock << EOF CHANGE MASTER TO MASTER_HOST='192.168.190.128', MASTER_PORT=3306, MASTER_USER='rep', MASTER_PASSWORD='oldboy123', MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=504; EOF 3. 啟動從庫同步開關, 並檢視複製狀態 mysql -uroot -poldboy123 -S /data/3307/mysql.sock -e "start slave;" mysql -uroot -poldboy123 -S /data/3307/mysql.sock -e "show slave status\G;" 主從複製是否成功,最關鍵的為下面的3個狀態引數 [
[email protected]
backup]# mysql -uroot -poldboy123 -S /data/3307/mysql.sock -e "show slave status\G" | egrep "Slave_IO_Running| Slave_SQL_Running|Seconds_Behind_Master" Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0 引數解釋: 1. Slave_IO_Running: Yes, 這個是I/O 執行緒的狀態, I/O 執行緒負責從 從庫到主庫讀取 binlog 日誌,並寫入從庫的 中繼日誌, 狀態為yes, 標識 I/O 執行緒工作正常 2. Slave_SQL_Running: Yes,這個是 sql 執行緒的狀態, sql執行緒負責讀取 中繼日誌(relay-log) 中的資料 並轉換為sql語句應用到從資料庫中, 狀態為yes 表示 I/O 執行緒工作正常 3. Seconds_Behind_Master: 0, 這個是複製過程中 從庫比主庫 延遲的秒數, 這個引數很重要, 但企業裡更精準的判斷判斷主從延遲的方法為: 在賬戶庫寫時間戳,然後從庫讀取時間戳, 和當前資料庫時間進行比較,從而判斷是否延遲 有管 show slave status 結果的說明,檢視 mysql 手冊 -------------------------------------------------------------------------------- 5. 測試主從複製結果 在主庫上寫入資料,然後觀察從庫的資料狀態 [
[email protected]
backup]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock -e "create database oldboy;" [[email protected] backup]# mysql -uroot -poldboy123 -S /data/3307/mysql.sock -e "show databases;" +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | oldboy | | performance_schema | | test | +--------------------+ [[email protected] backup]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock -e "drop database oldboy;" [[email protected] backup]# mysql -uroot -poldboy123 -S /data/3307/mysql.sock -e "show databases;" +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 6. 結果: 資料是同步的, mysql 主從同步 搞定 檢視 master 狀態 [[email protected] backup]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock -e "show master status;" +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000007 | 676 | | | +------------------+----------+--------------+------------------+

? 再次折騰一下午,結果還是滿意的 之前 2臺mac主機上, 搞過一次mysql主從, 理解不是很深刻, 連結: http://www.imshuai.cn/blog/213

今天在搞一遍,比之前深刻多了 :)     2018-10-13