目標:自動同步Master 服務器上面的Demo數據庫到Slave 服務器的Demo數據庫中。html
對於一些操做系統比較強而使用頻率又不高的東西,每每很久不去弄就忘記了,因此要常常記錄起來,方便往後查閱。mysql
數據庫版本:mysql5.7.17sql
Master 服務器(Windows server2012 R2):192.168.1.18 數據庫
Slave 服務器 (win7 64bit):192.168.1.95segmentfault
mysql5.7.17 winx64免安裝版下載地址:http://dev.mysql.com/downloads/file/?id=467269windows
具體配置方法請參考:http://www.javashuo.com/article/p-gqvqdnjv-gy.html服務器
工具:Cmder(window神器)。你也能夠直接用window的CMD。ide
注意:主從服務器的防火牆都要給mysql端口添加例外。也就是說兩臺服務器的mysql數據庫能夠互連。工具
開始——運行—services.msc,打開主庫的服務列表,找到服務MYSQL57 ,查看該服務的配置文件所在路徑。測試
打開配置文件my.ini,添加以下配置項
log-bin=mysql.bin # 使binlog在每N次binlog寫入後與硬盤同步 sync-binlog=1 # 1天時間自動清理二進制日誌 expire_logs_days=1 # 須要同步的數據庫 binlog-do-db=demo # 不須要同步的數據庫 binlog-ignore-db = mysql binlog-ignore-db = test binlog-ignore-db = information_schema binlog-ignore-db = bak binlog-ignore-db = sys binlog-ignore-db = omserver binlog-ignore-db = sakila binlog-ignore-db = smp_base_1_0 binlog-ignore-db = smp_base_2 binlog-ignore-db = smp_emx_1_0 binlog-ignore-db = smp_emx_2 binlog-ignore-db = smp_maint_1_0 binlog-ignore-db = smp_maint_2 # Error Logging. log-error="WIN-1QQDRPR5R2M.err" # Server Id. server-id=1
主服務器上面有不少數據庫,而咱們只須要同步其中一個數據庫demo。
以一樣的方式找到並打開mysql數據庫配置文件my.ini。
修改配置以下:
# Server Id. server-id=95 # bind-address=192.168.1.95 log_bin=mysql-bin # 二進制日誌自動刪除的天數 expire_logs_days=1
須要注意的是:主庫和從庫的Server Id不能相同,一般咱們將其設置爲IP地址的末尾數值,假如IP是192.168.1.95,那麼咱們設置95.
1.鏈接到主庫
mysql -h 192.168.1.18 -uroot -p
2.建立受權用戶
grant replication slave on *.* to 'test'@'192.168.1.95' identified by 'yujie' ;
說明:test是mysql用戶名,yujie是密碼,192.168.1.95是從庫的IP地址。
3. 刷新權限
flush privileges;
6.建立測試數據
create database test; use test; create table test(id int(11), value varchar(20)); insert into test values(1, 'aa'),(2, 'bb'),(3, 'cc') ,(4, 'dd') ,(5, 'ff') ,(6, 'gg') ,(7, '77');
7. 顯示主服務器的狀態信息,而且找到File 和 Position 的值記錄下來
1.登陸從庫
mysql -uroot -p
2 .將主庫的demo數據庫克隆一份到從庫,並給test用戶從新賦權限。
grant all privileges on *.* to 'test'@'%' identified by 'yujie' with grant option;
3.重啓mysql服務
4.slave
與 master
創建鏈接,進行數據同步
change master to master_host='192.168.1.18',master_user='test',master_password='yujie', master_log_file='mysql.000001',master_log_pos=937;
注意這裏的master_log_file和master_log_pos的值就是前面在主庫中查到的File和Position。
5.查看從數據庫狀態
show slave status \G;
Slave_IO_Running: Yes Slave_SQL_Running: Yes以上兩項都爲Yes說明配置成功。
在master
插入一條數據,而後再slave
查看是否同步成功。
主庫:
mysql> use demo; Database changed mysql> insert into test values(8, '88'); Query OK, 1 row affected (0.14 sec)
從庫:
mysql> use demo; Database changed mysql> select * from test; +------+-------+ | id | value | +------+-------+ | 1 | aa | | 2 | bb | | 3 | cc | | 5 | ff | | 6 | gg | | 7 | 77 | | 8 | 88 | +------+-------+ 7 rows in set (0.00 sec)
如上圖表示同步成功。
其實在mysql5.7以後還有另外一種複製方式,那就是基於事務的複製,而且你能夠在這兩種複製方式之間進行切換,我這裏只演示了經過二進制日誌的形式進行復制。
參考資料:
mysql-5.7.17-winx64免安裝版,win10環境下安裝配置:http://www.javashuo.com/article/p-gqvqdnjv-gy.html
mysql 5.7 主從同步配置(windows):http://www.javashuo.com/article/p-vplzapfa-bd.html
MySQL5.7 主從複製配置:https://segmentfault.com/a/1190000010199283