mysql主從複製配置過程
主庫配置
1. 配置mysql
vim /etc/my.cn # 在檔案中增加以下內容 server-id=1 # 保證server id唯一 log-bin = /var/lib/mysql/mysql-bin.log binlog-do-db = db1 binlog-do-db = db2
其中db1和db2是計劃進行主從複製的庫,如果有多個,寫多行即可。配置完畢後,重啟資料庫: service mysqld restart
2. 新增複製使用者
通過phpmyadmin,新增新使用者,並授予REPLICATION SLAVE許可權。或者通過root使用者登入到mysql,賦予許可權:
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'password'
其中repl是使用者名稱,password是該使用者的密碼。
3. dump資料
如果能夠保證不會產生新資料,就不需要對資料庫加鎖。如果不能保證,則需要對每一個dump資料的資料庫加鎖:
use db1; FLUSH TABLES WITH READ LOCK;
然後dump資料:
mysqldump -uroot -p db1 > db1.sql
如果有多個數據庫,則重複上述過程多次。
4. 檢視二進位制檔案位置
使用root身份登入mysql,檢視master狀態:
show master status;
該命令會有類似如下格式的輸出:
+-----------------+-----------+----------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-----------------+-----------+----------------+------------------+ | mysql-bin.00002 | 445 | db1,db2 | | +-----------------+-----------+----------------+------------------+ 1 row in set (0.00 sec)
5. 解鎖
如果匯出數居前對資料庫加了讀鎖,則需要解除:
use db1; UNLOCK TABLES;
到此,主庫配置完畢。特別需要記住 show master status
輸出中的 file 和 position 的值。
從庫配置
1. 新建資料庫
首先在從庫上建立相同名稱的資料庫。
2. 配置從資料庫
vim /etc/my.cnf # 在my.cnf中增加以下內容: server-id = 2 # 保證id唯一 relay-log = /var/lib/mysql/mysql-relay-bin.log replicate-wild-do-table = db1.% replicate-wild-do-table = db2.%
如果同步多個數據庫,replicate-wild-do-table需要寫多行。配置好後,重啟資料庫。
3. 匯入資料
將主伺服器上dump出來的資料匯入從伺服器中:
mysql -uroot -p db1 < db1.sql
4. 配置主從同步
登入到mysql伺服器,配置同步的主伺服器資訊:
> change master to master_host='xxx.xxx.xx.xx',> master_user='repl',> master_password='password',> master_log_file='mysql-bin.00000x',> master_log_pos=xxxx;
配置好後啟動主從同步: start slave
。然後通過命令檢視狀態:show slave status
,如果成功的話slave_io_running和slave_sql_running兩項應該都是yes.
測試
在主庫上新增記錄或者新增表等操作,幾乎都能實時反映到從庫上。
以上就是mysql主從複製配置過程的詳細內容,更多關於mysql主從複製配置的資料請關注我們其它相關文章!