標籤:
以下是個人執行個體操作得出的結論:mysql的主從同步是一個很成熟的架構: 優點: ①:在從伺服器可以執行查詢工作,降低主伺服器壓力(所謂的讀寫分離) ②:在從主伺服器進行備份,避免備份期間影響主流伺服器服務(不太懂是到底在從還是主上面進行操作) ③:當主服務出現問題時,可以切換到從伺服器。配置開始兩台伺服器192.168.0.1 主伺服器 master192.168.0.2 從伺服器 slave
主伺服器配置主伺服器的my.ini 在最下面添加read-only=0 #主機讀寫權限,讀寫都可以
log-bin = mysql-bin #記錄檔 必填項
server-id = 1 # 1-32 必填項
replicate-do-db = test #指向資料庫 必填項
replicate-ignore-db = mysql #指定不要同步的資料庫,如果指定了binlog(replicate)-do-db就不用再指定該項
重啟資料庫 然後在主伺服器庫中建立一個備份帳號;
grant replication slave on *.* to [email protected].0.2 identified by ‘slave‘ ; #建立一個備份帳號
flush privileges; #更新許可權
注釋:指向到192.168.0.2的從伺服器 給從伺服器一個備份帳號;帳號是salve 密碼:slave identity by 代表著密碼 賬戶@從伺服器位址 identity by 密碼
FLUSH TABLES WITH READ LOCK;:先鎖定表
此備份方式需要在CMD中退出mysql的串連 在 mysql/bin中執行(因為bin檔案中有個 mysqldump.exe的檔案)mysqldump --master-data -uroot -p test(需要備份的資料庫名) > test.sql備份成功後 查看主伺服器的記錄檔資訊show master status \G以上所有步驟都正確的話,將進行 解表 :unlock tables;
從伺服器配置從伺服器的my.ini在最下面添加
server-id=2 #指定唯一的ID,2至32,必須的,並且不能跟主要資料庫一樣
replicate-do-db=rep_test #指定要同步的資料庫,必須的
lower_case_table_names=1 #必須要,否則從資料庫只能更新出表 而不能同步表資料
配置登入主要資料庫的帳號和密碼等資訊;有兩種方法: ①:在my.ini中進行配置
#主伺服器的IP地址
master-host=10.0.0.100
#從伺服器串連主伺服器的帳號
master-user=slave
#從伺服器串連主伺服器的帳號密碼
master-password=‘slave‘
#主伺服器連接埠
master-port=3306
#同步時間間隔為60秒
master-connect-retry=10
#記錄檔 master_log_file = ‘mysql-bin.000008‘, #
master_log_pos = 79; ②:用代碼進行配置 change master to master_host=‘192.168.0.1‘,master_user=‘slave‘,master_password=‘slave‘, master_log_file=‘mysql- bin.000001‘,master_log_pos=120; 設定主賬戶的資訊;詳解: 設定主伺服器的IP(192.168.0.1) 設定登入帳號(slave 是主服務給此從伺服器的帳號) 設定登入密碼(slave是主服 務器給此從伺服器的密碼) 備份記錄檔名(mysql-bin.000001是mysql預設的格式 主伺服器查看狀態的File:此參數) master_log_pos (應該是主伺服器 show master status \G 查看狀態的Position:(int型)(XXX)配置成功後 ;啟用開始配置 start slave;(開始備份從伺服器 slave 是固定參數)查看從資料庫資訊 :show slave status;如果出現: Slave_IO_Running: YesSlave_SQL_Running: Yes以上兩項都為Yes,那說明沒問題了到此完成; 然後可以去主服務作業 看從伺服器是否成功備份;可以查看URL:http://www.cnblogs.com/shuidao/p/3551238.html每次停止備份或者備份報錯的時候;應該先輸入 stop slave停止備份----change 重新設定參數 ---start slave;啟動配備------show slave status;
以上方式是配置新的主從的資料庫,當資料庫中以前有存在資料的時候;是同步不了;
配置舊資料庫的主從複製 大部分和上面大同小異
1、編輯主要資料庫的my.ini檔案,加上:
binlog-do-db=landclash(資料庫名)
2、將主要資料庫data目錄下需要做主從複製的資料庫的同名目錄拷貝到從資料庫的data目錄下
3、在從資料庫的my.ini問價,加上一下內容
replicate-do-db=landclash(資料庫)
結束:剩下的同步 與上面方法一直
在同一伺服器建立兩個MySQL的話,做主從同步 很容易發生 UUID錯誤;此錯誤更改方法:bin/data/auto.cnf 修改裡面的UUID(隨便改一個數字即可)
slave status \G 出現找不到表的時候,一般是Position位置對不上;
查看windows主機建立兩個資料庫 做類比主從操作:請查看 一個主機建立兩個MySQL
網頁版瀏覽器不能根據連接埠號碼進行訪問資料庫;所以推薦使用mysql工具 Navicat 主從同步時需要要到的命令:*:代表著mysql 或者 mysql的名稱net stop *;停止mysqlnet start *;啟用mysql主伺服器常用命令:
grant replication slave on *.* to [email protected].0.2 identified by ‘slave‘ ; #建立一個備份帳號
flush privileges; #更新許可權
FLUSH TABLES WITH READ LOCK;:先鎖定表
mysqldump --master-data -uroot -p test(需要備份的資料庫名) > test.sql
show master status \G :查看主伺服器日誌資訊unlock tables;:解表從伺服器常用命令: change master to master_host=‘192.168.0.1‘,master_user=‘slave‘,master_password=‘slave‘, master_log_file=‘mysql- bin.000001‘,master_log_pos=120; 設定主賬戶的資訊;詳解: 設定主伺服器的IP(192.168.0.1) 設定登入帳號(slave 是主服務給此從伺服器的帳號) 設定登入密碼(slave是主服 務器給此從伺服器的密碼) 備份記錄檔名(mysql-bin.000001是mysql預設的格式 主伺服器查看狀態的File:此參數) master_log_pos (應該是主伺服器 show master status \G 查看狀態的Position:(int型)(XXX)start slave;(開始備份從伺服器 slave 是固定參數)show slave status;:查看配置stop slave;停止備份
如果想在Slave上忽略一個庫的複製,最好不要用binlog_ignore_db這個參數,
盡量使用
binlog-do-db =test #只複製某個庫
replicate-do-db =test #只複製某個庫
replicate-ignore-db=mysql #不複製某個庫
binlog_ignore-db=mysql #不複製某個庫
MySQL的主從