MYSQL介紹,配置MYSQL主mysql
MySQL主從又叫作Replication、AB複製。簡單講就是A和B兩臺機器作主從後,在A上寫數據,另一臺B也會跟着寫數據,二者數據實時同步的 MySQL主從是基於binlog的,主上須開啓binlog才能進行主從。 主從過程大體有3個步驟 1)主將更改操做記錄到binlog裏 2)從將主的binlog事件(sql語句)同步到從本機上並記錄在relaylog(中繼日誌)裏 3)從根據relaylog裏面的sql語句按順序執行 主上有一個log dump線程,用來和從的I/O線程傳遞binloglinux
從上有兩個線程,其中I/O線程用來同步主的binlog並生成relaylog,另一個SQL線程用來把relaylog裏面的sql語句落地sql
主從配置 - 主上操做數據庫
安裝mysql 修改my.cnf,增長server-id=130和log_bin=aminglinux1 修改完配置文件後,啓動或者重啓mysqld服務 把mysql庫備份並恢復成aming庫,做爲測試數據 mysqldump -uroot -p123 mysql > /tmp/mysql.sql mysql -uroot -e 「create database aming」 mysql -uroot -plinbs123 aming < /tmp/mysql.sql 建立用做同步數據的用戶 grant replication slave on *.* to 'repl'@slave_ip identified by 'password'; flush tables with read lock; //鎖表,中止寫操做 show master status;
grant replication slave on *.* to 'repl'@192.168.137.122 identified by 'linbs123'; flush tables with read lock; //鎖表,中止寫操做 FLUSH PRIVILEGES; //刷新權限,用於新建用戶,或修改密碼後。
MYSQL重啓後,會更新這個FILE和Position,這時候主從就會斷開,須要重啓創建鏈接。服務器
MYSQL從配置ide
安裝mysql 查看my.cnf,配置server-id=132,要求和主不同 修改完配置文件後,啓動或者重啓mysqld服務 把主上aming庫同步到從上 能夠先建立aming庫,而後把主上的/tmp/mysql.sql拷貝到從上, scp 192.168.137.133:/tmp/aming.sql /tmp/ 而後導入aming庫,要先建立aming庫 mysql -uroot -plinbs123 aming < /tmp/mysql.sql
mysql -uroot stop slave; change master to master_host='', master_user='repl', master_password='', master_log_file='', master_log_pos=xx, start slave;
還要到主上執行 unlock tables, 查看主從同步是否正常測試
從上執行mysql -uroot show slave status\G 看是否有 Slave_IO_Running: Yes Slave_SQL_Running: Yes 還需關注 Seconds_Behind_Master: 0 //爲主從延遲的時間 Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error:
change master to master_host='192.168.137.133', master_user='repl', master_password='linbs123', master_log_file='mysqlmaster.000003',master_log_pos=120;
主服務器上 binlog-do-db= //僅同步指定的庫,只要保持指定主從數據庫一致便可 binlog-ignore-db= //忽略指定庫 從服務器上 replicate_do_db= //同上 replicate_ignore_db= //同上 replicate_do_table= //僅同步指定表 replicate_ignore_table= //忽略同步哪些表 replicate_wild_do_table= //如aming.%, 支持通配符% replicate_wild_ignore_table=
測試主從線程
主上 mysql -uroot aming select count(*) from db; truncate table db; 到從上 mysql -uroot aming select count(*) from db; 主上繼續drop table db; 從上查看db表