工做須要搭建MySQL主從服務器,以達到數據庫備份及應急目的....mysql
聲明:本身接觸Linux方面搭建服務器方面知識比較少,在linux上操做過僅僅是搭建過PHP環境LAMP(編譯安裝),基本都是靠萬能的搜索引擎協助完成,下面是本身搭建過程的記錄:linux
Q:MySQL主從是什麼意思?做用是?原理是?如何實現?【就像是大門保安都會問一句富有哲理的問題:你從哪裏來? 要到哪裏去?】
A:MySQL主從:兩臺主機master和slave,實現同步備份數據庫,讀寫分離等等.....(詳細請戳 http://my.oschina.net/cimu/blog/165019)【先利用搜索引擎把概念和原理搞清楚,讓本身有個大概的認識,而後再去動手實踐】c++
環境準備(Linux都是CentOS release 6.4 Final):
①、mysql-5.5.33.tar.gz(http://mysql.llarian.net/Downloads/MySQL-5.5/mysql-5.5.33.tar.gz)提示:安裝ncurses-devel包
②、cmake (mysql5.5以上版本都須要cmake來配置)提示安裝gcc-c++包
配置MySQL出現錯誤:
mysql啓動失敗 The server quit without updating PID file
******一度重裝cmake和mysql達N次(想重裝系統的心都有了),網上搜索答案許久,一堆解決方法以下:********
① 1.多是/usr/local/mysql/data/rekfan.pid文件沒有寫的權限
解決方法 :給予權限,執行 chown -R mysql:mysql /var/data chmod -R 755 /usr/local/mysql/data而後從新啓動mysqld!
② 可能進程裏已經存在mysql進程
解決方法:用命令ps -ef|grep mysqld查看是否有mysqld進程,若是有使用kill -9 進程號殺死,而後從新啓動mysqld!
③ 多是第二次在機器上安裝mysql,有殘餘數據影響了服務的啓動。
解決方法:去mysql的數據目錄/data看看,若是存在mysql-bin.index,就趕快把它刪除掉吧,它就是罪魁禍首了。本人就是使用第三條方法解決的 !
④ mysql在啓動時沒有指定配置文件時會使用/etc/my.cnf配置文件,請打開這個文件查看在[mysqld]節下有沒有指定數據目錄(datadir)。
解決方法:請在[mysqld]下設置這一行:datadir = /usr/local/mysql/data
⑤ skip-federated字段問題
解決方法:檢查一下/etc/my.cnf文件中有沒有沒被註釋掉的skip-federated字段,若是有就當即註釋掉吧
⑥ 錯誤日誌目錄不存在
解決方法:使用chown chmod命令賦予mysql全部者及權限
⑦ selinux惹的禍,若是是centos系統,默認會開啓selinux
解決方法:關閉它,打開/etc/selinux/config,把SELINUX=enforcing改成SELINUX=disabled後存盤退出重啓機器試試。可是沒有解決,最後直接給/usr/local/mysql/data 目錄 chmod 777 -R /usr/local/myql/data 問題解決應該是權限問題,不能生成localhost.localdomain.pid 文件
配置單向主從服務器:
① 設置配置文件vi /etc/my.cnf
server-id=1 #【必須】服務器ID,通常取IP地址末段(默認開啓爲1)
log-bin=mysql-bin #【必須】啓動二進制文件,主服必須開啓(默認開啓)
binlog_format=mixed #複製類型
主服務器還要添加如下參數:
-------------------------------------------------------------------------
binlog-do-db=bss_box #須要複製的數據庫【按須要填寫】
binlog-ignore-db=XXX #須要忽略的複製數據庫【選填】
-------------------------------------------------------------------------
從服務器選填參數:
-------------------------------------------------------------------------
replicate-do-db=bss_box #須要同步主服的數據庫【選填】
replicate-ignore-db=XXX #須要忽略同步主的數據庫【選填】
-------------------------------------------------------------------------
② 受權從服務器(mysql -uroot -p 在主服上執行)
grant replication slave on *.* to 'backup'@'192.168.5.167' identified by 'backup';
show master status; #記錄master的File和Position
③ 設置從服務器(mysql -uroot -p 在從服務執行)
change master to master_host='192.168.5.19',master_user='backup',master_password='backup',master_log_file='mysql
bin.000001',master_log_pos=107;
start slave; #開啓slave
show slave status\G; #查看salve狀態【Slave_IO_Running: Yes】【Slave_SQL_Running: Yes】都爲Yes表示已經成功sql