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
mysql> 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