1.主庫編輯my.cnf:
[mysqld]
log-bin=NEW_NAME
server-id=1 #配一個唯一的ID編号,1至32。
#設定要進行或不要進行主從複制的名,同時也要在Slave 上設定。
binlog-do-db=資料庫名1
binlog-do-db=資料庫名2
binlog-ignore-db=資料庫名1
binlog-ignore-db=資料庫名2
> grant replication slave on *.* to [email protected] identified by '123456' ;
mysql> flush privileges;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000008 | 337 | | |
+------------------+----------+--------------+------------------+
記錄下二進制日志檔案名和位置
2.從庫編輯my.cnf,把server-id改成不和主機相同的數字。
如果隻想同步指定的資料庫,可以添加 replicate-do-db = yourdatabase,
同步幾個就複制幾個,把資料庫名改了就好。
[mysqld]
server-id=2 #唯一
#設定要進行或不要進行主從複制的資料庫名,同時也要在Master 上設定。
replicate-do-db=資料庫名1
replicate-do-db=資料庫名2
replicate-ignore-db=資料庫名1
replicate-ignore-db=資料庫名2
mysql> change master to master_host='192.168.1.100',master_user='slaveuser',master_password='123456', master_log_file='mysql-bin.000008',master_log_pos=337;
mysql> start slave;
mysql> show slave status\G;
如果出現:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上兩項都為Yes,那說明沒問題了。如果指定了個别的資料庫,還可以看到
注:如果出現Slave_SQL_Running:connecting的現象,首先在從庫指令行下輸入:
#mysql -uslaveuser -h 192.168.1.100 -p123456
看是否能登入mysql,如果是拒絕等提示,那要檢視主機上的第從庫授權操作是否使用者的權限等設定正确。
如果開始的環境不是主從架構,跑了一段時間已經有了資料,這時候要先在主機上加鎖:flush tables with read lock;
打包主機的資料目錄:#tar zcf /tmpdatabak.tgz /opt/data,拷貝這個壓縮包到從機,解壓後,做主從的配置。
然後解鎖:unlock tables;
作者 iloveyin