天天看點

Mysql 雙機熱備 設定政策Mysql 雙機熱備 設定政策

http://www.toutiao.com/a6348218076932538625/?tt_from=mobile_qq&utm_campaign=client_share&app=explore_article&utm_source=mobile_qq&iid=5840657922&utm_medium=toutiao_ios

Mysql 雙機熱備 設定政策

UI視訊教程  2016-11-02 12:15:08

可以替換的配置變量

Master:219.245.87.10

slave的授權賬号:backup

slave的授權賬号密碼:[email protected]

master的同步資料庫:lian

---------------------------------------------------------------------------------------------------------------

/etc/init.d/iptalbes start 開啟指令

/etc/init.d/iptables restart 重新開機指令

1.修改my.cnf

(1)在[mysqld]後加入:

server-id=1

#同步事件的日志記錄檔案,最好不要寫參數,預設為 log-bin=MySQL-bin.000001

log-bin=

#提供資料同步服務的資料庫,多個用逗号分開。在slave 端配置即可

binlog-do-db=lian

#要忽略的資料庫

binlog-ignore-db=mysql

(2)屏蔽下面的設定,打開遠端連接配接

#bind-address = 127.0.0.1

2.可以導出要同步的資料庫給slave初始化用.

2.1 适用于兩個已存在的資料庫

mysqldump [OPTIONS] database [tables]

mysqldump -u root -p backup_db > backup_db.txt;//導出backup_db庫

恢複時使用:

mysql>create database backup_db;

mysql>use backup_db;

mysql>source /var/www/db.txt //win下可能需要<符号

mysqldump -u root -p --all-database > db.txt //導出全部

mysqldump -u root -p --databases DB1 DB2 DB2_table1 >db.txt

2.2 适用于slave為新的資料庫

适合于建立資料庫的情況,特别适合于 master 與 slave 在 my.cnf 已經設定好 replication 關系 (但未指定 database 同步資料庫 ) 的情況: 這就是使用 mysql 的 sql 語句 load table from master 與 load data from master;

load table from master 可以從 master 資料庫把表結構複制到 slave 資料庫中,這樣可以建立同步的表。

load data from master 是從 master 資料庫把資料導入到 slave 資料表中,條件是 master 從一開始安裝運作就使用了 bin-log 參數而儲存有二進制日志

3.給slave建立的授權登入帳号

mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO [email protected] IDENTIFIED BY '[email protected]';

mysql> flush privileges;

mysql> select user,host from user;

+——–+——————+

| user | host |

+——–+——————+

| root | 127.0.0.1 |

| backup | 192.168.254.2 |

| | localhost |

| root | localhost |

| | nod1.test.domain |

| root | nod1.test.domain |

+——–+——————+

6 rows in set (0.01 sec)

(為強安全選項,權限少。mysql>GRANT REPLICATION SLAVE ON *.* TO [email protected] IDENTIFIED BY '[email protected]';)

注意:backup,1234為slave的登入帳号

4.重新開機mysql,

mysql>show master status /G

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

File: mysql-bin.000001

Position: 98

Binlog_Do_DB: lian

Binlog_Ignore_DB: mysql

1 row in set (0.00 sec)

Slave:10.10.10.22

slave做更新的資料庫:lian

---------------------------------------------------------------------------------------------------------------

1.修改my.cnf

(1)在[mysqld]後加入:

server-id=2 # 如果有多個 slave 就改為不重複的 id 就好,在mysql 4.1 中,這個已經取消了

master-host=10.10.10.22

master-user=backup #同步使用者帳号

[email protected]

master-port=3306

master-connect-retry=60 #預設重試間隔60秒

replicate-do-db=lian # 告訴slave隻做 test 資料庫的更新

bin-log =

(2)可選;雙向備份時必須!屏蔽下面的設定,打開遠端連接配接,

#bind-address = 127.0.0.1

2.導入目标資料庫

2.1 恢複時使用:

mysql>create database backup_db;

mysql>use backup_db;

mysql>source /var/www/db.txt //win下可能需要<符号

2.2 适用于slave為新的資料庫

适合于建立資料庫的情況,特别适合于 master 與 slave 在 my.cnf 已經設定好 replication 關系 (但未指定 database 同步資料庫 ) 的情況: 這就是使用 mysql 的 sql 語句 load table from master 與 load data from master;

load table from master 可以從 master 資料庫把表結構複制到 slave 資料庫中,這樣可以建立同步的表。

load data from master 是從 master 資料庫把資料導入到 slave 資料表中,條件是 master 從一開始安裝運作就使用了 bin-log 參數而儲存有二進制日志

3.重新開機mysql

mysql>slave start;

mysql>show slave status /G

=============確定===============

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

##############################################################################################################

1. master 與 slave 有相同的初始資料記錄,保證同步操作開始後兩者資料一緻

2. master 必須使用 bin-log 二進制日志記錄 ( 推薦 slave 也使用 bin-log )

3.當有錯誤産生時檢查slave的data目錄下*.err日志檔案。此時同步的線程退出

4.如果你用 Linux / unix 作業系統,那一定要注意一下防火牆 firewall

有沒有限制 mysql 遠端通路,如果是,最好是打開遠端通路端口,并作好通路 ip 限制

5. slave 是從 master 的 bin-log 是讀取 sql 記錄來同步,是以,從哪一條 log 開始讀取很重要

這樣即執行了手工同步

6.程式可能在slave上進行了寫操作

7.也可能是slave機器重起後,事務復原造成的.

手工同步方法

----------

1.首先停掉Slave服務:slave stop

2.到主伺服器上檢視主機狀态:

記錄File和Position對應的值。

mysql> show master status /G

File: log-test.000003

Position: 98

3.到slave伺服器上執行手動同步:

mysql>change master to

master_host='202.117.113.138',

master_user='backup',

master_password='1234',

master_port=3306,

master_log_file='log-test.000003',

master_log_pos=98;

4.開啟slave服務并測試:

mysql> slave start;

1 row in set (0.00 sec)

再次檢視slave狀态發現:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

...

Seconds_Behind_Master: 0