01前言
文章一切從簡是米兜的一貫作風,太長的文章閱讀起來感覺就費勁。如何使用mysql主從配置?我們就從簡單的例子看一看,更加詳細的配置可以自行google,這里過一下主從配置且能你快速上手。
MySQL主從復制工作原理圖,過一下:
主服務器上面的任何修改都會保存在二進制日志Binary log里面,從服務器上面啟動一個I/O thread(實際上就是一個主服務器的客戶端進程),連接到主服務器上面請求讀取二進制日志,然后把讀取到的二進制日志寫到本地的一個Realy log里面。從服務器上面開啟一個SQL thread定時檢查Realy log,如果發現有更改立即把更改的內容在本機上面執行一遍。
02實驗環境兩臺服務器做配置測試:虛擬機中的 ubuntu (192.168.128.131) 和宿主機 xp (192.168.128.1)
分別安裝有 mysql。最好版本一樣(我的不一樣)
機子都 ping 得通
03主服務器配置(ubuntu)配置 mysql
#vi /etc/mysql/my.cnf
[mysqld]
log-bin=mysql-bin #[必須]啟用二進制日志
server-id=1 #[必須]服務器唯一ID,默認是1,一般取IP最后一段
檢查 mysql 是否允許遠程連接
bind-address = 0.0.0.0 #這樣表示允許所有網段連接
進入 mysql 終端
#mysql -uroot -proot
新建 mysql 用戶(從服務器用到此賬號配置)backup
mysql> GRANT REPLICATION backup ON *.* to 'backup'@'192.168.128.%' identified by 'backup';
刷新一下權限表
mysql> flush privileges;
重啟 mysql
#service mysql restart
進入 mysql 終端查看 master 狀態
mysql> show master status;
記錄 file 和 position 的值,從服務器配置用到。這個時候不要去動主數據庫,會影響 position 的值。
04從服務器配置(xp)配置 mysql 的 my.ini 并重啟
[mysqld]
log-bin=mysql-bin #[可選]啟用二進制日志
server-id=2
登錄 mysql 終端后執行
mysql> change master to master_host='192.168.128.131',
master_user='backup',
master_password='backup',
master_log_file='mysql-bin.000002',
master_log_pos=612;
啟動 slave 從庫
mysql> start slave;
查看 slave 從庫
mysql> show slave status\G;
Slave_IO_Running 和 Slave_SQL_Running 必須都為 Yes 才算成功。
05測試ubuntu mysql
mysql> create database test_repl;
然后查看 xp mysql 如果出現 test_repl 庫則說明主從復制配置成功
mysql> show databases;
06總結這只是最基本的配置,還有很多配置命令就不折騰了。測試時發現之前庫不一致時我在主庫里面添加一張表,而從庫沒有那個庫,導致從庫 slave 會報錯,執行這個命令后重啟從庫就可以跳過這個錯誤。
#SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 跳過一個事務