本文章: 參考 跟老男孩學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. [root@localhost ~]# 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個狀態參數 [root@localhost 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. 測試主從複製結果 在主庫上寫入數據,然後觀察從庫的數據狀態 [root@localhost backup]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock -e "create database oldboy;" [root@localhost backup]# mysql -uroot -poldboy123 -S /data/3307/mysql.sock -e "show databases;" +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | oldboy | | performance_schema | | test | +--------------------+ [root@localhost backup]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock -e "drop database oldboy;" [root@localhost backup]# mysql -uroot -poldboy123 -S /data/3307/mysql.sock -e "show databases;" +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 6. 結果: 數據是同步的, mysql 主從同步 搞定 查看 master 狀態 [root@localhost 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