主服務器ip:192.168.0.101mysql
從服務器ip:192.168.0.105sql
主服務器my.ini配置(個人電腦上的目錄爲D:\soft\MySQL\MySQL Server 5.6\data\my.ini)數據庫
[mysqld]服務器
log-bin=mysql-bin //[必須]啓用二進制日誌ide
server-id=101 //[必須]服務器惟一ID,默認是1,通常取IP最後一段測試
從服務器my.ini配置(個人電腦上的目錄爲D:\soft\MySQL\MySQL Server 5.6\data\my.ini)spa
[mysqld]日誌
log-bin=mysql-bin //[必須]啓用二進制日誌code
server-id=105 //[必須]服務器惟一ID,默認是1,通常取IP最後一段orm
重啓兩臺服務器上的mysql服務
在主服務器上創建賬戶並受權slave:
先以root的身份登陸mysql
mysql -uroot -proot
建立用於同步的mysql帳號並受權只容許從服務器登陸同步
GRANT REPLICATION SLAVE ON *.* to 'mysync'@'192.168.0.105' identified by 'q123456';
登陸主服務器的mysql,查詢master的狀態
show master status;
注:執行完此步驟後不要再操做主服務器MYSQL,防止主服務器狀態值變化
5. 配置從服務器Slave:
先以root的身份登陸mysql
mysql -uroot –proot
配置對應主服務器的信息(ip,用戶名,密碼,master_log_file,master_log_pos等參數)
change master to master_host='192.168.0.101',master_user='mysync',master_password='q123456', master_log_file='mysql-bin.000001',master_log_pos=332;
//注意不要斷開,332數字先後無單引號。
master_host:主服務器的ip
master_user:主服務器上建立的用於兩步的用戶的用戶名
master_password:主服務器上建立的用於兩步的用戶的密碼
master_log_file和master_log_pos:前面主服務器使用show master status查看到的值
啓動從服務器複製功能
Mysql>start slave;
6. 檢查從服務器複製功能狀態:
show slave status\G
注:Slave_IO及Slave_SQL進程必須正常運行,即YES狀態,不然都是錯誤的狀態(如:其中一個NO均屬錯誤)
以上操做過程,主從服務器配置完成。
7. 主從服務器測試:
主服務器Mysql,創建數據庫,並在這個庫中建表插入一條數據:
mysql> create database hi_db;
Query OK, 1 row affected (0.00 sec)
mysql> use hi_db;
Database changed
mysql> create table hi_tb(id int(3),name char(10));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into hi_tb values(001,'bobu');
Query OK, 1 row affected (0.00 sec)
登陸從服務器可查看到對應的數據庫和表等都已經同步了。
使用以上過程進行同步後,雖然以後建立的數據庫均可同步,但在配置同步以前的數據庫是不能同步的,好比個人主機上有一個jeecg_gjh數據庫是在同步以前已經建立的,同步後這個庫是不會自動同步的從機上的,若是要同步須要手動執行如下操做:
1. 在主機上先鎖定寫入操做
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW MASTER STATUS;
記錄下最新的position的值(後面從機上操做時須要用到),好比這邊獲得的值是3308
2. 另開一個窗口在主機上導出jeecg這個庫
mysqldump -u jeecg -pjeecg --opt -R jeecg_gjh > d:/temp/jeecg_gjh20150904.sql
3. 把導出的sql拷貝到從機上
4. 在主機上建立一樣的用戶名,密碼,庫並導入剛纔從主機上導出的數據
CREATE DATABASE `jeecg_gjh` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
grant all privileges on jeecg_gjh.* to jeecg@localhost identified by 'jeecg';
use jeecg_gjh;
source d:/temp/jeecg_gjh20150904.sql
5. 重啓從機
STOP SLAVE;
reset slave;
6. 從新指定主機
change master to master_host='192.168.0.101',master_user='mysync',master_password='q123456', master_log_file='mysql-bin.000001',master_log_pos=3308;
注意這邊的master_log_pos值爲剛纔在主機上獲得的值
7. 再次重啓從機
STOP SLAVE;
reset slave;
8. 在從機上執行如下命令
show slave status\G
若是Slave_IO及Slave_SQL進程必須正常運行,即YES狀態則代表同步正常了。