mysql中主从_MySQL的主从
以下是個人實例操作得出的結論:
mysql的主從同步是一個很成熟的架構:
優點:
①:在從服務器可以執行查詢工作,降低主服務器壓力(所謂的讀寫分離)
②:在從主服務器進行備份,避免備份期間影響主流服務器服務(不太懂是到底在從還是主上面進行操作)
③:當主服務出現問題時,可以切換到從服務器。
配置開始
兩臺服務器
192.168.0.1 主服務器 master
192.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?slave@192.168.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 *;停止mysql
net start *;啟用mysql
主服務器常用命令:
grant replication slave on *.* to?slave@192.168.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中主从_MySQL的主从的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 存储过程 主键_存储过程生成
- 下一篇: mysql报错3534_win7下安装M