mysql主從配置

注意事項:
mysql主從配置中,從服務器的軟件版本可以比主服務器高,但一定不能比主服務器低
 
初始化mysql主從服務器的配置:
 
在兩臺主機上安裝好mysql服務,測試其能否正常啓動
 
主服務器上創建用戶:
mysql> grant replication client,replication slave on *.* to repl@'172.16.0.0/16' identified by '123456';(網絡地址後要加掩碼)
mysql> flush privileges;          刷新權限
mysql> show grants for repl@'172.16.0.0';
 
從服務器的配置:
[root@rs2 ~]# vim /etc/my.cnf
server-id       = 12修改從服務器ID,避免與主服務器相同
innodb_file_per_table=1啓用每個文件每張表空間
#log-bin=mysql-bin 關閉二進制日誌
relay-log=relay-bin 啓用中繼日誌
relay-log-index=relay-bin.index
[root@rs2 ~]# service mysqld start
mysql> show slave status;
mysql> help change master to
Syntax:
CHANGE MASTER TO option [, option] ...
  | MASTER_HOST = 'host_name'(主機名或IP地址都可以)
  | MASTER_USER = 'user_name'(使用哪個用戶到主服務器進行復制)
  | MASTER_PASSWORD = 'password'(用戶密碼)
  | MASTER_LOG_FILE = 'master_log_name'(從中間複製時指定從哪個日誌文件開始複製和開始複製的位置)
  | MASTER_LOG_POS = master_log_pos
 
mysql> change master to
    -> master_host='rs1.gao.com',
    -> master_user='repl',
    -> master_password='123456';
mysql> start slave; 
mysql> show slave status\G; 
        Relay_Master_Log_File: 查看是否正常啓動
             Slave_IO_Running: Connecting
             Slave_SQL_Running: Yes   
如果狀態顯示有如下錯誤:         
Last_SQL_Error: Error 'Duplicate entry '%-test-' for key 'PRIMARY'' on query. Default database: 'mysql'. Query: 'INSERT INTO db SELECT * FROM tmp_db WHERE @had_db_table=0
則處理方法如下:
主服務器
mysql> flush master;
mysql> show master status;
從服務器
mysql> flush slave;
mysql> show master status;
mysql> change master to master_host='172.16.3.3', master_user='repl', master_password='123456';
mysql> start slave;
mysql> show slave status\G
若從服務器狀態顯示正常,則繼續執行如下操作:
在主服務器上修改數據,在從服務器上查看,驗證是否正常
mysql> show processlist;查看從服務器上語句執行是否正常
mysql> show slave status\G
        Seconds_Behind_Master: 0顯示從服務器比主服務器慢多少秒
  
主服務器上已經存在大量數據,而從服務剛初始化的主從配置:
主服務器配置:
先對數據進行備份
mysql> set sql_log_bin=0;
[root@rs1 ~]# mysqldump --all-databases --single-transaction --flush-logs --master-data=2 > /backup/db.sql.2012-12-05
mysql> set sql_log_bin=1;
將備份數據複製到從服務器上
[root@rs1 ~]# scp /backup/db.sql.2012-12-05 rs2:/tmp
在從服務器上進行數據同步:
mysql> source /tmp/db.sql.2012-12-05
[root@rs2 tmp]# head -30 db.sql.2012-12-05
找到以-- CHANGE MASTER TO MASTER_LOG開頭的行,如下所示:
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=107;
記錄使用的二進制文件以及語句執行的位置,執行如下語句:
mysql> change master to master_host='172.16.3.3', master_user='repl', master_password='123456',MASTER_LOG_FILE = 'mysql-bin.000002',MASTER_LOG_POS =107;
mysql> start slave;
mysql> show slave status\G
在主服務器上修改數據,在從服務器上進行驗證
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章