mysql 復制的實現機制
1)首先主mysql把操作語句保存在bin-log中
2)從服務器啟動一個進程或線程向主mysql發起請求
3)從mysql 把主mysql的bin-log中的操作語句復制的從mysql的relay-log中
4)在從上執行這些操作語句
配置
主mysql 這裡主要介紹要改變的內容(主從就是從各自為主的獨立模式改變過來的)
1)在/etc/my.cnf 添加或修改如下內容
bin-log = mysql.bin-log #定義bin-log的文件名 (默認保存在數據目錄下)
bin-log-index = mysql.bin-log.index #定義bin-log-index的文件名
binlog-format = mixed #定義binlog的格式
server-id = 1 #一定要確保主mysql的server-id 小於從mysql的server-id
2)啟動mysql 和配置
#service mysqld start
#mysql #進入mysql
#set password for root@‘localhost’=password(‘mima’);
#set password for root@‘127.0.0.1’=password(‘mima’);
#grant replication slave,replication client on *.* to username@'ip' identified by 'mima'; #賦予username 擁有復制的權限
#flush privileges;
#show master status; #查看主mysql的狀態
從mysql
1)在/etc/my.cnf 添加或修改如下內容
relay-log = mysql.relay-log #定義relay-log的文件名 (默認保存在數據目錄下)
relay-log-index = mysql.relay-log.index #定義relay-log-index的文件名
server-id = 11 #一定要大於主mysql的server-id
2)啟動mysql 和配置
#service mysqld start
#mysql #進入mysql
#set password for root@‘localhost’=password(‘mima’);
#set password for root@‘127.0.0.1’=password(‘mima’);
#flush privileges;
#change master to master_host='master_ip',master_user='username',master_password='mima';
#鏈接主mysql
#start slave;
#show slave status;
測試
在主mysql上建立一個數據庫或表,查看從mysql是否自動‘復制’的過來
主主 的模式其實就是兩邊都是主,同時互為主從,可以簡單的理解為把主從的配置文件整合一下就行了~~
主主模式有一個最大的問題就是當主從都同時向同一張表中寫數據時,如果對應的id是自動增加,這是就有了嚴重的問題,為了解決這個問題,需要設定低端不同的起始值,並指定自動增加的變量為2。
作者“殘雪”