mysql主從同步配置

主服務器ip192.168.0.101mysql

從服務器ip192.168.0.105sql

  1. 主服務器my.ini配置(個人電腦上的目錄爲D:\soft\MySQL\MySQL Server 5.6\data\my.ini數據庫

 [mysqld]服務器

       log-bin=mysql-bin   //[必須]啓用二進制日誌ide

       server-id=101      //[必須]服務器惟一ID,默認是1,通常取IP最後一段測試

  1. 從服務器my.ini配置(個人電腦上的目錄爲D:\soft\MySQL\MySQL Server 5.6\data\my.inispa

 [mysqld]日誌

       log-bin=mysql-bin   //[必須]啓用二進制日誌code

       server-id=105      //[必須]服務器惟一ID,默認是1,通常取IP最後一段orm

  1. 重啓兩臺服務器上的mysql服務

 

  1. 在主服務器上創建賬戶並受權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,防止主服務器狀態值變化

 

  1. 5.     配置從服務器Slave

先以root的身份登陸mysql

mysql -uroot –proot

配置對應主服務器的信息(ip,用戶名,密碼,master_log_filemaster_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_filemaster_log_pos:前面主服務器使用show master status查看到的值

啓動從服務器複製功能

Mysql>start slave;

 

  1. 6.     檢查從服務器複製功能狀態:

show slave status\G

注:Slave_IOSlave_SQL進程必須正常運行,即YES狀態,不然都是錯誤的狀態(如:其中一個NO均屬錯誤)

 

以上操做過程,主從服務器配置完成。

 

  1. 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. 1.       在主機上先鎖定寫入操做

mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW MASTER STATUS;

記錄下最新的position的值(後面從機上操做時須要用到),好比這邊獲得的值是3308

  1. 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

  1. 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值爲剛纔在主機上獲得的值

  1. 7.       再次重啓從機

STOP SLAVE;
reset slave;

  1. 8.       在從機上執行如下命令

show slave status\G

若是Slave_IOSlave_SQL進程必須正常運行,即YES狀態則代表同步正常了。

相關文章
相關標籤/搜索