關于mysql復制
一、產成二進制日志的庫 查看命令:show master status;
binlog-do-db=
binlog-ignore-db=
例:假設服務器上有mysql、a、b、c四個庫,測試以下配置:
1、修改my.cnf文件,目的:只記錄a和b兩個庫的日志
binlog-do-db=a,b
結果:所有庫都不會記錄日志(因為不存在"a,b"這個庫,被看做一個庫了,所以如果想指定多個庫,應該分別指定)
2、修改my.cnf文件,目的:只記錄a和b兩個庫的日志
binlog-do-db=a
binlog-do-db=b
結果:只記錄a和b的日志
等同于:
binlog-ignore-db=mysql
binlog-ignore-db=c
3、修改my.cnf文件,目的:測試a庫同時存在于do與ignore中會不會記錄日志
binlog-do-db=a
binlog-do-db=b
binlog-ignore-db=a
結果:同樣記錄a和b的日志。如果兩個語句同時做了配置,存在數據庫沖突,則do的優先級大于ignore(僅測試用,生產中不會故意出現這種情況)
4、修改my.cnf文件,目的:測試如果一個庫如:c 不存在于do和ignore配置參數中,會不會記錄日志
binlog-do-db=a
binlog-do-db=b
binlog-ignore-db=mysql
結果:不會記錄c的日志
總結:
只使用do或ignore就可以控制需要記錄日志的數據庫。如果兩個參數都做了配置,則以binlog-do-db配置生效。
二、從服務器選擇要復制的庫,查看命令:show slave status\G
replicate-do-db=
replicate-ignore-db=
測試結果:
只使用do或ignore就可以控制需要復制的數據庫。如果兩個參數都做了配置,則以replicate-do-db=配置生效。
三、my.cnf與change master to (推薦)
mysql版本為5.5.19中
以下 參數只能在my.cnf中指定,使用change master to 會報錯
slave-skip-errors=all或slave-skip-errors=1501,1502
log-slave-updates (mysql.cn中--logs-slave-updates應該是change中指定,配置文件中未具體指明參數)
report-host=156 或 report-host=example.example.com
binlog-do-db=dbname --只用do即可
binlog-ignore-db=dbname
(放到#binlog_format=mixed
binlog-do-db=wwwmaimaichacom
binlog-do-db=ucenter下)
replicate-do-db=dbname --只用do即可
replicate-ignore-db=dbname
skip-slave-start ---(告訴從服務器當服務器啟動時不啟動從服務器線程。使用START SLAVE語句以后手動啟動線程)
change語句(注意引號的使用):
change master to master_host='192.168.2.155',master_user='sync156',master_password='123',master_log_file='mysql-bin.000017',master_log_pos=107,master_port=3306,master_connect_retry=9;
或
change master to\
master_host='192.168.2.155',\
master_user='sync156',\
master_password='123',\
master_log_file='mysql-bin.000017',\
master_log_pos=107,\
master_port=3306,\
master_connect_retry=9;
change語句也可以直接配置在my.cnf文件中(有時會問題,不建議使用):
[mysqld]
server-id=2
master-host=db-master.mycompany.com
master-port=3306
master-user=pertinax
master-password=freitag
master-connect-retry=60
report-host=db-slave.mycompany.com
logs-slave-updates
slave-skip-errors=all不加此參數,遇到錯誤會導致復制中止,show slave stauts\G查看是否有錯誤如error:1052,解決:
stop slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 ---跳過接下來1個錯誤
start slave
重啟mysql后,不論binlog記錄所有庫,還是某個庫,binlog文件都跳到下一個,pos為107
reset master;
---清除binlog日志,執行后show master status;看到log_file=000001 pos=107
reset slave;
--- 刪除master.info,建議執行過此命令后重啟mysql服務并退出mysql登陸界面,重新登陸。如果不重啟,再指定master參數時,沒有指 定的按照reset slave之前的參數生效、加載到master.info文件中(包含show slave status\G看到的信 息,mysql每次啟動如果此文件存在則讀取此文件主服務器信息,不會加載my.cnf中的配置參數)
server-id即使不是鏈式復制,a-b和a-c兩個主從復制時,server-id也不能相同
flush tables with read lock;此命令為所有數據庫上鎖為只讀狀態,unlock tables;或退出會話重新登陸后鎖失效。
關鍵字:數據庫、服務器、測試
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解