mysql主從複製


wKioL1nFI1CBeZ9LAAIuwjD1YHQ372.png-wh_50


環境mysql

主服務器maser  192.168.1.140sql

從服務器slave:  192.168.1.142數據庫


一、主從服務器分別做如下操做
  1.1、版本一致
  1.2、啓動mysql


2、修改主服務器master:
   #
vi /etc/my.cnf
vim


[mysqld]
 
log-bin=master-bin         #啓用二進制日誌
  server-id=1             # 爲主節點建立一個全局惟一的id
服務器

innodb_file_per_table=ONide

skip_name_resolve=ON測試

 



3、修改從服務器slave:
spa

# vim /etc/my.cnf線程


[mysqld]rest

relay-log=test-relay-log        #啓動中繼日誌

server-id=11               #爲從節點建立一個全局惟一的id

innodb_file_per_table=ON

skip_name_resolve=ON         

 


   

4、重啓兩臺服務器的mysql
 # service mysqld restart

5、在主服務器上創建賬戶並受權slave:建立有複製權限的用戶帳號
mysql> grant replication slave,replication client on *.* to 'zhaojing'@'192.168.1.%' identified by 'testzj';

mysql> flush privileges;            #從新加載權限表更新權限

說明

on *.*           #指全部數據庫

identified by 'testzj'  #設定密碼爲‘testzj’

mysql 新設置用戶或更改密碼後需用flush privileges刷新MySQL的系統權限相關表不然會出現拒絕訪問還有一種方法就是從新啓動mysql服務器來使新設置生效。

 

 

(ps:

MySQL 賦予用戶權限命令的簡單格式可歸納爲

grant 權限 on 數據庫對象 to 用戶)



6、登陸主服務器的mysql查詢master的狀態

mysql> show master logs;           或者show master status

+-------------------+-----------+

| Log_name          | File_size |

+-------------------+-----------+

| master-bin.000001  |      143 |

| master-bin.000002  |      120 |

+-------------------+-----------+

注執行完此步驟後不要再操做主服務器MYSQL防止主服務器狀態值變化

七、使用有複製權限的用戶帳號鏈接主服務器而且啓動複製線程
  
mysql>change master to master_host='192.168.1.140',master_user='zhaojing'

    ,master_password='testzj',master_log_file='master-bin.000002', 

    ,master_log_pos=120;      #注意字符加引號具體數值不加          


 

 mysql>start slave;                                               # 啓動從服務器複製功能

8、檢查從服務器複製功能狀態

   mysql>
show slave status\G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                Master_Host: 192.168.1.140

                Master_User: zhaojing

                Master_Port: 3306

                Connect_Retry: 60

               Master_Log_File: master-bin.000002

          Read_Master_Log_Pos: 535        

               Relay_Log_File: test-relay-log.000002

                Relay_Log_Pos: 820

        Relay_Master_Log_File: master-bin.000002

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB:

         省略若干行......................      


 
 Slave_IOSlave_SQL進程必須正常運行即顯示YES狀態不然都是錯誤的狀態(如其中一個NO均屬錯誤)

以上操做過程主從服務器配置完成。
 
9、主從服務器測試


在主服務器mysql創建一個數據庫testlog1
mysql> create database testlog1;

Query OK, 1 row affected (0.01 sec)

mysql> show databases;

+--------------------+

| Database       |

+--------------------+

| information_schema |

| mysql        |

| performance_schema |

| test         |

| testlog       |

| testlog1      |

| xs          |

+--------------------+


 從服務器mysql查詢

   mysql> show databases;

+--------------------+

| Database       |

+--------------------+

| information_schema |

| DB          |

| mysql        |

| performance_schema |

| test         |

| testlog        |

| testlog1       |     # I'M here你們看到了吧

| vsftpd        |

+--------------------+

8 rows in set (0.00 sec)


 操做中出現的問題

當我在配置完成後檢查從服務器複製功能狀態
   mysql> show slave status\G

發現

 Slave_IO_Running: Connecting  #不是YES

 Slave_SQL_Running: Yes

個人問題就是主機的防火牆沒有關閉犯了一個低級錯誤

關閉主機防火牆主從複製才能實現。

相關文章
相關標籤/搜索