mysql主備環境搭建
阿新 • • 發佈:2019-01-10
#主機配置:
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程序,如果這個故障,檢查服務
- 排錯:
#如果遇到主從不同步,看一下主從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備份。