花了大半天的時間研究mysql 5.0.* ,參考了很多文檔,總算將mysql的雙機熱備給搞定了。心情很好,寫個文章紀念一下。因為以后還可能實際用到,所以也作以下筆記。
使用兩臺虛擬機,nod1和nod2,分別設置兩塊網卡,橋接到主機網卡上。
nod1 eth0:192.168.145.162
eth1:192.168.254.1
nod2 eth0:192.168.145.168
eth1:192.168.254.2
1.基礎安裝mysql.
首先干凈的系統,不是干凈的系統不要緊,反正自己搞明白就行了。在nod1上安裝mysql.
yum -y install mysql-server
chkconfig mysqld on
service mysqld start
mysqladmin -uroot password’1q2w3e’修改root密碼。
nod2上同樣方式安裝mysql,并做如上操作。
2.nod1上mysql的設置。
在這里我就用test數據庫來做測試,在test數據庫里新建一個data表,并添加一些數據,具體操作如下:
#mysql -uroot -p1q2w3e
mysql> create table data(name VARCHAR(20), address VARCHAR(50), phone VARCHAR(20));
mysql>insert into data(name,address,phone) values(‘johnson’,’shanghai’,'135000000′);mysql>select * from data;
+———+———-+———–+
| name | address | phone |
+———+———-+———–+
| johnson | shanghai | 135000000 |
+———+———-+———–+
1 row in set (0.01 sec)
設置數據庫同步帳戶:
mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO ‘backup’@'192.168.254.2′ IDENTIFIED BY ‘qawsed’;
(授與從192.168.254.2主機上登錄用戶backup數據復制權限,4.02版本以前用:GRANT FILE ON *.* TO backup@192.168.254.2 IDENTIFIED BY ‘qawsed’;)
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服務
service mysqld stop
在[mysqld]中加入以下內容
server-id=1 #設置服務器的ID號
log-bin #設置同步log
binlog-do-db=test #設置同步數據庫
max_binlog_size=104857600
replicate-same-server-id
master-host=192.168.254.2 #主機IP
master-user=backup
master-password=qawsed
master-port=3306
master-connect-retry=60 #斷點重試間隔為60秒
replicate-do-db=test #表示同步test數據庫
binlog-ignore-db=mysql #不同步的數據庫
# service mysqld start //先啟動mysql
# mysqldump -h localhost -u root -p1q2w3e test >test.sql
#scp test.sql root@192.168.2542:/ //(將test.sql復制到mysqlB的/目錄下)
至此nod1服務器上有關mysql的設置已完成,下一步開始配置nod2
設置nod2
設置數據庫同步帳戶:
mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO ‘backup’@'192.168.254.1′ IDENTIFIED BY ‘qawsed’;
(授與從192.168.254.1主機上登錄用戶backup數據復制權限,4.02版本以前用:GRANT FILE ON *.* TO backup@192.168.254.1 IDENTIFIED BY ‘qawsed’;)
mysql>flush privileges;
修改配置文件:
停止mysql服務
#service mysqld stop
更改Mysql配置文件/etc/my.cnf
# vi /etc/my.cnf
server-id=2 #設置服務器的ID號
log-bin #設置同步log
binlog-do-db=test #設置同步數據庫
max_binlog_size=104857600
replicate-same-server-id
master-host=192.168.254.1 #主機IP
master-user=backup
master-password=qawsed
master-port=3306
master-connect-retry=60 #斷點重試間隔為60秒
replicate-do-db=test #表示同步test數據庫
binlog-ignore-db=mysql #不同步的數據庫
還原從mysqlA備份過的test.sql
#service mysqld start
# mysql -u root -p1q2w3e test
重啟兩邊的mysql服務
查詢配置
Show Slave status:此處Slave_IO_Running ,Slave_SQL_Running 都應該是yes,表示從庫的I/O,Slave_SQL線程都正確開啟.
在Mysql中可通過以下命令來查看主從狀態
show master status 查看master狀態
show slave status 查看slave狀態
show processlist G 查看當前進程
stop slave 暫時停止slave進程
start slave 開始slave進程
在primary服務器上 MySQL命令符下輸入:
mysql>show master status;
+——————-+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————-+———-+————–+——————+
| mysqld-bin.000001 | 196 | test | mysql |
+——————-+———-+————–+——————+
1 row in set (0.00 sec)
mysql>show slave status/G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.254.1
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysqld-bin.000001
Read_Master_Log_Pos: 235
Relay_Log_File: mysqld-relay-bin.000003
Relay_Log_Pos: 236
Relay_Master_Log_File: mysqld-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: test
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 235
Relay_Log_Space: 236
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.01 sec)
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: test
表示正常!
到此mysql的雙機互備已基本完成,在兩臺服務器的mysql數據庫中任意添加數據,都可以同步到對端服務器上
新聞熱點
疑難解答