數據庫主從複製搭建
Start slave stop slave reset slave
搭建環境:game7:3306,3307
l datadir:/usr/local/mysql/data/3306/ /usr/local/mysql/data/3307/
l my.cnf:/usr/local/mysql/data/3306/my.cnf /usr/local/mysql/data/3307/myc.nf
這次搭建的環境都是新建立的,所以不用考慮數據拷貝複製這個環節
主庫------my3306
從庫------my3307
實驗步驟:
主庫上的操作:
1)在my3306上建立一個複製用戶:
my3306>grant replication slave,replication client on *.* to repl@'localhost' identified by'123456';
2)在my3306的my.cnf中添加如下內容:
3)通過mysqladmin -P3306 shutdown關閉my3306服務,然後重啓服務
4)查看上面的設置是否生效:
從庫上的操作:
1)在my3307的my.cnf中添加如下內容:
server-id = 131202
binlog_format=mixed
log-slave-updates
log-bin = /usr/local/mysql/log/3307/mysql-bin
relay_log = /usr/local/mysql/log/3307/relay-bin
read-only
2)關閉my3307服務,重啓my3307服務
mysqladmin --port=3307 shutdown
mysqld_multi start 3307
3)在my3307上執行
4)查看my3307的狀態
5)在my3307上start slave,再查看my3307的狀態
此時,slave上的兩個線程就已經啓動了
在主庫my3306上查看:
在從庫my3307上查看
測試:
在主庫my3306上的test數據庫添加一個zheng:
我們在從庫my3307上查看test數據庫
至此,我們的主從搭建就成功了。
注意:在新建用戶repl@localhost。然後再從庫my3307應用slave時,通過:
change master to master_host='localhost', master_user='repl', master_password='123456', master_log_file='mysql-bin.000002', master_log_pos=0;
結果在啓動從庫的時候會發現:
Last_IO_Error: error connecting to master 'repl@localhost:3306' - retry-time: 60 retries: 86400
這個錯誤。原因可能是通信方式有問題,找不到socket文件去通信。然後換成以下方法就可以了:
在主庫my3306上,新建一個用戶[email protected]
然後再從庫上應用:change master to master_host='10.16.131.201', master_user='repl', master_password='123456', master_log_file='mysql-bin.000002', master_log_pos=0;
這樣主從之間的通信方式就換成了tcp/ip通行。這樣之前的問題也就解決了。