您好,登錄后才能下訂單哦!
MySQL主從介紹
(兩臺機器數據同步)
主:-->binlog
從:-->relaylog
主上有一個log dump線程,用來和從的I/O線程傳遞binlog
從上有兩個線程,其中I/O線程用來同步主的binlog并生成relaylog,另外一個SQL線程用來把relaylog里面的sql語句落地(執行)
主從的應用場景:
(1)做數據的備份,(主:作讀寫數據,從:實時同步,當 主 宕機時,從 也可以即使提供服務 )
(2)也是做備份。(客戶從 從 這臺機器上讀取數據(但是不能再從上寫),減輕主的壓力)
準備工作
1.兩臺機器都裝上mysql,并且都開啟mysql的服務
配置主
主:192.1683.136.133 從:192.168.136.134
1.修改my.cnf,增加server-id=133和log_bin=canshenglinux1
2.修改完配置文件后,啟動或者重啟mysqld服務
重啟完后,我們可以發現在/data/mysql下生成了以在配置文件中定義log_bin=canshenglinux1為開頭的文件
這些文件很重要,不然不能實現主從
3.
把mysql庫備份并恢復成cansheng庫,作為測試數據(這個庫就是用來做主從)
mysqldump -uroot -p123456 mysql > /tmp/mysql.sql
mysql -uroot -p123456 -e “create database cansheng”
mysql -uroot -p123456 cansheng < /tmp/mysql.sql
4.創建用作同步數據的用戶
(1)先進入到mysql
(2)再創建同步數據的用戶
grant replication slave on *.* to 'repl'@slave_ip identified by '123456';
5.鎖定一下表:
flush tables with read lock;
(為了同步前數據一致。)
show master status (查看一下position和file)
(退出mysql)
此時查看一下/data/mysql又是什么庫
(一般同步不要同步mysql庫,因為里面有很多用戶名和密碼)
6.備份一下所需要同步的庫:
mysqldump -uroot -p123456 zrlog > /tmp/zrlog.sql
配置從
1.查看my.cnf,配置server-id=134,要求和主不一樣
2.修改完配置文件后,啟動或者重啟mysqld服務
/etc/init.d/mysqld restart
3.把主上需要同步的庫復制過來:
scp 192.168.136.133:/tmp/*.sql /tmp/
臨時創建alias,方便使用命令:
alias 'mysql=/usr/local/mysql/bin/mysql'
alias 'mysqldump=/usr/local/mysql/bin/mysqldump'
4.進入mysql
創建相對應的庫:
create database cansheng;
create database zrlog;
create database mysql2;
5.數據恢復:
mysql -uroot cansheng < /tmp/mysql.sql
6.進入mysql
(1)stop slave;
(2)change master to master_host='192.168.136.133', master_user='repl', master_password='123456', master_log_fil_log_file='canshenglinux1.000002', master_log_pos=646207;
(3)start slave;
(4)判定主從是否配置成功
show slave status\G
這樣是表示不成功配置成功的要出現兩個yes才成功。
不成功的因素:
(1)防火墻 systemctl stop firewalld
(2)selinux -->關閉 sentenforce 0
(3)用戶名是否正確
{而我的因素是在配置主的時候指定用戶名和密碼錯誤了,從頭來了一次}
7.回到主,進到mysql解除table(表)的鎖定
unlock tables;
至此完成主從配置:
測試主從同步
(只需要在主或者從,其中一個配置就可以了。這些參數默認是沒有配置的,沒有手動配置,那默認是同步所有的庫)
在從上配置盡量使用最后兩個,可以避免在忽略某個庫或者表時,當級聯查詢的時候避免出現數據丟失,不該忽略的也忽略了!!
測試主從是否成功,是否同步!
1.兩臺機器都進到mysql下,進到測試的數據庫:cansheng2
此時清空主上的comment表;看看從上的comment表數據是否也清空,從而同步。
truncate table comment;
刪除表測試:
我們不能再 從 這臺機器上執行mysql操作,不然這時我們的主從就斷開。
(因為此時我們的position已經改變)
如果此時我們的主從斷開了,應該重新執行
(1)stop slave;
(2)change master to master_host='192.168.136.133', master_user='repl', master_password='123456', master_log_fil_log_file='canshenglinux1.000002', master_log_pos=646207;
(3)start slave;
(4)判定主從是否配置成功
show slave status\G
這樣是表示不成功配置成功的要出現兩個yes才成功。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。