一、單主單從
1.主從資料庫的版本要一致。
2.在主伺服器上,設定一個從資料庫的賬戶,使用REPLICATION SLAVE賦予許可權。
mysql> grant replication slave on *.* to rep@'192.168.0.%' identified by '123456';
mysql> select user,host from mysql.user; ---查看命令是否生效。
3.修改主要資料庫設定檔my.cnf
[mysqld]
log-bin=mysql3306-bin
server-id = 1
4.主伺服器當前二進位日誌名和位移量,這個操作的目的是為了在從資料庫啟動後,從這個點開始進行資料的恢複。
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql3306-bin.000002
Position: 440
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
5.現在可以停止主要資料的的更新操作,並產生主要資料庫的備份,可以通過mysqldump主要資料庫到從資料庫,注意在匯出資料之前先對主要資料庫進行READ LOCK,以保證資料的一致性
mysql> flush tables with read lock;---鎖資料庫
Query OK, 0 rows affected (0.19 sec)
mysqldump -u root -p -S /data/3306/mysql.sock -A -B >/home/oldboy/mysql.sql ---注意 -A 表示備份所有庫 -B表示增加 use DB 和 drop等(導庫時會直接覆蓋原有的)
mysql> unlock tables;
Query OK, 0 rows affected (0.28 sec)
6.將剛才主要資料庫的備份複製到從資料庫,進行匯入。
7.修改從資料庫的my.cnf。
[mysqld]
relay-log=slave-relay.bin
server-id = 10
8.指定複製使用的使用者,主要資料庫伺服器的ip,連接埠以及開始執行複製日誌的檔案和位置。
[root@localhost 3306]# cat |mysql -uroot -p'123456' -S /data/3306/mysql.sock<< EOF
> CHANGE MASTER TO
> MASTER_HOST='192.168.0.32',
> MASTER_PORT=3306,
> MASTER_USER='rep',
> MASTER_PASSWORD='123456',
> MASTER_LOG_FILE='mysql3306-bin.000002',
> MASTER_LOG_POS=440;
> EOF
9.重啟從資料庫及驗證。
[root@localhost 3306]# mysql -uroot -p'123456' -S /data/3306/mysql.sock -e "start slave;"
[root@localhost 3306]# mysql -uroot -p'123456' -S /data/3306/mysql.sock -e "show slave status\G"|grep -i yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes