共計 3561 個字符,預計需要花費 9 分鐘才能閱讀完成。
mysql 中怎么利用 master-master 實現雙機熱備份,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
1、環境描述。
主機:192.168.0.167(A)
主機:192.168.0.251(B)
MYSQL 版本為 5.1.11
2、授權用戶。
A:
grant replication slave,file on *.* to identified
by 123456;
Query OK, 0 rows affected (0.00 sec)
mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)
B:
mysql grant replication slave,file on *.* to identified
by 123456;
Query OK, 0 rows affected (0.00 sec)
mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)
然后都停止 MYSQL 服務器。
3、配置文件。
在兩個機器上的 my.cnf 里面都開啟二進制日志。
A:
user = mysql
log-bin=mysql-bin
server-id = 1
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
B:
user = mysql
log-bin=mysql-bin
server-id = 2
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2
至于這些參數的說明具體看手冊。
紅色的部分非常重要,如果一個 MASTER 掛掉的話,另外一個馬上接管。
紫紅色的部分指的是服務器頻繁的刷新日志。這個保證了在其中一臺掛掉的話,日志刷新到另外一臺。從而保證了數據的同步。
4、重新啟動 MYSQL 服務器。
在 A 和 B 上執行相同的步驟
[root@localhost ~]# /usr/local/mysql/bin/mysqld_safe
[1] 4264
[root@localhost ~]# 071213 14:53:20 mysqld_safe Logging to /usr/local/mysql/data/localhost.localdomain.err.
/usr/local/mysql/bin/mysqld_safe: line 366: [: -eq: unary operator expected
071213 14:53:20 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
5、進入 MYSQL 的 SHELL。
A:
mysql flush tables with read lockG
Query OK, 0 rows affected (0.00 sec)
mysql show master statusG
*************************** 1. row ***************************
File: mysql-bin.000007
Position: 528
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
B:
mysql flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql show master statusG
*************************** 1. row ***************************
File: mysql-bin.000004
Position: 595
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
然后備份自己的數據,保持兩個機器的數據一致。
方法很多。完了后看下一步。
6、在各自機器上執行 CHANGE MASTER TO 命令。
A:
mysql change master to
– master_host=192.168.0.251,
– master_user=backup_251,
– master_password=123456,
– master_log_file=mysql-bin.000004,
– master_log_pos=595;
Query OK, 0 rows affected (0.01 sec)
mysql start slave;
Query OK, 0 rows affected (0.00 sec)
B:
mysql change master to
– master_host=192.168.0.167,
– master_user=backup_167,
– master_password=123456,
– master_log_file=mysql-bin.000007,
– master_log_pos=528;
Query OK, 0 rows affected (0.01 sec)
mysql start slave;
Query OK, 0 rows affected (0.00 sec)
7、查看各自機器上的 IO 進程和 SLAVE 進程是否都開啟。
A:
mysql show processlistG
*************************** 1. row ***************************
Id: 2
User: repl
Host: 192.168.0.251:54475
db: NULL
Command: Binlog Dump
Time: 1590
State: Has sent all binlog to slave; waiting for binlog to be updated
Info: NULL
*************************** 2. row ***************************
Id: 3
User: system user
Host:
db: NULL
Command: Connect
Time: 1350
State: Waiting for master to send event
Info: NULL
*************************** 3. row ***************************
Id: 4
User: system user
Host:
db: NULL
Command: Connect
Time: 1149
State: Has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
*************************** 4. row ***************************
Id: 5
User: root
Host: localhost
db: test
Command: Query
Time: 0
State: NULL
Info: show processlist
4 rows in set (0.00 sec)
B:
mysql show processlistG
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db: NULL
Command: Connect
Time: 2130
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 2
User: system user
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注丸趣 TV 行業資訊頻道,感謝您對丸趣 TV 的支持。