您好,登錄后才能下訂單哦!
mariadb? 主從復(fù)制
mariadb主從復(fù)制概述:
復(fù)制解決的基本問題是讓一臺服務(wù)器的數(shù)據(jù)和另外的服務(wù)器保持同步。
一臺主服務(wù)器可以連接多臺從服務(wù)器,并且從服務(wù)器也可以反過來作主服務(wù)器。
主服務(wù)器和從服務(wù)器可以位于不同的網(wǎng)絡(luò)拓?fù)渲?,還能對整臺服務(wù)器、特定的數(shù)據(jù)庫,甚至特定的表進(jìn)行復(fù)制。
1.2 . 主從復(fù)制解決的問題
???????? Mariadb復(fù)制技術(shù)有以下一些特點(diǎn):
???????? (1)??? 數(shù)據(jù)分布 (Data distribution )
???????? (2)??? 負(fù)載平衡(load balancing)
???????? (3)??? 備份(Backups)
???????? (4)??? 高可用性和故障轉(zhuǎn)移 High availability and failover
1.3 主從復(fù)制如何工作
整體上來說,復(fù)制有3個(gè)步驟:?
?????? (1)??? master將改變記錄到二進(jìn)制日志(binary log)中(這些記錄叫做二進(jìn)制日志事件,binary log events);
?????? (2)??? slave將master的binary log events拷貝到它的中繼日志(relay log);
?????? (3)??? slave重做中繼日志中的事件,修改salve上的數(shù)據(jù)。
mariadb主從復(fù)制中:
第一步:master記錄二進(jìn)制日志。在每個(gè)事務(wù)更新數(shù)據(jù)完成之前,master在二日志記錄這些改變。Mariadb將事務(wù)寫入二進(jìn)制日志,即使事務(wù)中的語句都是交叉執(zhí)行的。在事件寫入二進(jìn)制日志完成后,master通知存儲引擎提交事務(wù)。
第二步:slave將master的binary log拷貝到它自己的中繼日志。首先,slave開始一個(gè)工作線程——I/O線程。I/O線程在master上打開一個(gè)普通的連接,然后開始binlog dump process。Binlog dump process從master的二進(jìn)制日志中讀取事件,如果已經(jīng)執(zhí)行完master產(chǎn)生的所有文件,它會睡眠并等待master產(chǎn)生新的事件。I/O線程將這些事件寫入中繼日志。
第三步:SQL slave thread(SQL線程)處理該過程的最后一步。SQL線程從中繼日志讀取事件,并重新執(zhí)行其中的事件而更新slave的數(shù)據(jù),使其與master中的數(shù)據(jù)一致。
yum install mariadb-server -y
systemctl? start? mariadb
mysql -h 127.0.0.1 -u root -p
MariaDB [(none)]> create database pcdog
MariaDB [(none)]> use pcdog;
MariaDB [pcdog]> create table test1(id int);
MariaDB [pcdog]> show tables;
systemctl? stop? mariadb
配置mariadb主要同步的數(shù)據(jù)庫名字并開啟對應(yīng)的二進(jìn)制日志
vim /etc/my.cnf # my.cnf 是mariadb 主配置文件
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0 #在原配置文件中,添加以下內(nèi)容:
log-bin=mariadblog
server-id=1
binlog-do-db=pcdog
注釋:
log-bin=mariadblog #啟用二進(jìn)制日志,默認(rèn)存在/var/lib/mariadb 下面
server-id=1 #本機(jī)數(shù)據(jù)庫ID 唯一標(biāo)示。
binlog-do-db=pcdog #可以被從服務(wù)器復(fù)制的庫。二進(jìn)制需要同步的數(shù)據(jù)庫名
systemctl start mariadb
mysql
grant replication slave on *.* to slave@192.168.10.130 identified by "123456";
slave上驗(yàn)證登錄
mysql -h 192.168.10.129 -u slave -p123456
從主機(jī)dump出所有db
mysqldump -u root -p -A > all1.sql
scp過去
scp all1.sql root@192.168.10.130:/root
從機(jī)導(dǎo)入
mysql -u root -p < all1.sql
vi /etc/my.cnf
加一行
server-id=2
到主機(jī)上查看
mysql
show master status;
從機(jī)上設(shè)置主人
mysql
change master to master_host='192.168.10.129', master_user='slave', master_password='123456', master_port=3306, master_log_file='mariadblog.000001', master_log_pos=397, master_connect_retry=10;
MariaDB [(none)]> start slave; #啟動從服務(wù)
MariaDB [(none)]> show slave status \G #查看從服務(wù)器狀態(tài)
Slave_IO_Running: Yes #可以看到這兩個(gè)Yes,說明從服務(wù)器安裝成功。
Slave_SQL_Running: Yes
Slave_IO_Running :一個(gè)負(fù)責(zé)與主機(jī)的io通信
Slave_SQL_Running:負(fù)責(zé)自己的slave mariadb進(jìn)程
主機(jī)上插入數(shù)據(jù)
insert into test1 values(1);
從機(jī)上查看下
查看日志
show binlog events;
總結(jié):
1、 主從同步的原理
2、 主從同步的配置
3、 測試主從同步是否成功
實(shí)戰(zhàn)2:mariadb 主主 雙向主從復(fù)制
實(shí)戰(zhàn)3:mariadb 主從讀寫分離
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。