MySQL內建的複製功能是構建大型,高性能應用程序的基礎。將MySQL的數據分佈到多個系統上去,這種分佈的機制,是經過將mysql的某一臺主機的數據複製到其它主機(slave)上,並從新執行一遍來實現。mysql
複製過程當中一個服務器充當主服務器,而一個或多個其它服務器充當從服務器。主服務器將更新寫入二進制日誌文件,並維護文件的一個索引以跟蹤日誌循壞,這些日誌能夠記錄發送到從服務器的更新。當一個從服務器c++
鏈接主服務器時,它通知主服務器從服務器在日誌中讀取的最後一次成功更新的位置。從服務器接收從那時起發生的任何更新,而後封鎖並等待主服務器通知的更新。git
需注意的是:sql
在進行mysql複製時,全部對複製中的表的更新必須在主服務器上進行。不然必需要當心,以免用戶對主服器上的表進行更新與對從服務器上的表所進行更新之間的衝突。數據庫
源碼安裝AliSQL-AliSQL-5.6.32-9
能夠在個人網盤下載包
連接:https://pan.baidu.com/s/1FDmGV2zVLI9NxfdpjVqK4g
提取碼:tpuy
複製這段內容後打開百度網盤,操做更方便哦:vim
主從間的數據庫不是實時同步,就算網絡鏈接正常,也存在瞬間主從數據不一致的狀況。
若是須要多主庫的話,能夠用環形配置,這樣任意一個節點的修改均可以同步到全部節點因此也須要ntp(時間同步)centos
源碼安裝AliSQL
接下來咱們源碼安裝AliSQL
下載依賴包 解壓服務器
wget http://repo.openfusion.net/centos7-x86_64//perl-Data-Dumper-2.154-1.of.el7.x86_64.rpm rpm -ivh perl-Data-Dumper-2.154-1.of.el7.x86_64.rpm yum -y install cmake bison git ncurses-devel gcc gcc-c++
解壓AliSQL網絡
unzip AliSQL-AliSQL-5.6.32-9.zip
建立一個mysql的組ide
groupadd mysql useradd -g mysql mysql
建立mysql目錄還有data目錄
mkdir -p /data/server/mysql/data cd /usr/local/src/AliSQL-AliSQL-5.6.32-9
編譯指定路徑爲data server 目錄下的mysql
cmake -DCMAKE_INSTALL_PREFIX=/data/server/mysql -DMYSQL_UNIX_ADDR=/data/server/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/data/server/mysql/data -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DENABLE_DOWNLOADS=1 make && make install
注意修改mysql目錄的屬主和屬組
chown -R mysql:mysql /data/server/mysql/data/ chown -R mysql:mysql /data/server/mysql/ cd /data/server/mysql
初始化數據庫
scripts/mysql_install_db --defaults-file=./my.cnf --user=mysql
修改生成的文件屬主和屬組
chown -R mysql:mysql my.cnf
而後開啓mysql服務
cd /data/server/mysql/support-files ./mysql.server start
開啓以後進入交互環境
cd /data/server/mysql/bin ./mysql -u root -p
這裏咱們準備兩臺機器所有安裝AliSQL-AliSQL-5.6.32-9安裝到/data/server下
主庫機器ip:192.168.124.107 從庫機器ip:192.168.124.108
master主庫配置
vim /data/server/
#修改內容
#解釋:server-id服務的惟一標識(主從之間都必須不一樣);log-bin啓動二進制日誌名稱爲mysql-bin
【mysqld】 server-id=1 log-bin=mysql-bin
保存退出
cd /data/server/mysql/support-files ./mysql.server start
一、master主庫添加從庫帳號
進入到bin目錄啓動mysql 進入到交互環境
cd /data/server/mysql/bin ./mysql -u root -p
新建用於主從同步的用戶chaoge,容許登陸的從庫是'192.168.124.108'
create user 'chaoge'@'192.168.124.108' identified by 'redhat';
給從庫帳號受權,說明給chaoge從庫複製的權限,在192.168.124.108機器上覆制
grant replication slave on *.* to 'chaoge'@'192.168.124.108';
檢查主庫建立的複製帳號
select user,host from mysql.user;
檢查受權帳號的權限
show grants for chaoge@'192.168.124.108';
檢查主庫的狀態
show master status;
二、slave從庫配置
vim /data/server/mysql/my.cnf
重啓mysql數據庫
cd /data/server/mysql/support-files ./mysql.server start
進入到mysql bin目錄進入到交互環境
cd /data/server/mysql/bin ./mysql -u root -p
檢查Slava從數據庫的各項參數
配置複製的參數,Slave從庫鏈接Master主庫的配置
mysql > change master to master_host='192.168.124.108', master_user='chaoge', master_password='redhat', master_log_file='mysql-bin.000001', master_log_pos=120;
啓動從庫的同步開關,測試主從複製的狀況
查看複製狀態 看到
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
那麼就成功了