本文借鑑了n個博客組合而成的,因爲在網上沒找到一個比較完整的配置,故有了這篇文章,
我是個經不起批評的人,所以寫的不好勿噴
主數據庫設置:
1:開啓mysql的二進制日誌 (my.cnf文件 一般在/etc/my.cnf這個路徑)
Vim /etc/my.cnf
2:添加二進制日誌配置,記住要加在[mysqld_safe]上面一行
log-bin=master-bin (加,日誌文件名稱可以自己隨意寫)
server-id=1 (加,必須指定 要不會出錯)
binlog-do-db=eduswstudent (加,需要備份的數據庫名稱,如果是全部數據庫這行可以忽略)
binlog-ignore-db=mysql(加,不需要備份的數據庫名稱,如果是全部數據庫這行可以忽略不寫)
3:重啓mysql
service mysql restart(如果報錯 可以使用原始的命令重啓 只是你沒有配置的原因,也可以參考網上別的博客配置即可)
4:授權
進入mysql操作
GRANT REPLICATION SLAVE ON *.* TO '用戶名'@'次數據庫的IP地址' IDENTIFIED BY '密碼';
這行命令的意思是:允許在某個IP地址的某個用戶以某個密碼對當前數據庫的所有庫和所有表進行復制操作
5:注意
進入mysql操作
以上配置了權限,我們需要刷新以下權限使用命令:
mysql>flush privileges;
6:查看主要數據庫的一些信息
show variables like 'server_id';#查看server_id的值是否爲1,不爲1的話請帶起你的眼鏡詳細看第二步
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
1 row in set (0.00 sec)
mysql>show master status;show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 154 | eduswstudent | mysql | |
File: 日誌文件名稱
Position: 日誌所在位置
注意:老鐵們記着,後面要用的
到這裏主數據庫設置完畢,開始次數據庫吧
次數據庫(備份數據庫)設置
1:開啓mysql的二進制日誌 (my.cnf文件 一般在/etc/my.cnf這個路徑)
Vim /etc/my.cnf
2:添加二進制日誌配置,記住要加在[mysqld_safe]上面一行
log-bin=master-bin (加,日誌文件名稱可以自己隨意寫)
server-id=1 (加,必須指定 要不會出錯)
binlog-do-db=eduswstudent (加,需要備份的數據庫名稱,如果是全部數據庫這行可以忽略)
binlog-ignore-db=mysql(加,不需要備份的數據庫名稱,如果是全部數據庫這行可以忽略不寫)
3:將備份數據庫指向主數據庫(以下信息都是前面設置的或者獲得的,如果沒找到請帶起你的眼鏡從頭看)
mysql>CHANGE MASTER TO
>MASTER_HOST='master所在服務器的IP',
>MASTER_USER='master授權的賬號',
>MASTER_PASSWORD='master授權的密碼',
>MASTER_LOG_FILE='master的日誌文件名',
>MASTER_LOG_POS=master的日誌所在位置;
備份數據庫設置完畢
一些需要的操作
備份數據庫上開始主從複製
mysql>start slave;
我們可以查看slave的運行狀態:
show slave status\G;可以看到類似如下內容:
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: master的IP地址
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000001
Read_Master_Log_Pos: 1516
Relay_Log_File: slave-bin.000004
Relay_Log_Pos: 1117
Relay_Master_Log_File: master-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
......
注意:
Slave_IO_Running: YES 表示slave的日誌讀取線程開啓
Slave_SQL_Running: YES 表示SQL執行線程開啓
如果有主從複製有錯誤信息其實也可以看到
注意點
1)開啓了主從複製,slave庫如果寫入數據的話,可能導致數據回滾從而主從複製線程中斷,可以通過以下方式解決:
mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;
2)如果要停止slave的複製可以使用命令:
mysql>stop slave;
3)由於主從複製是基於I/O的日誌,所以會存在一定延時,如果對數據一致性要求非常高的話,簡單的主從複製在實際環境中會存在問題