環境mysql
主服務器maser 192.168.1.140sql
從服務器slave: 192.168.1.142數據庫
一、主從服務器分別做如下操做
1.1、版本一致
1.2、啓動mysql
2、修改主服務器master:
#vi /etc/my.cnfvim
[mysqld]
log-bin=master-bin #啓用二進制日誌
server-id=1 # 爲主節點建立一個全局惟一的id服務器
innodb_file_per_table=ONide
skip_name_resolve=ON測試
3、修改從服務器slave:spa
# vim /etc/my.cnf線程
[mysqld]rest
relay-log=test-relay-log #啓動中繼日誌
server-id=11 #爲從節點建立一個全局惟一的id
innodb_file_per_table=ON
skip_name_resolve=ON
4、重啓兩臺服務器的mysql
# service mysqld restart
5、在主服務器上創建賬戶並受權slave:建立有複製權限的用戶帳號
mysql> grant replication slave,replication client on *.* to 'zhaojing'@'192.168.1.%' identified by 'testzj';
mysql> flush privileges; #從新加載權限表更新權限
說明
on *.* #指全部數據庫
identified by 'testzj' #設定密碼爲‘testzj’
mysql 新設置用戶或更改密碼後需用flush privileges刷新MySQL的系統權限相關表不然會出現拒絕訪問還有一種方法就是從新啓動mysql服務器來使新設置生效。
(ps:
MySQL 賦予用戶權限命令的簡單格式可歸納爲
grant 權限 on 數據庫對象 to 用戶)
6、登陸主服務器的mysql查詢master的狀態
mysql> show master logs; 或者show master status
+-------------------+-----------+
| Log_name | File_size |
+-------------------+-----------+
| master-bin.000001 | 143 |
| master-bin.000002 | 120 |
+-------------------+-----------+
注執行完此步驟後不要再操做主服務器MYSQL防止主服務器狀態值變化
七、使用有複製權限的用戶帳號鏈接主服務器而且啓動複製線程
mysql>change master to master_host='192.168.1.140',master_user='zhaojing'
,master_password='testzj',master_log_file='master-bin.000002',
,master_log_pos=120; #注意字符加引號具體數值不加
mysql>start slave; # 啓動從服務器複製功能
8、檢查從服務器複製功能狀態
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.140
Master_User: zhaojing
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000002
Read_Master_Log_Pos: 535
Relay_Log_File: test-relay-log.000002
Relay_Log_Pos: 820
Relay_Master_Log_File: master-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
省略若干行......................
注Slave_IO及Slave_SQL進程必須正常運行即顯示YES狀態不然都是錯誤的狀態(如其中一個NO均屬錯誤)。
以上操做過程主從服務器配置完成。
9、主從服務器測試
在主服務器mysql創建一個數據庫testlog1
mysql> create database testlog1;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| testlog |
| testlog1 |
| xs |
+--------------------+
從服務器mysql查詢
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| DB |
| mysql |
| performance_schema |
| test |
| testlog |
| testlog1 | # I'M here你們看到了吧
| vsftpd |
+--------------------+
8 rows in set (0.00 sec)
操做中出現的問題
當我在配置完成後檢查從服務器複製功能狀態
mysql> show slave status\G
發現
Slave_IO_Running: Connecting #不是YES
Slave_SQL_Running: Yes
個人問題就是主機的防火牆沒有關閉犯了一個低級錯誤
關閉主機防火牆主從複製才能實現。