問題彙總
show master status沒有結果, binglog沒有開關或生效
log_bin
serverid
步驟
1.準備多實例環境
2.配置my.cnf
3登陸主庫增長用於從庫鏈接主庫的同步帳號rep而且受權replication slave同步的權限
4登陸主庫。整庫鎖表flush table with read lock (窗口關閉失效,超時參數達到也失效),而後show master status 查看binlog的位置狀態
5新開窗口linux命令行導出sql拷貝到從庫所在的及其
6解鎖及其
7把主庫導出的sql恢復到從庫中
8根據主庫的show master status查看binlog的位置狀態在從庫執行change master to
9從庫開啓開關start slave
10 show slave status查看同步狀態
要點
異步方式同步
邏輯同步模式,多種模式,默認是經過sql語句執行
主庫經過記錄binlog實現對從庫的同步,binlog記錄數據庫的跟新語句
主庫一個線程,從庫由1個io線程和一個sql線程來完成
從庫關鍵文件master。info,relay-log,relay info功能
若想完成級聯 須要打開logbin和log-slave-updates;
生產環境快速配置mysql主從複製的方案
安裝好配置從庫的數據庫,配置好log-bin和server-id參數
無需登陸配置主庫my.cnf,主庫的log-bin和server-id默認配置好的
登陸主庫用於從庫鏈接主庫同步的帳號
使用mysqldump 帶--master-data=1無需binlog文件及對應的位置點
從庫開啓同步開關start slave;
從庫show slave status檢查同步狀態跟新測試
mysql> show processlist;
+----+------+----------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+----------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
| 2 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 11 | root | 192.168.88.172:40311 | NULL | Binlog Dump | 3190 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL |
+----+------+----------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
2 rows in set (0.00 sec)
mysql> show processlist;
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------------+------------------+
| 3 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 4 | system user | | NULL | Connect | 3241 | Waiting for master to send event | NULL |
| 5 | system user | | NULL | Connect | 3037 | Slave has read all relay log; waiting for the slave I/O thread to update it | NULL |
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------------+------------------+
3 rows in set (0.00 sec)
my.cnf
master端
--binlog-do-db二進制日誌記錄數據庫多個數據庫用,分割
--binlog-ignore-db二進制日誌胡月數據庫多個數據庫用,分割
replication的slave端六個參數
--replication-do-db須要制定複製的數據庫
--replication-ignore-db設定胡月的數據庫=db
--replication-do-table
--replication-ignore-table
--replication-wild-do-table
--replication-wild-ignore-table
生產受權方案
主庫 select insert delete update
從庫 回收insert delete update
經過readonly
super不限制
[mysqld] readonly
slave-iostatus yes
slave sql running no
second sql behindmaster 是否爲0 0爲同步
方法一stop slave
set global sql_slave_skip_counter=10
start slave;
方法二
根據錯誤號跳過制定的錯誤
slave-skip-errors=1032,1062;
讓mysqwl記錄binlog
1級聯
2把從庫做爲備份的服務器
log-slave-updates只加這一句話[mysqld]
expire_log_days=7保留七天的binlog
主庫down機
show processlist;
查看全部從庫的master info看哪一個的跟大
選個pos最大的做爲主庫
1確保全部的relay log所有更新完畢
在每一個從庫上執行stop slave io_thread;
show processlist;
直到看到has readall relay log
2登陸到主庫
stop slave;
reset ;
quit
3進到數據庫數據目錄,刪除master。info rtelay——log info功能
cd /data/3306/data
rm -f master.info relay-log.info
檢查受權表readonly參數
4
開啓binlog註釋 slave-log readonly
restart
其餘衝庫
stop slave;
change master 只改ip
解決主鍵自增加id錯誤
master1;
auto_increament_increament=2 --1,3,5
auto_increament_offset=1起始位置
master2
auto_increament_increament=2 --2,4,6
auto_increament_offset=2
使用主主的前提,主鍵自增
mysql