天天看點

MySQL搭建主從同步設定

主庫: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服務。

繼續閱讀