-
1 # 重慶小寶快巴
-
2 # 小魚不吃魚L
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執行緒傳遞binlog
從上有兩個執行緒,其中I/O執行緒用來同步主的binlog並生成relaylog,另外一個SQL執行緒用來把relaylog裡面的sql語句落地
這裡寫圖片描述
主從配置 - 主上操作
安裝mysql
修改my.cnf,增加server-id=130和log_bin=aminglinux1
[root@wwlinux701 logs]# vim /etc/my.cnf
server-id=130
log_bin=wwlinux701
修改完配置檔案後,啟動或者重啟mysqld服務
[root@wwlinux701 logs]# /etc/init.d/mysqld restart
Shutting down MySQL.... SUCCESS!
Starting MySQL.............. SUCCESS!
[root@wwlinux701 logs]#
1
2
3
4
把mysql庫備份並恢復成aming庫,作為測試資料
mysqldump -uroot -p123456 mysql > /tmp/mysql.sql
mysql -uroot -p123456 -e “create database aming”
mysql -uroot -p123456 aming < /tmp/mysql.sql
[root@wwlinux701 logs]# mysqldump -uroot -p123456 mysql > /tmp/mysql.sql
Warning: Using a password on the command line interface can be insecure.
[root@wwlinux701 logs]# mysql -uroot -p123456 -e "create database aming"
Warning: Using a password on the command line interface can be insecure.
[root@wwlinux701 logs]# mysql -uroot -p123456 aming < /tmp/mysql.sql
Warning: Using a password on the command line interface can be insecure.
[root@wwlinux701 logs]#
建立用作同步資料的使用者
mysql -uroot -p123456 aming
grant replication slave on . to ‘repl’@192.168.11.131 identified by ‘123456’;
flush tables with read lock; #需要先鎖定表
show master status;
[root@wwlinux701 logs]# mysql -uroot -p123456 aming
grant replication slave on *.* to "repl"@192.168.11.131 identified by "123456";
mysql> grant replication slave on *.* to "repl"@192.168.11.131 identified by "123456";
Query OK, 0 rows affected (1.00 sec)
mysql>
flush tables with read lock; #需要先鎖定表
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.11 sec)
mysql>
wwlinux701.000001 | 660619 #需要記住這兩個引數
這裡寫圖片描述
主從配置 - 從上操作
安裝mysql
檢視my.cnf,配置server-id=131,從要求和主不一樣從上不需要log_bin,因為只有主才需要二進位制檔案
修改完配置檔案後,啟動或者重啟mysqld服務
scp 192.168.11.130:/tmp*.sql /tmp/
把主上aming庫同步到從上mysql庫除外的其他庫都同步一下
可以先建立aming庫,然後把主上的/tmp/mysql.sql複製到從上,然後匯入aming庫
mysql -uroot -p123456
stop slave;
change master to master_host=’192.168.11.130’,master_user=’repl’,master_password=’123456’,master_log_file=’wwlinux701.000001’,master_log_pos=660619;
start slave;
show slave status\G #用這個命令監測如果是兩個yes就是沒問題的
這裡寫圖片描述
還要到主上執行 unlock tables;
檢視主從同步是否正常
從上執行mysql -uroot
show slave stauts\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:
幾個配置引數
主伺服器上
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 -p123456 aming
select count(*) from db;
這裡寫圖片描述
truncate table db;
到從上 mysql -uroot -p123456 aming
select count(*) from db;
這裡寫圖片描述
主上繼續drop table db;
從上檢視db表
主上執行
select * from user where Host =’localhost’;
mysql> delete from user where Host =’localhost’;
這裡寫圖片描述
從上執行
select * from user where Host =’localhost’;
這裡寫圖片描述
回覆列表
可以考慮下資料庫中介軟體mycat,透過配置的方式實現mysql資料庫的主從配置和垂直水平分表。
使用mycat熟悉了,對資料庫叢集架構會有更深刻的認識。