linux下mysql主從復制搭建



 

目標:搭建兩台MySQL服務器,一台作為主服務器,一台作為從服務器,實現主從復制

環境:
  主數據庫: 192.168.1.1
  從數據庫: 192.168.1.2

  mysql安裝可參考:https://www.cnblogs.com/merely/p/9714681.html

配置步驟:

1、保證兩個數據庫中的庫和數據是一致的;

2、在主數據中創建一個同步賬號(可不創建使用現有的),如果僅僅為了主從復制創建賬號,只需要授予REPLICATION SLAVE權限。
1)、創建一個賬號,賬號:master 密碼: 123456

CREATE USER 'master'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'master'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

3、配置主數據庫
1)要主數據庫,你必須要啟用二進制日志(binary logging),並且創建一個唯一的Server ID,這步驟可能要重啟MySQL。
2)主服務器發送變更記錄到從服務器依賴的是二進制日志,如果沒啟用二進制日志,復制操作不能實現(主庫復制到從庫)。
3)復制組中的每台服務器都要配置唯一的Server ID,取值范圍是1到(232)−1,你自己決定取值。
4)配置二進制日志和Server ID,你需要關閉MySQL和編輯my.cnf或者my.ini文件,在 [mysqld] 節點下添加配置。
5)下面是啟用二進制日志,日志文件名以“mysql-bin”作為前綴,Server ID配置為1,如下:

[mysqld]
log-bin=mysql-bin
server-id=1
#網絡上還有如下配置
#binlog-do-db=mstest //要同步的mstest數據庫,要同步多個數據庫,就多加幾個replicate-db-db=數據庫名 
#binlog-ignore-db=mysql //要忽略的數據庫
innodb_flush_log_at_trx_commit=1
sync_binlog=1

4、重啟mysql

5、查看主服務器狀態:

cd /usr/local/mysql/bin
./mysql -uroot -p
mysql> show master status;

注意:記錄好File和Position,后面要用

6、配置從數據庫:
1)從服務器,同理,要分配一個唯一的Server ID,需要關閉MySQL,修改好后再重啟,如下:

[mysqld]
server-id=2
#可以指定要復制的庫
replicate-do-db=test-xxx #在master端不指定binlog-do-db,在slave端用replication-do-db來過濾
replicate-ignore-db=mysql #忽略的庫
#網上還有下面配置
#relay-log=mysqld-relay-bin

2)配置連接主服務器的信息:
進入sqlplus:

cd /usr/local/mysql/bin
./mysql -uroot -p
mysql> stop slave;
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.1.1',
-> MASTER_USER='master',
-> MASTER_PASSWORD='123456',
-> MASTER_PORT=3309,
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=154;
mysql> start slave;

3)查看狀態

mysql> show slave status \G;
       Slave_IO_State: Waiting for master to send event
          Master_Host: 192.168.1.1
          Master_User: master
          Master_Port: 3309
        Connect_Retry: 60
      Master_Log_File: mysql-bin.000001
  Read_Master_Log_Pos: 2950
       Relay_Log_File: localhost-relay-bin.000007
        Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
     Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
      Replicate_Do_DB: test-xxx
  Replicate_Ignore_DB: mysql
        ...
Seconds_Behind_Master: 0 #表示已同步
        ...

4)若 Slave_SQL_Running: no 請重復執行以下內容,直至yes:

stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;

 

參考的資料:

  1、https://blog.csdn.net/envon123/article/details/76615059
  2、https://blog.csdn.net/xiaoxinla/article/details/7679578


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM