環境說明
1、MySQL主服務器 IP:192.168.1.110 主機名稱:MySQL Master MySQL版本:mysql-7.5
2、MySQL從服務器 IP:192.168.1.111 主機名稱:MySQL SlaveMySQL版本:mysql-7.5
一、主從備份(數據僅從主服務同步到備份服務器)
1、主備服務器上安裝的mysql 需要授權遠程訪問 最好建立一個同步的單獨用戶synch)
主服務器Mysql同步用戶 授權遠程訪問權限配置:
mysql>GRANT ALL PRIVILEGES ON *.* TO 'synch'@'%' IDENTIFIED BY '12345' WITH GRANT OPTION;
#將所有數據庫的所有表(*.*)的所有權限(all privileges),授予通過任何ip(%)訪問的synch用戶,密碼爲12345
mysql>flush privileges;
2、配置MySQL主服務器的my.cnf文件
#vi /etc/my.cnf
編輯配置文件,在[mysqld]部分添加下面內容
server-id=1 #設置服務器id 用於標識不同的數據庫服務器
log-bin=mysql-bin #啓動mysql二進制日誌系統
relay-log=relay-bin
relay-log-index=relay-bin-index
binlog-do-db=sy_test #需要同步的數據庫名,如果有多個數據庫,可重複此參數
binlog-ignore-db = information_schema
binlog-ignore-db = mysql
binlog-ignore-db = test #不同步mysql系統數據庫
:wq! #保存退出
注意:windows系統修改mysql安裝
根目錄下my.ini文件 (5.6版本默認爲my-default.ini 需要重命名爲my.ini修改配置並重啓mysql服務配置才能生效)
#service mysqld restart #重啓MySQL
#mysql -u root -p #進入mysql控制檯
mysql>show master status; 查看主服務器配置信息
3、配置MySQL從服務器的my.cnf文件
#vi /etc/my.cnf
編輯配置文件,在[mysqld]部分添加下面內容
server-id=2 #配置文件中已經有一行server-id=1,修改其值爲2,表示爲從數據庫
log-bin=mysql-bin #啓動MySQ二進制日誌系統,注意:如果原來的配置文件中已經有這一行,就不用再添加了。
replicate-do-db=sy_test #需要同步的數據庫名,如果有多個數據庫,可重複此參數,每個數據庫一行
replicate-ignore-db=mysql #不同步mysql系統數據庫
:wq! #保存退出
其他參數說明:
replicate_wild_do_table 和 replicate_wild_ignore_table
參數解決同步所有跨數據庫的更新,與replicate-do-db或者replicate-ignore-db類似
auto_increment_increment和auto_increment_offset
這兩個參數一般用在主主同步中,用來錯開自增值,防止鍵值衝突
slave-skip-errors= [err1,err2,…….|ALL]
用來定義複製過程中從服務器可以自動跳過的錯誤號(1062,1053,1146),當複製過程中遇到定義的錯誤號,就可以自動跳過,直接執行後面的SQL語句,慎用,當啓動這個參數,MYSQL會忽略那些錯誤,可能造成主從數據庫的數據不同步。
master-connect-retry
這個參數是用來設置在和主服務器連接丟失的時候,重試的時間間隔,默認是60秒
log-slave-updates
這個參數用來配置從服務器的更新是否寫入二進制日誌,這個選項默認是不打開的,但是,如果這個從服務器B是服務器A的從服務器,
同時還作爲服務器C的主服務器,那麼就需要開發這個選項,這樣它的從服務器C才能獲得它的二進制日誌進行同步操作
4、配置 同步master配置屬性
(MySQL 5.1.7版本之後,已經不支持把master配置屬性寫入my.cnf配置文件中了,只需要把同步的數據庫和要忽略的數據庫寫入即可)
#service mysqld restart #重啓MySQL
#mysql -u root -p #進入MySQL控制檯
mysql>stop slave; #停止slave同步進程
mysql>change master to master_host='192.168.1.110',master_user='synch',master_password='12345',master_log_file='mysql-bin.000003' ,master_log_pos=413;
#執行同步語句
mysql>start slave; #開啓slave同步進程
mysql>SHOW SLAVE STATUS; #查看slave同步信息
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上這兩個參數的值爲Yes,即說明配置成功!
5、在MySQL主服務器 增刪改數據 查看從服務器是否都同步成功 驗證MySQL主從服務器雙機熱備是否成功
二、雙機互爲備份(兩個服務器數據互相同步)
1、在原主服務器 mysql 配置文件中添加同步數據配置
binlog-do-db=sy_test #需要同步的數據庫名,如果有多個數據庫,可重複此參數
binlog-ignore-db = mysql#不同步mysql系統數據庫
replicate-do-db=sy_test #需要同步的數據庫名,如果有多個數據庫,可重複此參數,每個數據庫一行
replicate-ignore-db=mysql #不同步mysql系統數據庫
2、在原從服務器 授權同步用戶
服務器Mysql同步用戶 授權遠程訪問權限配置:
mysql>GRANT ALL PRIVILEGES ON *.* TO 'synch'@'%' IDENTIFIED BY '12345' WITH GRANT OPTION;
#將所有數據庫的所有表(*.*)的所有權限(all privileges),授予通過任何ip(%)訪問的synch用戶,密碼爲12345
mysql>flush privileges;
3、原主服務 mysql 指定需要同步的數據庫地址用戶等信息
mysql>stop slave; #停止slave同步進程
mysql>change master tomaster_host='192.168.1.111',master_user='synch',master_password='12345';
#執行同步語句
mysql>start slave; #開啓slave同步進程
mysql>SHOW SLAVE STATUS; #查看slave同步信息