Linux 上 設置mysql主從數據庫

本文借鑑了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的日誌,所以會存在一定延時,如果對數據一致性要求非常高的話,簡單的主從複製在實際環境中會存在問題 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章