Spring實現讀寫分離(一)–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 數據庫數據一致
3、主DB server開啓二進制日誌,主DB server 和 從DB server的server_id都必須保持唯一
配置
主庫配置
修改${MYSQL_HOME}\data\my.init文件
#開啓主從複製,主庫的配置
log-bin = logs\mysql3306-bin
#指定主庫serverid
server-id=101
#指定同步的數據庫名,如果不指定則同步全部數據庫
binlog-do-db=mybatis_db
執行SQL語句查詢狀態:
SHOW MASTER STATUS
需要記錄下Position值,需要在從庫中設置同步起始值
在主庫中創建一個同步用戶
#授權用戶slave01使用123456密碼登錄mysql
grant replication slave on *.* to 'slave01'@'127.0.0.1' identified by '123456';
flush privileges;
從庫配置
修改${MYSQL_HOME}\data\my.init文件
#指定serverid,只要不重複即可,從庫也只有這一個配置,其他都在SQL語句中操作
server-id=102
配置同步信息SQL
CHANGE MASTER TO
master_host='127.0.0.1',
master_user='slave01',
master_password='123456',
master_port=3306,
master_log_file='mysql3306-bin.000006',
master_log_pos=1120;
以上具體的值均從主配置中得到
啓動從節點,並查看主從同步信息:
#啓動slave同步
START SLAVE;
#查看同步狀態
SHOW SLAVE STATUS;
如果上面的配置中,出現不一致的情況,則可以查看從節點的錯誤日誌信息。
例如:由於一般主從庫在安裝的時候都是拷貝過來的,需要更改uuid信息
${MYSQL_HOME}\data\data\auto.cfg.如果這個文件的值都是一致的,主從配置也會失敗
[auto]
server-uuid=d71ec2ee-65ba-11e5-a4e3-000c29deb96e