目標:自動同步Master 伺服器上面的Demo資料庫到Slave 伺服器的Demo資料庫中。 對於一些操作系統比較強而使用頻率又不高的東西,往往好久不去弄就忘記了,所以要經常記錄起來,方便日後查閱。 環境 資料庫版本:mysql5.7.17 Master 伺服器(Windows server201 ...
目標:自動同步Master 伺服器上面的Demo資料庫到Slave 伺服器的Demo資料庫中。
對於一些操作系統比較強而使用頻率又不高的東西,往往好久不去弄就忘記了,所以要經常記錄起來,方便日後查閱。
環境
資料庫版本:mysql5.7.17
Master 伺服器(Windows server2012 R2):192.168.1.18
Slave 伺服器 (win7 64bit):192.168.1.95
mysql5.7.17 winx64免安裝版下載地址:http://dev.mysql.com/downloads/file/?id=467269
具體配置方法請參考:https://www.cnblogs.com/c3gen/p/6168765.html
工具:Cmder(window神器)。你也可以直接用window的CMD。
註意:主從伺服器的防火牆都要給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環境下安裝配置:https://www.cnblogs.com/c3gen/p/6168765.html
mysql 5.7 主從同步配置(windows):https://blog.csdn.net/natahew/article/details/71122569
MySQL5.7 主從複製配置:https://segmentfault.com/a/1190000010199283