1. 程式人生 > >mysql主備環境搭建

mysql主備環境搭建

#主機配置:

service mysqld stop  

#配置my.cnf:

vim /etc/my.cnf

log-bin=mysql-bin-master  #啟用二進位制日誌
server-id       = 1   #本機資料庫ID 標示
binlog-do-db=sdgsfpgl #可以被從伺服器複製的庫。二進位制需要同步的資料庫名
binlog-ignore-db=mysql  #不可以被從伺服器複製的庫

#重啟mysql:

service mysqld restart

#授權:  授權從伺服器,讓從伺服器能夠通過slave賬號進行復制的操作

mysql> grant replication slave on *.* to [email protected] (從)identified by "123456";  

#檢視狀態資訊:

mysql> show master status;
| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------------+----------+--------------+------------------+
| mysql-bin-master.000001 |      259 | HA           | mysql            |
+-------------------------+----------+--------------+------------------+
#檢視二進位制日誌:
ls /data/

#主要是通過這些資訊來進行資料庫還原
mysql> show binlog events\G;  

#備機配置:

mysql> show variables like '%version%';   #  --主備機的版本需要一致

#--驗證定義的slave能否登入

mysql -uslave -p123456 -h 192.168.1.63  

#資料匯入到備庫,保證主備資料庫一致性
service mysqld stop
vim /etc/my.cnf
server-id       = 2  

#從伺服器ID號,不要和主ID相同 ,如果設定多個從伺服器,每個從伺服器必須有一個唯一的server-id值,必須與主伺服器的以及其它從伺服器的不相同。可以認為server-id值類似於IP地址:這些ID值能唯一識別複製伺服器群集中的每個伺服器例項。

#如果是mysql5.1的配置,則新增如下內容

#如果不是mysql5.1,則不用新增文字框裡面的內容
mysql> change master to master_host='192.168.1.63',master_user='slave',master_password='123456'; 
mysql> start slave; 
mysql> show slave status \G;

Slave_IO_Running :一個負責與主機的io通訊,如果這個故障,檢查網路

Slave_SQL_Running:負責自己的slave mysql程序,如果這個故障,檢查服務

  1. 排錯:
    #如果遇到主從不同步,看一下主從bin-log的位置,然後再同步。
    mysql> show master status;   ---主上檢視
    

    #從伺服器執行MySQL命令下:
    mysql> slave stop;             #先停止slave服務
    mysql> change master to master_log_file=' mysql-bin-master.000001' ,master_log_pos= 9759;
    #根據上面主伺服器的show master status的結果,進行從伺服器的二進位制資料庫記錄迴歸,達到同步的效果
    mysql>slave start;                      #啟動從伺服器同步服務
    mysql> show slave status\G;          #用show slave status\G;看一下從伺服器的同步情況
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    如果都是yes,那代表已經在同步
    
    #重啟從伺服器,再檢視狀態:
    #停止從伺服器
    slave stop;
    #開啟從伺服器
    slave start;
    

    總結排錯思路:

    1、二進位制日誌沒有開啟

    2、IPTABLES 沒有放開埠

    3、對應的主機 IP地址寫錯了

    SQL執行緒出錯

    1、主從伺服器資料庫結構不統一

    出錯後,資料少,可以手動解決建立插入,再更新slave狀態。

    注:如果主上誤刪除了。那麼從上也就誤刪除了。  #因此主上要定期做mysqldump備份。