萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> Centos6.3是mysql數據庫主從復制備份筆記(1/2)

Centos6.3是mysql數據庫主從復制備份筆記(1/2)

主從復制備份是mysql中一種比較常見備份,我們可以實時的同步數據並且做好數據備份,這樣就算一台 機器出問題也不會影響到服務器的正常使用,下面小編來給各位同學介紹一下。

 

MySQL主從復制結構是基於mysql bin-log日志基礎上,從庫通過打開IO進程收到主庫的bin-log日志增量

信息,並保存到本地relay log,而後再通過打開MYSQL進程從relay log上獲取的增量信息並翻譯成SQL語

句後寫到從數據庫。

主從復制結構,實際上可以實現兩個功能:

1.從庫充當主庫的數據庫備份實例

2.讀寫分離,主庫負責正常讀寫數據,從庫只負責讀數據

實際生產環境,因為很多應用實際讀數據庫的次數遠大於寫數據庫的次數,所以在項目開發初期,編寫

程序時做一個判斷,對所有讀的操作全部推到從庫,若從庫無法獲取數據,則再向主庫獲取數據,從而

在一定意義上實現讀寫分離,緩解主庫的IO壓力。

所以生產環境下推薦使用這種架構。


系統環境:centos6.3 x64

數據庫:  mysql-5.6.10


mysql master:192.168.100.90

mysql slave:192.168.100.91

 


MySQL主從復制結構是基於mysql bin-log日志基礎上,從庫通過打開IO進程收到主庫的bin-log日志增量

信息,並保存到本地relay log,而後再通過打開MYSQL進程從relay log上獲取的增量信息並翻譯成SQL語

句後寫到從數據庫。

主從復制結構,實際上可以實現兩個功能:

1.從庫充當主庫的數據庫備份實例

2.讀寫分離,主庫負責正常讀寫數據,從庫只負責讀數據

實際生產環境,因為很多應用實際讀數據庫的次數遠大於寫數據庫的次數,所以在項目開發初期,編寫

程序時做一個判斷,對所有讀的操作全部推到從庫,若從庫無法獲取數據,則再向主庫獲取數據,從而

在一定意義上實現讀寫分離,緩解主庫的IO壓力。

所以生產環境下推薦使用這種架構。


系統環境:centos6.3 x64

數據庫:  mysql-5.6.10


mysql master:192.168.100.90

mysql slave:192.168.100.91


 


一.部署環境:


1.關閉iptables和SELINUX

# service iptables stop

# setenforce 0

# vi /etc/sysconfig/selinux

---------------

SELINUX=disabled

---------------


2.安裝配置mysql傳送門:http://www.showerlee.com/archives/6


二.主mysql配置:(mysql master)


修改mysql配置文件:

# vi /etc/my.cnf

添加:

-----------------

# Replication Master Server

# bin日志路徑

log-bin = /usr/local/mysql/log/bin.log

# 服務器ID號

server-id = 1

# 忽略mysql系統庫復制

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

------------

重啟服務

# service mysqld restart


登錄mysql後台:

# mysql -u root -p123456

查看此刻登錄賬號:

> select user();


在master為slave添加同步帳號:

> grant replication slave on *.* to 'slave'@'192.168.100.91' identified by '123456';


查看創建的用戶:

> select user.host from mysql.user;


查看權限:

> show grants for 'slave'@'192.168.100.91';


mysql鎖表只讀(其他賬戶登錄mysql後無法進行寫表操作,防止備份數據庫後,主mysql表更新,導致和

從數據庫內容不一致)

> flush tables with read lock;


查看鎖表倒計時時間:

> show variables like '%timeout%';

------------------------

....


wait_timeout                | 28800

------------------------


將master的數據庫表全部備份導出,並傳送到slave服務器上。


# /usr/local/mysql/bin/mysqldump -u root -p123456 --opt  --flush-logs  --all-database >

/root/allbak.sql

# cd ~

# scp allbak.sql [email protected]:/root


查看mysql偏移量(數據庫如果有寫操作,偏移值會遞增)

# mysql -u root -p123456 -e "show master status"

----------------------

+------------+----------+--------------+------------------+-------------------+

| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------+----------+--------------+------------------+-------------------+

| bin.000009 |     120 |              |                  |                   |

+------------+----------+--------------+------------------+-------------------+

----------------------

保證FILE列和Position列與從庫配置一致:

 

三.從mysql配置(mysql slave)


修改mysql配置文件:

# vi /etc/my.cnf

添加:

--------------------

# Replication Slave Server

# bin日志路徑(無需開bin-log日志)

#log-bin = /usr/local/mysql/log/bin.log

server-id=2

# 只讀:

read-only

# 忽略mysql系統庫復制

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

---------------------


重啟服務

# service mysqld restart


恢復server的數據庫到slave

#/usr/local/mysql/bin/mysql -u root -p123456 < /root/allbak.sql


首頁 1 2 末頁

copyright © 萬盛學電腦網 all rights reserved