MySQL-主從複製之同步主從資料
前面兩篇部落格中,我們分別介紹瞭如何搭建主資料庫以及從資料庫,但是到此為止,緊緊只是安裝好了兩個MySQL資料庫例項,並沒有設定主從的關係,更不用說將主資料庫同步到從資料庫了。所以接下來,我們做最後一步的同步動作。
一、原理
MySQL主(稱master)從(稱slave)複製的原理:
(1)master將資料改變記錄到二進位制日誌(binary log)中,也即是配置檔案log-bin指定的檔案(這些記錄叫做二進位制日誌事件,binary log events)。
(2)slave將master的binary log events拷貝到它的中繼日誌(relay log)。
(3)slave重做中繼日誌中的事件,將改變反映它自己的資料(資料重演)。
二、主從配置需要注意的地方
(1)主DB server和從DB server資料庫的版本一致。
(2)主DB server和從DB server資料庫資料一致,我們在主從資料庫分別建立test資料庫和user表,並插入同樣的資料:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL COMMENT '使用者名稱',
`password` VARCHAR(32) NOT NULL COMMENT '密碼,加密儲存',
`phone` VARCHAR(20) DEFAULT NULL COMMENT '註冊手機號',
`email` VARCHAR(50) DEFAULT NULL COMMENT '註冊郵箱',
`created` DATETIME NOT NULL,
`updated` DATETIME NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`) USING BTREE,
UNIQUE KEY `phone` (`phone`) USING BTREE,
UNIQUE KEY `email` (`email`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='使用者表';
-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO `user` VALUES ('7', 'zhangsan', '11111111', '13888888888', '360@qq.com', '2016-08-17 11:44:01', '2016-08-17 11:44:03');
INSERT INTO `user` VALUES ('8', 'zhangsan1', 'a99442d2a736365f5fe637e299b0e339', '13888888889', NULL, '2016-08-17 14:53:40', '2016-08-17 14:53:40');
(3)主DB server開啟二進位制日誌,主DB server和從DB server的server_id都必須唯一。
(4)server-uuid必須不同。
三、主資料庫配置(3380)
(1)在my.ini修改如下:
(2)執行SQL語句查詢狀態:SHOW MASTER STATUS
(3)建立同步使用者
#授權使用者slave01使用123456密碼登入mysql
grant replication slave on *.* to 'slave01'@'127.0.0.1' identified by '123456';
flush privileges;
四、從資料庫配置(3381)
(1)設定主資料庫配置
CHANGE MASTER TO
master_host='127.0.0.1', # 主資料庫地址
master_user='slave01', # 主資料庫同步使用者
master_password='123456', # 主資料庫同步使用者密碼
master_port=3380, # 主資料庫埠
master_log_file='ANBANG713-bin.000001', # 主資料庫二進位制檔案
master_log_pos=2443; # 主資料庫二進位制檔案當前位置
(2)啟動slave同步:START SLAVE;(停止slave同步:STOP SLAVE;)
(3)檢視同步狀態:SHOW SLAVE STATUS;(是否同步成功的標誌即這兩個值都為Yes)
五、測試
(1)我們修改主庫的user表資料,將id為7的password修改為222。
update user a set a.password=222 where a.`id` = '7';
(2)檢視從庫的user表,可以看到已成功同步過來。
相關文章
- MySQL-主從複製之搭建主資料庫MySql資料庫
- MySQL-主從複製之搭建從資料庫MySql資料庫
- MySQL-主從複製簡介MySql
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- MySQL主從複製、半同步複製和主主複製MySql
- MySQL主從複製、半同步複製和主主複製概述MySql
- MySQL的主從複製、半同步複製、主主複製詳解MySql
- 配置mysql5.5主從複製、半同步複製、主主複製MySql
- 主從複製--非同步篇非同步
- 資料庫主從複製資料庫
- MySQL 5.7的安裝及主從複製(主從同步)MySql主從同步
- Mysql-主從複製與讀寫分離MySql
- MySQL主從複製與主主複製MySql
- mysql資料庫的主從複製和主主複製實踐MySql資料庫
- Redis基礎篇(六)資料同步:主從複製Redis
- MySQL主從雙向同步複製MySql
- mysql資料庫資料同步/主從複製的配置方法MySql資料庫
- mysql5.7主從複製,主主複製MySql
- 主從複製
- MySQL叢集之 主從複製 主主複製 一主多從 多主一叢 實現方式MySql
- 用 docker 學習 redis 主從複製2 主從同步的offsetDockerRedis主從同步
- 主從複製、雙主複製及半同步複製、以及基於SSL的複製
- MySQL主從複製之GTID複製MySql
- MySQL(二):主從複製結構、半同步複製、雙主複製結構、利用SSL實現安全的MySQL主從複製MySql
- MySQL5.7主從複製-半同步複製搭建MySql
- mysql主從複製(一):一主多從MySql
- MYSQL資料庫主從同步(一主一從)MySql資料庫主從同步
- linux下mysql主從複製,實現資料庫同步LinuxMySql資料庫
- MySQL的主從複製與MySQL的主主複製MySql
- Redis - 主從複製Redis
- Redis:主從複製Redis
- MongoDB主從複製MongoDB
- MySQL 主從複製MySql
- 【MySql】主從複製MySql
- Redis主從複製Redis
- mysql主從複製MySql
- MysqL主從複製_模式之GTID複製MySql模式