標籤:mysql 資料庫同步 主從
首先,我們先拿兩台伺服器安裝好相同版本相同設定的MYSQL資料庫。我這裡安裝的是mariadb-10.0.13資料庫。
第一步,環境設定:
我這邊設定的是兩台內網伺服器,主伺服器IP:10.6.0.187;從伺服器IP10.6.0.186
系統:CentOS 7
資料庫版本:mariadb-10.0.13
第二步:配置mysql主伺服器(10.6.0.187)
mysql -uroot -p123456 #進入MySQL控制台
create database zabbix default charset utf8;
#建立資料庫zabbix
insert into mysql.user(Host,User,Password) values(‘localhost‘,‘slave2‘,password(‘123456‘));
#建立使用者slave2
#建立MySQL主從資料庫同步處理的使用者slave2密碼123456
flush privileges; #重新整理系統授權表
#授權使用者slave2隻能從10.6.0.186這個IP訪問主伺服器10.6.0.187上面的資料庫,並且只具有Database Backup的許可權
grant replication slave on *.* to ‘ slave2‘@‘10.6.0.186‘identified by ‘123456‘ with grant option;
第三步:將主伺服器中的資料庫匯出,並匯入到從伺服器的資料庫中去
1、匯出資料庫zabbix
mysql dump-u root -p123456 zabbix> /root/zabbix.sql #在MySQL主伺服器進行操作,匯出資料庫zabbix到/root/zabbix.sql
備忘:在匯出之前可以先進入MySQL控制台執行下面命令
flush tables with read lock; #資料庫唯讀鎖定命令,防止匯出資料庫的時候有資料寫入
unlocktables; #解除鎖定
2、匯入資料庫到MySQL從伺服器
mysql -uroot-p123456 #進入從伺服器MySQL控制台
create database zabbix default charset utf8; #建立資料庫
mysqldump -u root -p123456 zabbix< /root/zabbix.sql
mysql -uslave2 -h192.168.21.169 -p #測試是否能從從伺服器上登入到主伺服器
第四步:修改主要資料庫的設定檔
vi/etc/my.cnf #編輯設定檔
server-id=1 #設定伺服器id,為1表示主伺服器,給 slave 指定唯一的server_id. 所有伺服器,不管是主伺服器,還是從伺服器,都要設定 server_id. server_id值可以是整數型的數字(1 ~ 2^31-1),在同一個複製組(replicating group)中的每台(/個)伺服器的server_id都必須是唯一的.
log_bin=mysql-bin #啟動MySQ二進位日誌系統,注意:如果原來的設定檔中已經有這一行,就不用再添加了。
binlog-do-db=zabbix #需要同步的資料庫名,如果有多個資料庫,可重複此參數,每個資料庫一行
binlog-ignore-db=mysql #不同步mysql系統資料庫
service mysqld restart #重啟MySQL
mysql -uroot -p #進入mysql控制台
show master status; 查看主伺服器,出現以下類似資訊
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6B/E9/wKioL1U6D5awMOaqAAFzU-ZJeKc466.jpg" title="image001.png" alt="wKioL1U6D5awMOaqAAFzU-ZJeKc466.jpg" />
注意:這裡記住File的值:mysql-bin.000035和Position的值:1218606,後面會用到。
五、配置MySQL從伺服器的my.cnf檔案
vi/etc/my.cnf #編輯設定檔
server-id=2 #設定檔中已經有一行server-id=1,修改其值為2,表示為從資料庫
log-bin=mysql-bin #啟動MySQ二進位日誌系統,注意:如果原來的設定檔中已經有這一行,就不用再添加了。
replicate-do-db=zabbix #需要同步的資料庫名,如果有多個資料庫,可重複此參數,每個資料庫一行
replicate-ignore-db=mysql #不同步mysql系統資料庫
:wq! #儲存退出
service mysqld restart #重啟MySQL
mysql -u root -p #進入MySQL控制台
stop slave; #停止slave同步進程
change master to master_host=‘10.6.0.187‘,master_user=‘slave2‘,master_password=‘123456‘,master_log_file=‘ mysql-bin.000035‘ ,master_log_pos=1218606; #執行同步語句
start slave; #開啟slave同步進程
SHOW SLAVE STATUS\G #查看slave同步資訊,出現以下內容
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6B/ED/wKiom1U6DkSy1ol2AAOdtr9P5Hc664.jpg" title="image003.png" alt="wKiom1U6DkSy1ol2AAOdtr9P5Hc664.jpg" />
注意查看:
Slave_IO_Running: Yes
Slave_SQL_Running:Yes
以上這兩個參數的值為Yes,即說明配置成功!
第六步:測試mysql主從是否能夠同步
進入主mysql中的zabbix庫中,建立一張新表
use zabbix;
create table test (`id` int(4), `name` char(40));
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6B/E9/wKioL1U6D7WTKzSgAAF0bdn5yyw893.jpg" title="image005.png" alt="wKioL1U6D7WTKzSgAAF0bdn5yyw893.jpg" />
這是主mysql中建立的表;
在從mysql中查看是否同步過來了這張表
use zabbix;
show tables;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6B/ED/wKiom1U6Dmez6FJSAAE5U6T661o694.jpg" title="image007.png" alt="wKiom1U6Dmez6FJSAAE5U6T661o694.jpg" />
這裡我們看到已經同步過來了,至此,mysql主從同步實驗做完了。
在此,感謝網上大神們的教程,讓我成功的完成了mysql主從配置。互連網的精神就是共用,在此我將我配置mysql主從中得經驗分享給大家,以供我們大家共同學習,共同成長。
本文出自 “檸檬” 部落格,請務必保留此出處http://xianglinhu.blog.51cto.com/5787032/1638105
MYSQL設定主從同步