執行環境:
檢視linux版本命令:lsb_release -a
主伺服器:centos release 6.5 mysql 5.6.10-log IP:172.17.200.25
從伺服器:centos release 6.5 mysql 5.6.10-log IP:172.17.200.26
主伺服器dashi資料庫
mysql預設配置檔案,如不特殊指定預設為/etc/my.cnf
mysql配置檔案查詢順序:/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
我是預設設定 /etc/my.cnf
進入主服務 msyql -uroot -p
一:主服務
1.1、建立一個複製使用者dashi,具有replication slave 許可權。
mysql>grant replication slave on *.* to `dashi`@`172.17.200.26` identified by `dashi`;
mysql>flush privileges;
1.2、編輯my.cnf檔案
vim /etc/my.cnf
增加 server-id=107
log-bin=bin.log 檔案路徑自己定(推薦絕對路徑)
1.3 重啟mysql
service mysqld restart
1.4、設定讀鎖
mysql>flush tables with read lock;
1.5、得到binlog日誌檔名和偏移量(此處記住File名稱和Position值,後面slave伺服器配置時需要用到)
mysql> show master status;
+————+————+————–+————————————————–+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+————+————+————–+————————————————–+——————-+
| bin.000031 | 1011406487 | | information_schema,mysql,performance_schema,test | |
+————+————+————–+————————————————–+——————-+
1 row in set (0.00 sec)
1.6、備份要同步的資料庫
mysqldump -uroot -p test>test.sql
1.7解鎖
mysql>unlock tables;
二:從伺服器(172.17.200.26)
2.1、編輯my.cnf檔案
vim /etc/my.cnf
增加 server-id=2
2.2 重啟mysql
service mysqld restart
2.3、對從資料庫進行相應設定
此處要注意logfile的名稱和position的值,其餘host、user和password為主資料庫設定的賬號和密碼
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql> change master to
-> master_host=`172.17.200.25`,
-> master_user=`dashi`,
-> master_password=`dashi`,
-> master_log_file=`bin.log.000001`,
-> master_log_pos=713;
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave statusG;
在這裡主要是看:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
三、測試:
上述項配置完以後可檢視master和slave上執行緒的狀態。在master上,你可以看到slave的I/O執行緒建立的連線:在master上輸入show processlistG;
mysql> show processlist G;
*************************** 1. row ***************************
Id: 10865
User: dashi
Host: 172.17.200.25:37369
db: dashi
Command: Sleep
Time: 7
State:
Info: NULL
*************************** 2. row ***************************
Id: 10866
User: dashi
Host: 172.17.200.25:37370
db: dashi
Command: Sleep
Time: 7
State:
Info: NULL
*************************** 3. row ***************************
Id: 10873
User: dashi
Host: 172.17.200.26:37928
db: dashi
Command: Execute
Time: 1
State: Sending data
Info: select count(1) from trade_click where link=?
*************************** 4. row ***************************
Id: 10874
User: dashi
Host: 172.17.200.26:37929
db: dashi
Command: Sleep
Time: 9
State:
Info: NULL
*************************** 5. row ***************************
Id: 10882
User: dashi
Host: 172.17.200.26:37962
db: dashi
Command: Sleep
Time: 78
State:
Info: NULL
ERROR:
No query specified
3.1、在主資料庫:192.168.0.107上新增新資料
3.2、在從庫查詢記錄,是否存在
四:總結
主伺服器master記錄資料庫操作日誌到Binary log,從伺服器開啟i/o執行緒將二進位制日誌記錄的操作同步到relay log(存在從伺服器的快取中),另外sql執行緒將relay log日誌記錄的操作在從伺服器執行,從而達到主從複製。