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