mysql主從和半主從mysql
Mysql主從複製(Mysql主從複製就是爲了保障數據的數據安全性和安全性)sql
MYSQL主從同步架構是目前使用最多的數據庫架構之一,尤爲是負載比較大的網站,所以對於主從同步的管理也就顯得很是重要,新手每每在出現主從同步錯誤的時候不知道如何入手,這篇文章就是根據本身的經驗來詳細敘述mysql主從的管理。數據庫
MYSQL主從同步的做用安全
(1) 數據分佈
(2) 負載平衡(load balancing)
(3) 備份
(4) 高可用性(high availability)和容錯服務器
MYSQL主從同步的原理網絡
關於MYSQL的主從同步,最主要的是要了解MYSQL的主從同步是如何工做的也即主從同步的原理,經過下圖能很明白的指導其工做的過程:架構
大體描述一下過程:從服務器的IO線程從主服務器獲取二進制日誌,並在本地保存爲中繼日誌,而後經過SQL線程來在從上執行中繼日誌中的內容,從而使從庫和主庫保持一致。主從同步的詳細過程以下:ide
1.主服務器驗證鏈接。字體
2.主服務器爲從服務器開啓一個線程。網站
3.從服務器將主服務器日誌的偏移位告訴主服務器。
4.主服務器檢查該值是否小於當前二進制日誌偏移位。
5.若是小於,則通知從服務器來取數據。
6.從服務器持續從主服務器取數據,直至取完,這時,從服務器線程進入睡眠,主服務器線程同時進入睡眠。
7.當主服務器有更新時,主服務器線程被激活,並將二進制日誌推送給從服務器,並通知從服務器線程進入工做狀態。
8.從服務器SQL線程執行二進制日誌,隨後進入睡眠狀態。
-------------------------------------------------------------------------------------
一:修改主從數據庫配置文件的id,
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必須]啓用二進制日誌
server-id=1 //[必須]服務器惟一ID,假設是1,
二:主從複製配置
(1):master上進行操做
Mysql增長權限
Grant 權限 on 數據庫.* to 用戶名@登錄主機identity by 密碼
例子:grant replication slave on *.* to repl@'10.168.10.10' identified by 'password';
(2)查詢主數據庫的狀態:show master status;
記下File以及Position的值,在後面進行從服務器操做的時候須要使用。
三:配置從服務器
(1)修改從服務器的配置文件/etc/my.cnf
使得「server-id=2」,並肯定這個id沒有被別的mysql服務所使用。
(2)進入mysql裏面,
停掉:stop slave;
重置:reset slave; (reset 用於之前作過主從)
(3)執行同步的sql語句
change master_to master_host = ‘主機號’,master_user=’用戶名’
master_pasword=‘密碼’,master_log_file=’文件號’,master_log_pos=位置
例子:
change master to master_host='10.168.102.45',master_user='repl',master_password='cc@snda2014',master_log_file='mysqld-bin.000002',master_log_pos=329;
開啓:start slave
就啓動了slave同步功能。
(4)主從同步檢查
執行以下語句
1mysql>show slave status\G
====================================================================================
mysql半主從
mysql半主從就是,master服務器在運行中再添加slave服務器,其實就是多了一個mysql備份,先把master上面的數據備份出來,導入slave mysql中,再作一下主從
數據庫備份mysqldump
mysqldump 導出數據
a. 只導出表結構
mysqldump --opt -d 數據庫名 -u 用戶名 -p 密碼> xx.sql
如: mysqldump --opt -d shop_data -u root -p admin >onlystruct_shop_data.sql
b. 只導出數據
mysqldump -t 數據庫名 -u 用戶名-p 密碼 > xx.sql
如: mysqldump --t shop_data -u root -p admin > onlydata_shop_data.sql
c. 導出全部數據和結構
mysqldump 數據庫 -u 用戶名 -p 密碼 > xx.sql
如: mysqldump shop_data -u root -p admin > shop_data.sql
d. 導出特定表
mysqldump 數庫 -u 用戶名 -p 密碼 -B --table 表名 > xx.sql
如: mysqldump shop_data -u root -p admin -B --table user > user.sql
默認字體格式 --default-character-set=utf8
導入數據sources
source 導入數據
source /home/root/XX.sql 只能用mysql -uroot -padmin 登陸後才能使用
如: source /home/root/test.sql
=====================================================================================
綜上所述,mysql主從其實也就是那簡單的幾步,配置server_id
master機器:
grant replication slave on *.* to repl@'10.168.102.%' identified by 'cc@snda2014';
show master status;
slave機器:
停掉:stop slave;
重置:reset slave
change master to master_host='10.168.102.45',master_user='repl',master_password='cc@snda2014',master_log_file='mysqld-bin.000002',master_log_pos=329;
start slave;
============================================================================
假如作完主從沒有成功,從如下三個緣由分析和查找,必定能成功
1.slave權限問題
2.賬號密碼配置錯誤
3.查看物理網絡是否ok