主庫:192.168.1.1
從庫:192.168.1.2
資料檔案存放位置:/var/mysql/data
待同步資料庫:syncdb
一、設定MASTER
1、修改my.cnf
============================
# vi /etc/my.cnf
server-id = 1
log-bin
binlog-ignore-db=mysql
binlog-ignore-db=test
2、賦予SLAVE權限帳号,允許使用者在MASTER上LOAD TABLE和LOAD DATA
====================================================================
mysql> GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO [email protected] IDENTIFIED BY 'password';
3、鎖主庫表
===========================
mysql> FLUSH TABLES WITH READ LOCK;
4、顯示主庫資訊
記錄File和Position,從庫設定将會用到
=====================
mysql> SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
| mysql-bin.030 | 870279 | | |
5、另開一個終端,打包主庫
# cd /var/mysql/data
# tar cvf syncdb.tar syncdb
二、設定SLAVE
1、傳輸拿到主庫包、解包
==============================
# scp 192.168.1.1:/var/mysql/data/syncdb.tar .
# tar xvf syncdb.tar
2、解鎖主庫表
=================
mysql> UNLOCK TABLES;
3、檢視修改syncdb檔案夾權限
# chown mysql:mysql syncdb -R
4、修改my.cnf
====================
# vi /etc/my.cnf
# slave
server-id=2
master-host=192.168.1.1
master-user=slave
master-password=password
master-port=3306
replicate-do-db=syncdb
5、驗證連接配接MASTER
# mysql -h192.168.1.1 -uslave -ppassword
mysql> show grants for [email protected];
+------------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected] |
| GRANT SELECT, FILE, REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.2' IDENTIFIED BY PASSWORD '9ff2c222f44c7bba5cc7e3b' |
6、在SLAVE上設定同步
設定連接配接MASTER MASTER_LOG_FILE為主庫的File,MASTER_LOG_POS為主庫的Position
mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.1',MASTER_USER='slave',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.030',MASTER_LOG_POS=870279;
7、啟動SLAVE服務
=============
mysql> slave start;
8、檢視SLAVE狀态
mysql> SHOW SLAVE STATUS;
其中 Slave_IO_Running 和 Slave_SQL_Running 兩列的值都為 "Yes",表明 Slave 的 I/O 和 SQL 線程都在正常運作。
到此主從庫搭建成功。
從庫SLAVE啟動問題
由于一些錯誤操作導緻 CHANGE MASTER 和 SLAVE 服務無法啟動,系統報錯如下:
*****************************************************************
Could not initialize master info structure; more error messages can be found in the MySQL error log.
無法初始化master info結構,MySQL錯誤日志記錄了更詳細的錯誤資訊。
解決方法:
1、檢視MySQL錯誤日志,如:同步的上一個Position是多少,很多情況下無法啟動服務是由于mysql識别的同步始終停留在上一個Position上。
2、檢視master.info和relay-log.info,master.info 記錄MASTER相關資訊,relay-log.info 記錄目前同步日志資訊。
3、停止myslq服務,删除master.info和relay-log.info。
4、啟動mysql服務。
5、重新CHANGE MASTER,重新啟動SLAVE服務。