爲什麼要主從同步?
在Web應用系統中,數據庫性能是導致系統性能瓶頸最主要的原因之一。尤其是在大規模系統中,數據庫集羣已經成爲必備的配置之一。集羣的好處主要有:查詢負載、數據庫複製備份等。其中Master負責寫操作的負載,也就是說一切寫的操作都在Master上進行,而讀的操作則分攤到Slave上進行。這樣一來的可以大大提高讀取的效率。寫操作涉及到鎖的問題,不管是行鎖還是表鎖還是塊鎖,都是比較降低系統執行效率的事情。我們這樣的分離是把寫操作集中在一個節點上,而讀操作其其他的N個節點上進行,從另一個方面有效的提高了讀的效率,保證了系統的高可用性。
自己將本地電腦用水星路由器設置內網穿透,以便提供給外網服務器使用,
以下是主從的配置
主:183.X.X.X (本地)
從:47.X.X.X (阿里雲)
主服務器上操作:
-
修改主數據庫my.ini配置
關閉 mysql服務。
>net mysql stop
[mysqld] port=3306 #用於標識唯一的數據庫,在從庫必須設置爲不同的值。 server-id=1 #同步日誌的保存路徑,也可以直接寫成mysql-bin,直接寫mysql-bin日誌文件會生成到data文件夾的根目錄 log-bin = mysql-bin #指定需要同步的數據庫 binlog-do-db=需要同步的數據庫(數據庫名稱和結構必須和從庫保持一致)
修改完成之後打開cmd
開啓mysql服務。
>net mysql start
-
添加主數據庫用於同步的賬號:
在主庫中建立一個用戶(專門用給從庫連接的,注意這是在主庫裏面建立的)
cmd輸入下面命令連接到Mysql服務
>mysql -hlocalhost -uroot -p;
然後執行以下命令創建用戶:
mysql>grant replication slave,reload,super on . to 新建用戶名@‘從服務器ip’ identified by ‘新密碼’ ;
刷新權限命令
mysql>flush privileges;
找到File 和 Position 的值記錄下來
mysql>show master status;
可以直接在navicat上查看
從服務器上操作:
-
修改從數據庫my.ini配置
關閉 從庫mysql服務。
>net mysql stop
修改從數據庫my.ini配置,只用設置下面2個
[mysqld] port=3306 #用於標識唯一的數據庫,在從庫必須設置爲不同的值。 server-id=2 #待同步的數據庫 binlog-do-db=需要同步的數據庫(數據庫名稱和結構必須和主庫保持一致)
修改完成之後打開cmd
然後使用 >net mysql start 重啓mysql服務。
-
slave連接master庫
關閉slave服務,執行下面命令
mysql> stop slave;
執行下面命令
mysql> change master to master_host=‘主ip地址’,master_user=‘user’,master_password=‘123456’, master_log_file=‘mysql-bin.000005’,master_log_pos=35546,master_port=3306;
master_host=‘主ip地址’,
master_user=‘你創建的用戶’,
master_password=‘密碼’,
master_log_file=‘show master status查到的值’,
master_log_pos=show master status查到的值,
master_port=3306; //主端口打開slave服務
mysql> start slave;
#“查看連接狀態,主要看Slave_IO_Running、Slave_SQL_Running。它們2個的值都必須是Yes纔可以,不能是其他的Connecting之類”
mysql> show slave status;
如出現yes表示成功